超详细的分支语句和循环语句

✨✨小新课堂开课了,欢迎欢迎~✨✨

🎈🎈养成好习惯,先赞后看哦~🎈🎈

所属专栏:http://t.csdnimg.cn/Oytke

小新的主页:编程版小新-CSDN博客

1.分支语句

1.1if语句

1.1.1 if 语句的分类

if语句分为单分支控制,双分支控制,多分支控制的条件语句,让我们来看看他们的不同吧。

单分支控制的条件语句

if(表达式)//表达式不局限与关系表达式,也可以为数值表达式
   语句;

//还有另一种表达形式
if(表达式)
{
   语句1;
   语句2;
}

双分支控制的条件语句

//第一种
if(表达式)
  语句1;
else
  语句2;

//第二种
if(表达式)
{
  语句1;
  语句2;
}
else
{
   语句3;
   语句4;  //为了养成良好的代码风格,if语句有无语句我们都可以加上{},使可读性增加
}

多分支控制的条件语句

if(表达式1)
{
  step m;
}
else if(表达式2)
{
  step n;
}
else
{
  step x;
}
step z;

1.1.2嵌套if

C语言中if语句里面还有if,就称为if嵌套。请看下面的代码

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
  int score = 0;
 sanf("%d",&score);
if(score>90)
{
      printf("优秀\n");
}
else if((score>95)&&(score<=100))
 { 
      printf("超级优秀\n");
 }
else
printf("继续加油哦\n");
return 0;
}

1.1.3 悬空else

其实上面的嵌套if中列举的代码中也涉及悬空else的问题,这里我就不重新举例了。

我们只需要记住else与离得最近的未配对的if匹配,为了避免误会我们在使用条件语句是要用代码块{}

1.2switch语句

1.2.1 if语句与switch语句的对比

练习:输入任意一个整数值,计算除于3之后的余数

如果用if语句来完成,如下:

#define _CRT_SECURE_N0_WARNINGS
#include<stdio.h>

int main()
{
  int i = 0;
scanf("%d",&i);
if(i%3==0)
{
  printf("余数为0\n");
}
else if(i%3==1)
{
  printf("余数为1\n");
}
else
printf("余数为2\n");
return 0;
}

  运行结果

如果换成switch语句来完成,请看下面的代码

#define _CRT_SECURE_N0_WARNINGS
#include<stdio.h>

int main()
{
  int i = 0;
scanf("%d",&i);
switch(i%3)
{
  case 0:
printf("余数为0\n");
  break;//用break来实现真正意义上的分支
  case 1:
printf("余数为1\n");
  break;
  case 2:
printf("余数为2\n");
  break;
default:
printf("输入错误\n");
  break;

}
   return 0;
}h

运行结果

注意:1case后面必须有一个空格 2case后面的值必须是整型表达式 3不要忘记加:4break后面也有;5switch后面的表达式必须是整型常量表达式 6注意default的使用形式

接下来就让我们更加细致的来了解一下switch语句吧

1.2.2 switch语句中的break

我将用上面的switch语句的代码来解释break的作用,运行代码后,我们输入4,结果会打印余数是1;如果我们把说明代码中所有的break都去掉后,打印结果是余数是为1(换行)余数为2(换行)输入错误(换行)。

接下来我们对break的作用进行总结:break的作用是永久的终止循环,不管循环还要执行多少次,只要执行到了到break,循环就会停止。我们可以理解成坐电梯,只要我们没有按下楼层键,电梯就会一直带着你运动,break就相当于那个按键。用上面的例子来解释就是4%3的结果是1;所以从case 1的路径下走,由于没有break,程序就会一直执行,紧接着输出余数是2,输入错误,直到程序结束。

1.2.3 switch语句中的default

在使用switch语句的时候,我们经常可能会遇到一种情况,比如switch后面的表达式中的值无法匹配代码中的case 语句的时候,这时候要不就不处理,要不就要在switch语句中加入default子句。

补充:在switch语句中case语句和default语句没有顺序要求,只要你的顺序满足实际需求即可。

2.循环语句

2.1while循环

2.1.1while语句的用法及其与if的对比

if(表达式)
{
  语句;
}

while(表达式)         //他们的表达形式相同,唯一的不同就是if语句只能执行一次,而while语句可以实现多次输入
{
语句
}

2.1.2 while语句的实践

练习:在屏幕上打印1-10的数字

#include<stdio.h>

int main()
{
  int i = 1;//表达式1 循环初始条件
while(i<=10)//表达式2 循环控制条件
{
  printf("%d",i);
  i++;//表达式3 循环转换条件
}
return 0;
}
//最终的结果就是打印的1-10的数字

2.1.3 while语句中的continuek和break

1 continue的举例

#include<stdio.h>

