判断与循环_C语言快速入门与计算机二级备考
判断
if-else语句
-
判断所用的函数是
if
,相当于人类的“如果”当条件不成立时要求做某事,就要用
else
,相当于人类的“否则”if( a>b ){ printf("%d",a); } else { printf("%d",b); } //括号内是判断的条件 //if后的大括号内是条件成立后执行的操作,if后没有分号,因为这一句到下面的操作才结束 //如果条件不成立,将跳过这些操作,(当有else时)执行else大括号内操作 //这串代码的意思是:如果a>b,就输出a的值,否则输出b的值 if( a>0 ) printf("a是一个非负数"); //也可以不用大括号,直接使得跟着的语句成为判断成立后的操作 //注意,这时的分号位置与缩进
嵌套的if-else
-
if-else
语句判断后所执行的语句可以是另一个if-else
语句 -
就近:在没有大括号影响的情况下,
else
总是与最近的if
匹配,缩进不影响else
的匹配if(code==ready){ if(count<20) printf("一切正常"); } else printf("继续等待"); //当count>20时,并不会输出“继续等待” //因为大括号使得继续等待的else语句与最上面的if匹配
-
为了避免错误与方便阅读,建议每个
if
与else
都用大括号
级联的if-else
-
当嵌套的
else
语句中与if
相连,可以使用级连的形式int a if (x<0){ a=-1; } else if (x==0)//else语句后嵌套了一个if时,这样写更简洁 a=0; } else { a=2*x; }
switch-case多路分支
-
switch-case
语句可以做到直接跳到想要的选项,而不必一个一个检索判断switch-case
是一种基于计算的跳转,计算控制表达式的值后程序会跳转到对应的case
(分支路标)在执行完分支中的最后一条语句后,如果没有break就会按顺序执行到下面的case
int type; const NIGHT=2; scanf("%d",type); switch (type) //这里的控制量表达式必须是整数, //可以是常数,常数计算的表达式,定义为整数的常量,单字符 { case 1: printf("早上好"); break; case NIGHT: printf("晚上好"); break; default: printf("不清楚您输入的指令"); break; } //这串代码在输入1时会输出早上好,输入2时输出晚上好,输入其它时输出不清楚您输入的指令
循环
while循环
-
循环所用的语句是
while
,使在符合条件时循环执行循环体内语句(相当于接入循环体的if
)int x; int n = 0; scanf("%d", &x); n++; x /= 10;//此处可用do-while while (x > 0)//这行代码的意思是:当x>0时执行大括号内语句直到不再符合x>0 { n++; x /= 10; }//符合条件后进入的语句叫做循环体 printf("%d\n", n);
-
循环体内要有改变条件的机会,否则将永远循环
do-while循环
-
有时在进入循环前我们需要先执行一边循环体内语句,这时就需要
do-while
do { n++; x /= 10; }while(x >0); //这时,程序会先执行,在执行完一次后再进行判断
for循环
-
for
循环类似于设定一个计数器:-
先初始化,在计数器到达某值之前重复执行循环体
-
每执行一轮循环,计数器值以一定步进进行调整,比如加1或者减1
-
-
for的格式为:for(<初始化>;<进入循环的条件>;<循环一轮后的调整>)
for (int i=0;i<5;i++)//控制变量在循环外无意义,可以在for内定义(仅C99) { printf("%d",i); } //这个for循环的意思是:i最初是0,每当i小于5时,执行一遍循环体并且让i加1 //for与while等价,上面的代码也可以写为: int i=0; while(i<5) { printf("%d",i); i++; } //for循环中的每一个表达式都可以省略,但分号要留下 for(;i<5;) == while(i<5)
循环的选择
for
:有固定的循环次数do-while
:循环必须执行一次while
:其它情况- 除了
do-while
循环,切记不要在表示条件的括号外加分号(if-else
同理)
嵌套的循环
- 循环内也可有循环,不论循环的种类
- 注意嵌套的循环的控制变量应该是不同的
循环的控制
停止循环
-
break
语句(此前在switch-case
中出现,用以停止顺序执行)可用于跳过循环for (i=2;i<x;i++) { if (x%i==0) break; }//这行代码的意思是用一个从2开始递增的数i去除x,直到x能被i整除时不再循环
-
continue
语句 可用于跳过本轮循环剩下的语句进入下一轮for (i=2;i<x;i++) { if (x%i==0) continue; printf("%d",i); }//这行代码与上面的不同是,当x能被i整除时,就不会输出当前的i值
嵌套循环的控制
-
break
与continue
只对它所在的循环起效使用接力break能够解决嵌套循环的控制问题
int exit = 0; for(……) { for(……) { if(……) exit = 1; break; } if(exit) break;//相当于exit==1 }//原理是:当符合if的条件时,使得exit=1,从而使得外一层的循环符合条件可以break
-
goto
语句也可以解决这一问题int exit = 0; for(……) { for(……) { if(……) exit = 1; goto out;//当条件满足,将会跳到out处 } } out://不要忘带冒号
本文来自博客园,作者:无术师,转载请注明原文链接:https://www.cnblogs.com/untit1ed/p/18547813
本文使用知识共享4.0协议许可 CC BY-NC-SA 4.0
请注意: 特别说明版权归属的文章以及不归属于本人的转载内容(如引用的文章与图片)除外
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 【.NET】调用本地 Deepseek 模型
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库