分支和循环语句

语句:由一个分号隔开的一行或多行代码称为一个语句

C语言是结构化的程序设计语言,存在三种结构。分别是顺序结构、选择结构和循环结构,顺序结构是按照代码顺序执行语句,因此不再赘述,下面主要介绍选择结构和循环结构。

选择结构

具有选择结构的语句叫做选择语句,又叫分支语句

if else

可以实现多种分支

单分支if
双分支if - else
三分支if - else if - (else)
多分支if - else if - else if - else if - … - (else)

如果if 或者 else语句需要控制多条语句,需要使用代码块{ }
如下代码的执行结果是什么呢?

 int a=0;
 int b=0;
 if(a==1)
        if(b==2)    
        printf("hehe\n");             
 //if和最近的else匹配
 else
        printf("haha\n");
 //a!=1,所以不进循环,直接return 0;
 return 0;

如上代码告诉我们,一定要注意代码书写规范
if else并不是书面上对齐即匹配,而是采用就近原则匹配

switch

在switch语句中,case后面必须是整型常量表达式。
代码1:输入数字1~7对应输出星期一到七

switch(day)
{
case 1:
       printf("星期1\n");
       break;
case 2:
       printf("星期2\n");
       break;
case 3:
       printf("星期3\n");
       break;
case 4:
       printf("星期4\n");
       break;
case 5:
       printf("星期5\n");
       break;
case 6:
       printf("星期6\n");
       break;
case 7:
       printf("星期7\n");
       break;
default:
       printf("输入错误\n");
       break;
}

在switch语句中,case是入口,break是出口,因此case后面要有break,default后面也要有break,但并不是说每个case后面都必须要加break,要根据情况而定。
代码2:输入1-5打印工作日,输入6-7打印休息日

switch(day)
{
case 1:
case 2:
case 3:
case 4:
case 5:
       printf("工作日\n");
       break;
case 6:
case 7:
       printf("休息日\n");
       break;
default:
       printf("输入错误\n");
       break;
}

循环结构

具有循环结构的语句叫做循环语句。

while循环
int i=0;            //初始化
while(i<10)        //判断
    {
         i++;        //调整
    }

continue和break的区别

continue跳出循环

continue是用于终止本次循环的,也就是本次循环中continue后边的代码不会再执行,而是直接跳转到while语句的判断部分,进行下一次循环的入口判断。

break终止循环

for循环
for(表达式1;表达式2;表达式3)
     循环语句;

表达式1:初始化部分,初始化循环变量
表达式2:条件判断部分,判断循环什么时间终止
表达式3:调整部分,用于循环条件的调整

对for语句的循环控制变量的一些建议
1、不可在for循环体内修改循环变量,防止for循环失去控制,例如:

int i=0;
     for(i=0;i<10;i++)
     {
              //给 i 赋值5,会导致程序陷入死循环
              if(i=5)               
                      printf("haha\n");
              printf("hehe\n");
      }

2、建议for语句的循环控制变量的取值采用“前闭后开区间”写法

for (i = 0; i<10; i++)          //  前闭后开
for (i = 0; i <= 9; i++)       //  前闭后闭

上述两种方法都没什么问题,比较好的是采用前者

注意:for循环的初始化、调整、判断都可以省略,但是如果for循环的判断部分被省略,那判断条件就恒为真,陷入死循环;如果不是非常熟练,建议不要随便省略

int main()
{
	for (;;)
	{
		printf("hehe\n");
	}
	return 0;
}

代码1:如下代码会打印出几个hehe

int main()
{
          int i=0;
          int j=0;
          for(;i<10;i++)
          {
                  for(;j<10;j++)
                   {
                        printf("hehe\n");
                   }
          }
}

答案:打印出10个hehe
解析:因为当i=0时,进入内循环,j从0循环到9,总共10次,打印10个hehe
当j=10时,退出内层循环;
进入i=1的外循环,但此时j=10,判断条件为假,不会进入内循环,直至循环结束。

代码2:如下代码循环几次

 int x = 0;
       int y = 0;
       for (x = 0, y = 0; x<3 && y<6; x++, y++)
	   printf("hehe\n");

答案:循环3次,因为是逻辑与,满足x=3即退出for循环

代码3:如下代码循环几次

int x = 0;
int y = 0;
for (x = 0, y = 0; x<3 || y<6; x++, y++)
   printf("hehe\n");

答案:循环6次,因为是逻辑或,同时满足x=3,y=6退出for循环

代码4:如下代码循环几次

int i = 0;
int k = 0;
for (i = 0, k = 0; k = 0; i++, k++)
	printf("hehe\n");

答案:循环0次,k=0 是赋值,不是判断相等
如果判断条件永远恒为真,就会陷入死循环 。

代码4变形:如果是k==0,则循环1次

int i = 0;
int k = 0;
for (i = 0, k = 0; k == 0; i++, k++)
	printf("hehe\n");
do while循环
do
      循环语句;
while(表达式);
int i = 0;
	do
	{
		printf("%d ", i);
		i++;
	} 
	while (i < 10);
goto语句

可以随意跳转

int main()
{
 again:
    printf("hello world!\n");
    goto again;
    return 0;
}
for()
      for()
     {
        for()
            {
                   if (disaster)
                   goto error;
            }
      }
error:
                  if (disaster)

上述情况如果没用goto语句,需要三次break才能跳出三个for循环。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值