int main()
{
 int i = 1;
while(i<=10)
{
 if(i==5)
 continue;//当i==5时,就会执行continue,直接跳过continue后面的代码,去循环的判断的地方
          //以为这里跳过了i++,所以i一直是5,结果就会陷入死循环
 printf("%d",i);
  i++;
}
return 0;
}

continue的作用:跳过continue后面的本次循环,跳到while语句中的判断部分,进行下一次循环的入口判断

2 break的举例

#include<stdio.h>

int main()
{
 int i = 1;
while(i<=10)
{
 if(i==5)
 break;//当i==5时,就会执行break,直接终止后期所有的循环
       //由于当i==5使直接终止循环,最终只能打印1-4的数字
 printf("%d",i);
  i++;
}
return 0;
}

break的作用:在循环中只要遇到break,就会停止后期所有的循环,直接终止循环,所有while语句中的break是用于永久终止循环的

2.2 for循环

2.2.1for语句的用法

for(表达式1;表达式2;表达式3)//表达式1 循环初始条件;表达式2 循环控制条件;表达式3 循环转换条件
{
  语句//如果循环体想要包含跟多的语句,可以加上大括号
}

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

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

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

2.2.2 for语句的实践

练习:打印1-10的是数字

#include<stdio.h>

int main()
{
  int i = i;
for(i=1;i<=10;i++)//与上文while语句作比较,for语句中三个比较特殊的表达式都在for语句的()内部
{
   pfintf("%d",i);
}

return 0;
}

2.2.3for语句中的continue和break

1 break举例

#include<stdio.h>

int main()
{
   int i = 1;
for(i=1;i<=10;i++)
{
   if(i==5)
   break;
printf("%d",i);
}
return 0;//输出的结果是1-4
}

for语句和while语句中break的作用是相同的,请参考上面提到的break的作用,简单来说就是终止循环

2 continue的举例

#include<stdio.h>

int main()
{
   int i = 1;
for(i=1;i<=10;i++)
{
   if(i==5)
   continue;
printf("%d",i);
}
return 0;//输出的结果是1 2 3 4 6 7 8 9 10
}

#include<stdio.h>

int main()
{
 int i = 1;
while(i<=10)
{
 if(i==5)
 continue;//当i==5时,就会执行continue,直接跳过continue后面的代码,去循环的判断的地方
          //以为这里跳过了i++,所以i一直是5,结果就会陷入死循环一直打印5
 printf("%d",i);
  i++;
}
return 0;
}

注意对比continue在for语句和while语句的不同,为什么会出现这来你的不同?接下来我们揭晓谜题

注意i在for语句和while语句中的位置,首先回忆一下continue的作用,跳过continue后面的本次循环,跳转到while语句中的判断部分,进行下一次循环的入口判断。先看while语句,当i5时,执行continue,跳过后面的部分,i没有发挥作用,i一直等于5,一直满足条件进入循环,也就一直跳不出循环。再看for语句,当i5时,执行continue,跳过后面的部分,因此5不会被打印,回到for循环语句内,i++可以发挥作用,最终导致两者结果的不同

2.3 do-while循环

2.3.1 do-while语句的用法

do
{
  语句;
}while(表达式)

do-while的特点就是先执行后判断,所以在do-while语句中循环体至少被执行一次

2.3.2 do-while语句的是实践

练习:打印1-10的数字

#include<stdio.h>

int main()
{
 int i = 1;
do
{
printf("%d",i);
i++;
}while(i<=10);
return 0;
}

2.3.3 do-while语句中的continue和break

do-while 语句中的continue和break的作用与while语句中的中的continue和break的作用几乎一模一样,我相信大家掌握了上面的知识这个也一定不在话。

3.goto语句

C语言提供了一种非常特别的语法,就是goto语句和跳转符号,goto语句可以实现在同一个函数内跳转到设置好的符号处。

goto语句被分在转向语句中也是可以理解的啦。yiw

#include<stdio.h>

int main()
{
  printf("hehe\n");
goto next;
  printf("haha\n");


next:
    printtf("跳过haha的打印\n");
   return 0;
}

goto语句使用不当就会导致在函数内随意跳转,打乱程序的执行流程,所以我们建议尽量不使用goto语句;但是goto语句的方便性也是毋庸置疑的。

这里有个小小的补充,goto语句本身不是循环语句,但当goto语句跳转的标记处位于goto语句之前时,使得会再次执行到该goto语句,那么就形成了代码的循环执行。(这里如果不能理解的话也没有关系,随着后面深入的学习我们会有一个更加清晰的认识)

总结:上面举的例子都是非常有代表性的,能够方便我们的理解。知识的学习就是由浅入深的过程。还有这是第一次写技术博客,里面有什么错误希望大家指出,多多谅解。这也让我体会到了万事开头难这句话的真理。因为草稿是在有道云笔记上写的,这里的代码风格不是很好,我下次会注意的。

  • 15
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值