C语言分支与循环

目录

分支语句(选择结构):

-if语句

-switch语句

循环语句:

-while语句

-for语句

-do while语句

  C语言是结构化的程序设计语言,这里的结构是指顺序结构,选择结构,循环结构。

1.if语句

1.1 if

if语句的表达式为

if(表达式)
{
   语句;
}

  在C语言中,0表示假,非0表示真,表达式为0,语句不执行,表达式为非0,则语句执行。

例子

   当表达式为真时,输出打印“我爱C语言”。

#include <stdio.h>
int main()
{
	if (1)
	{
		printf("我爱C语言\n");
	}
	return 0;
}

  当表达式为假时 ,显然是没输出任何东西的。

#include <stdio.h>
int main()
{
	if (0)
	{
		printf("我爱C语言\n");
	}
	return 0;
}

1.2 else

  如果一个数不是奇数,那么就是偶数,那我们该如何清楚地判断一个整数是奇数还是偶数呢,就得运用双分支结构 if...else语句了,该语句表达式为:

if(表达式)
{
  语句块1;
}
else(表达式)
{
  语句块2;
}

例子:输入一个年龄,大于等于18输出成年,否则输出未成年。

#include <stdio.h>
int main()
{
	int age = 0;
	scanf("%d", &age);
	if (age >= 18)
	{
		printf("成年了\n");
	}
	else
	{
		printf("未成年\n");
	}
	return 0;
}

1.3 嵌套if 

  另外,在if语句中,else还可以和另外一个if连用,构成多重语句,该语句表达式为:

if(表达式1)
{
  语句块1;
}
else if(表达式2)
{
  语句块2;
}
else if(表达式3)
{
  语句块3;
}
......
else if(表达式n)
{
  语句块n;
}
else
{
  语句块m;
}

例子:输入一个正数,再判断是奇数还是偶数,如果不是正数则输出负数。

#include <stdio.h>
int main()
{
	int number = 0;
	scanf("%d", &number);
	if (number > 0)
	{
		if (number % 2 == 0)
		{
			printf("是偶数\n");
		}
		else
		{
			printf("是奇数\n");
		}
	}
	else
	{
		printf("是负数\n");
	}
	return 0;
}

 

  

 

2.switch语句 

    switch语句是C语言另外提供的一种选择结构语句,也是可以实现分支结构的。其语法格式为:

switch(表达式)

{

case 常量表达式1: 语句块1

case 常量表达式2: 语句块2

default: 语句块

}

  执行流程是:根据表达式中不同的值执行相应的case语句,如果表达式中的值与后面所有case常量表达式均不匹配则执行default后面的语句。

  注:一般情况下需要使用break语句跳出switch语句,如果一个case语句后没有break语句,代码会一直执行下去,这样就有可能会执行其他case语句中的代码了,因此break在switch语句中起着关键作用,有了break才真正实现了分支效果。

例子:输入1~7七个数字,打印输出对应的星期几。

#include <stdio.h>
int main()
{
	int day = 0;
	scanf("%d", &day);
	switch (day)
	{
	case 1:
		printf("星期一\n");
		break;
	case 2:
		printf("星期二\n");
		break;
	case 3:
		printf("星期三\n");
		break;
	case 4:
		printf("星期四\n");
		break;
	case 5:
		printf("星期五\n");
		break;
	case 6:
		printf("星期六\n");
		break;
	case 7:
		printf("星期日\n");
		break;
	}
	return 0;
}

拓展:当输入1-5时,输出是“工作日”;当输如6、7 时,输出是“休息日”。

思路:只需将上面代码稍修改正即可实现,即在情况5和7的后面加上输出并使用break停止,其余情况不做要求。代码如下:

#include <stdio.h>
int main()
{
	int day = 0;
	scanf("%d", &day);
	switch (day)
	{
	case 1:
	case 2:
	case 3:
	case 4:
	case 5:
		printf("工作日\n");
		break;
	case 6:
	case 7:
		printf("休息日\n");
		break;
	}
	return 0;
}

3.while语句 

语法格式:

while(条件表达式)

{

  循环体/语句块

}

执行流程是:首先上来是执行判断表达式,如果表达式为真则进入循环体,如果为假则退出循环体。

例子:在屏幕上输出打印1~20的值。

#include <stdio.h>
int main()
{
	int i = 1;
	while (i <= 20)
	{
		printf("%d ", i);
		i++;
	}
	return 0;
}

4.for语句 

语法格式是:

for(表达式1;表达式2;表达式3)

{

  循环体;

}

表达式1:用于循环变量的初始化

表达式2:用于循环结束条件的判断

表达式3:用于循环变量的调整

  执行流程是:先执行表达式1,初始化变量;再执行表达式2的判断部分,如果为真则执行循环体,否则循环结束;循环语句执行完后再执行表达式3,调整循环变量,然后再去执行表达式2的判断部分,表达式2结果真假如何,决定循环是否继续。

例子:在屏幕上打印1~20的值。

#include <stdio.h>
int main()
{
	int i = 0;
	for (i = 1; i <= 20; i++)
	{
		printf("%d ", i);
	}
	return 0;

 5.do while语句

在循环语句中使用频率最少,其语法格式为:

do

{

  语句;

}while(表达式);

  执行流程是:先执行do后面的语句,然后判断while后面的表达式是否成立,如果成立,则继续执行do后面的语句,执行完后接着执行while后面的表达式,如果不成立则循环结束。

例子:在屏幕上打印1~20的值。

#include <stdio.h>
int main()
{
	int i = 1;
	do
	{
		printf("%d ", i);
		i++;
	} while (i <= 20);
	return 0;
}

while和do while的区别:

  1.while是先判断条件是否成立,再选择是否进入循环体,do while是一开始直接进入循环体然后再判断条件是否成立,再决定是否进入循环体。

  2.while语句没有逗号,do while语句中的while后面有逗号。

  3.while写在大括号之前,do while中的while写在大括号之后。

循环嵌套

  我们学习了while,for,do while三种循环,往往我们需要将这三中循环一起使用才能更好地解决一些问题。

例子:找出100~200之间的素数,并在屏幕上打印出来。

分析:

1.从100~200之间找出素数,首先得有100~200的数,这个用for循环实现。

2.假设要判断i是否为素数,则需要拿2~i-1之间的数字去试除i,需要产生2~i-1个数字,这个也可以用for循环来实现。

3.如果2~i-1中有数字能将i整除,则i不是素数,反之是素数。

代码如下:

#include <stdio.h>
int main()
{
	int i = 0;//i是100~200之间的数
	for (i = 100; i < 200; i++)//产生100~200的数
	{
		int flag = 1;//假设i1是素数
		int j = 0;//j是2~i-1之间的数
		for (j = 2; j < i - 1; j++)//产生2~i-1的数
		{
			if (i % j == 0)
			{
				flag = 0;//不是素数
				break;
			}
		}
		if (flag == 1)
		{
			printf("%d ", i);
		}
	}
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值