【C语言】流程结构

本文详细介绍了C语言中的选择结构(if、else和嵌套if),条件语句(包括switch和嵌套条件),以及循环结构(for、while和do...while),强调了break和continue的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

选择结构

条件语句嵌套

循环结构

break和continue


流程结构思维导图:

选择结构

若语句为真则执行,否则不执行;C语言中0为假,非0为真

第一种方式,若a等于0则执行语句,否则跳过语句执行

  1. int a = 0;
  2. //第一种
  3. if (a==0)
  4. {
  5. ……
  6. }

 第二种方式,若a不等于1,为假,则执行else中的语句

  1. int a = 0;
  2. //第二种
  3. if (a == 1)
  4. {
  5. ……
  6. }
  7. else
  8. {
  9. ……
  10. }

  第三种方式,若a不等于1,则判断a是否等于2,依次判断条件……,若都为假,则执行else中的语句

  1. //第三种
  2. if (a == 1)
  3. {
  4. ……
  5. }
  6. else if (a == 2)
  7. {
  8. ……
  9. }
  10. …………
  11. else
  12. {
  13. ……
  14. }

条件语句嵌套

嵌套即条件语句中包含了更加细分的条件,为了方便理解,这里直接展示代码

  1. int main()
  2. {
  3. int age = 0;
  4. scanf("%d", &age);
  5. if (age < 18)
  6. {
  7. printf("青少年\n");
  8. }
  9. else
  10. {
  11. if (age <= 44)
  12. {
  13. printf("少年\n");
  14. }
  15. else
  16. {
  17. if (age <= 59)
  18. {
  19. printf("中老年\n");
  20. }
  21. else
  22. {
  23. if (age <= 90)
  24. {
  25. printf("老年\n");
  26. }
  27. else
  28. {
  29. printf("老寿星\n");
  30. }
  31. }
  32. }
  33. }
  34. return 0;
  35. }

这个结构中,else都各自对应哪个if条件,一目了然

在条件语句中,若只包含一个执行语句,我们可以不用加“{}”,但是这样容易造成混淆,不建议这样做

  1. int main()
  2. {
  3. int a = 0;
  4. if (a == 1)
  5. printf("hello\n");
  6. else
  7. printf("hehe\n");
  8. return 0;
  9. }

那么问题来了,如果碰到上面那总嵌套的情况,没有大括号,我们该如何区分else对应的是那个if,还是看对齐吗? 

且看代码:

这里是打印hehe还是haha?

  1. int main()
  2. {
  3. int a = 10;
  4. int b = 20;
  5. if (a == 5)
  6. if (b == 20)
  7. printf("hehe\n");
  8. else
  9. printf("haha");
  10. return 0;
  11. }

答案是都不打印,else总是和最接近的if匹配

程序判断a不等于5时,直接跳过了,并没有进入else,因为else和里面的if匹配

这是条件语句中值得注意的点

switch语句

最后这里还有一个switch语句

主要规则如下:

1.若执行语句相同可以采用如下做法

2.每个case执行完语句后要加break

3.若没有匹配case语句的值,则执行default中的语句,default放哪里都可以,但建议放  最后

  1. int main()
  2. {
  3. int a = 0;
  4. scanf("%d", &a);
  5. switch (a)
  6. {
  7. case 1:
  8. case 2:
  9. printf("hehe\n");
  10. break;
  11. case 3:
  12. case 4:
  13. case 5:
  14. case 6:
  15. printf("haha\n");
  16. break;
  17. default:
  18. printf("错误的数字\n");
  19. break;
  20. }
  21. return 0;
  22. }

 如果不加break会出现什么问题:

  1. int main()
  2. {
  3. int a = 0;
  4. scanf("%d", &a);
  5. switch (a % 3)//可以放类似此的表达式
  6. {
  7. case 1:
  8. printf("hello\n");
  9. case 2:
  10. printf("hehe\n");
  11. break;
  12. case 3:
  13. case 4:
  14. case 5:
  15. case 6:
  16. printf("haha\n");
  17. break;
  18. default:
  19. printf("错误的数字\n");
  20. break;
  21. }
  22. return 0;
  23. }

 输入1后得到结果

 可见case 2中的语句也被打印,如果case 2中无break,会一直不停地往下执行,则达不到条件的效果


循环结构

循环三种形式:for、while、do……while

具体格式我们看代码:

  1. int main()
  2. {
  3. //for
  4. int i = 0, j = 0, k = 0;
  5. for (i = 0; i < 5; i++)
  6. {
  7. printf("haha\n");
  8. }
  9. printf("i的值:%d\n", i);
  10. printf("*******************\n");
  11. //while
  12. while (j < 5)
  13. {
  14. printf("hehe\n");
  15. j++;
  16. }
  17. printf("j的值:%d\n", j);
  18. printf("*******************\n");
  19. //do……while
  20. do
  21. {
  22. printf("hello\n");
  23. k++;
  24. } while (k < 5);
  25. printf("k的值:%d\n", k);
  26. return 0;
  27. }

 从这段代码我们可以明白每个语句的大致用法

这里给出三段大致一样的形式,帮大家梳理三种语句的区别,for和while我们经常看见,我们都知道do……while循环是先执行再进行判断,所以有时候也会让我们混淆它最后是否比前两个循环多打印了,或者条件多判断了一次等。for、while循环中均打印五次,do……while打印几次,条件判断了几次,k的值最后是否和i、j一样?

由打印结果我们可以知道,do……while仅仅只是先执行再判断,不管是判断条件变量还是执行次数都是和for、while循环一样的,这是容易造成误区的点


break和continue

这里最值得注意的是:break和continue都是跳出当前循环,而不是所有循环

break:直接跳出循环,并且循环以后的都不再执行

continue:跳出本次循环,循环以后的继续执行

break循环嵌套举例:

  1. int main()
  2. {
  3. int i = 0;
  4. int j = 0;
  5. for (i = 0; i < 5; i++)
  6. {
  7. for (j = 0; j < 5; j++)
  8. {
  9. //跳出当前循环
  10. if (j == 1)
  11. {
  12. break;
  13. }
  14. printf("hehe\n");
  15. }
  16. }
  17. return 0;
  18. }

如果没有break,循环将会打印25个hehe,如果break跳出所有循环,这里只会打印一个hehe,如果break只是跳出当前循环则打印五个hehe(仅仅是小循环后面不再执行,大循环继续)


 continue循环嵌套举例:

  1. int main()
  2. {
  3. int i = 0;
  4. int j = 0;
  5. int count = 0;
  6. for (i = 0; i < 5; i++)
  7. {
  8. for (j = 0; j < 5; j++)
  9. {
  10. if (j == 1)
  11. {
  12. //仅停止这一次
  13. continue;
  14. }
  15. printf("hehe\n");
  16. count++;
  17. }
  18. }
  19. printf("一共有%d个hehe\n",count);
  20. return 0;

同理,continue作用下,这里应该会打印20个hehe

到这里流程结构的主要问题就没啦,感谢阅读!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值

举报

选择你想要举报的内容(必选)
  • 内容涉黄
  • 政治相关
  • 内容抄袭
  • 涉嫌广告
  • 内容侵权
  • 侮辱谩骂
  • 样式问题
  • 其他
点击体验
DeepSeekR1满血版
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回顶部