分支语句和循环语句详解

3 篇文章 0 订阅

 

目录

分支语句

if语句

switch语句

循环语句

for循环

do....while 循环

goto语句


 

分支语句

if语句

if(表达式1)

语句1;

else  if(表达式2)

语句2;

else if(表达式3)

语句3;

#define<stdio.h>

int main ()

{

     int  score=0;

    csanf ("%d",&score);

    if(score>=60)

    printf ("及格");

  else  if(score>60&&score<80)

printf ("优异");

return 0;

}//是判断if括号内的表达式是否成立,如果成立执行语句1,不成立就执行语句2。(0为假,非0为真)

下面的这个代码执行起来结果是什么呢?

#include <stdio.h>
int main()
{
    int a = 0;
    int b = 2;
    if(a == 1)
         if(b == 2)
            printf("hello\n");
    else
        printf("hi\n");
    return 0;
}

d94ba0c7026649f4a9449a0d11322055.png

最后什么都没有打印出来,请看代码,if与else靠的最近的才是一对,这说明

  if(b == 2)
            printf("hello\n");
    else
        printf("hi\n");

这俩是一对的,这一对嵌套在if(a==1)里面,可是a一开始被赋值为0,0≠1,所以为假,下面的代码就不能执行了,所以这两个都没有打印出来。所以这样写很容易混乱。所以应该如下

#include <stdio.h>
int main()
{
    int a = 0;
    int b = 2;
    if(a == 1)
   {
        if(b == 2)
       {
            printf("hello\n");
       }
   }
    else
   {
         printf("hi\n");
   }       
    return 0;
}

ebaf1d6f2d584bd9bc779c07b5b68503.png  

这时候的结果就是hi了。这说明代码要好好的布局,大括号该用的,一定别省。

代码的书写也是很重要的,对比一下下面的代码

int num = 5;
if(num == 5)
{
    printf("hello\n");
}

int num = 5;
if(5 == num)
{
    printf("hello\n");
}

明显的看出来if括号里的顺序不一样

第一种时候执行的结果如下.

eeee7366d724419fa39c718c9554b1f3.png

第二种时候执行的结果如下.

e13295fc9a5347d79bb78d22e8f2ca1a.png

如果if括号里的=少一个,第一种执行结果如下

1d6f0d0c553d41c4848fd4f44a289fbd.png

明显看出来,执行结果和原来的一样,虽然错了,但还是结果一样。这在以后上班时发生,修改程序,得一行一行找。

第二种执行结果如下

44f3e82332514617afd7a0f1ccb09dfb.png

能看到出来,直接报错。

switch语句

形式:

switch (整形表达式)

{

   语句项。//是一些case语句

case  整形表达式;

语句;

}

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;

}

这比用if语句简单些,switch开始,由输入的整形进入检索,case是入口,打印好后,由break出来。当然也不一定没一个后面都要加break。

如:把星期一到星期五为工作日,星期六和星期天为休息日。

#include <stdio.h>

int main()

{

    int day = 0;

    switch(day)

   {

        case1:

        case 2:
        case 3:
        case 4:
        case 5:
            printf("weekday\n");
            break;
        case 6:
        case 7:
            printf("weekend\n");
            break;
   }
    return 0;
}

如果输出的数字不在1-7之间,如果输出一个8,就没结果。我们可以在最后一个break后面输入

default:

printf("输出错误\n");

break;

循环语句

while(表达式)

{

循环语句;

}

如打印1到10

#include<stdio.h>

int main()

{  

int i=1;

while(i<11)

{

printf("%d\n",i);

i++;

}

return 0;

}

break和continue的区别

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

执行结果如下:

163fbf5204984dc1a4b31700228031a0.png

当i为5的时候碰到break就终止代码,不打印出5

所以break的作用:

     执行代码时候遇到break,就停止后期所有的代码,直接终止循环

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

执行结果如下:

46ed981690414f1eab4311a7f75f6b95.png

当i为5的时候,碰到continue,下面的代码不执行,返回while语句,i为5,就会再次碰到continue,再次碰到continue,陷入死循环。

所以continue的作用:

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

for循环

for ( 表达式 1 ; 表达式 2 ; 表达式 3 )
循环语句 ;//表达式1是初始化,表达式2是用来条件判断,表示3是用来调整

 如用for循环打印1到10数字

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

打印结果如下: 

 break和continue在for中的区别和作用

 

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

执行结果如下,可以看出当i为5时候,碰到break,终止代码,不再执行。所以打印的结果为1 2 3 4 

 

 

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

执行结果如下: 

 

当i为5时候碰到continue就会跳过执行调整部分即i++这时候i就为6,接着执行i不等于5打印出6,一直到10

 在for循环中表达式2如果省略,就代表恒为真

那这种情况下会打印出多少个呢?

#include <stdio.h>
int main()
{
	int i = 0;
	int j = 0;

	for (; i < 10; i++)
	{
		for (; j < 10; j++)
		{
			printf("hello\n");
		}
	}
	return 0;
}

 只会打印出10个,刚开始i=0然后进入j的循环中,j从0到9有10个,所以现在打印出10个。i=1时候开始内循环,在这时候j还是为10,不小于10,所以打印不出来。

因此,再写循环时候,能不省的就别省!!!

do....while 循环

do
循环语句 ;
while ( 表达式 ) ;

 这种循环不管怎么样都会执行一次。

在do...while中,break和continue的区别:

#include <stdio.h>
int main()
{
	int i = 0;
	do
	{
		printf("%d\n", i);
		i++;
		if (5 == i)
			break;
		
	} while (i < 10);
		return 0;
}

 

 和for,while循环一样,碰到break就终止代码

#include <stdio.h>
int main()
{
	int i = 0;
	do
	{
		printf("%d\n", i);
		i++;
		if (5 == i)
			continue;
		
	} while (i < 10);
		return 0;
}

 

 当i为5时候碰到continue后,就跳到i<10的地方,会打印出5,接着6, 7, 8,9

goto语句

作用用于跳出两层或多层循环

for (...)
    for (...)
  {
        for (...)
      {
            if ( disaster )
                goto error ;
      }
  }
   
error :
if ( disaster )//可以直接跳到error

 

 

  • 9
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

J 2

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值