分支和循环语句
点击此处可看简单的一些题目[题目演示](https://blog.youkuaiyun.com/wang_yiduo/article/details/87018901)
-
分支语句
-if语句
语法结构: if(表达式) 语句; if(表达式) 语句1; else 语句2; //多分支 if(表达式1) 语句1; else if(表达式2) 语句2; else 语句3;
解释一下:如果表达式的结果为真,则执行语句1,否则执行表达式2.
在C语言中0表示假,非0表示真.代码块格式:
#include<stdio.h> int main() { if(表达式) { 语句列表1; } else { 语句列表2; } return 0; }
这里一对{ }就是一个代码块
代码演示:
#include<stdio.h> int main() { int a=1; int b=2; if(a==1) { if(b==2) printf("hello,world\n"); } else { printf("goodbye,world\n"); } }
这就是一个最基本的if语句,在这段代码中第一个if语句里面有两个语句所以必须用{}将他们括起来,第二个 if语句只里面只有一个语句所以可以不用{}括起来,但是对于初学者来说,在任何情况下都尽量不要省略{},因为有可能在无意之间造成悬空else.
悬空else:
#include<stdio.h> int main() { int a=1; int b=2; if(a==1) if(b==2) printf("hello,world\n"); else { printf("goodbye,world\n"); } }
此时else从属的if语句就发生了逻辑错误,不知道else是和if(a= =1)搭配还是和if(b==2)搭配
-switch语句(不常用)
语法结构: switch(整形表达式) { case 整形常量: 语句; break; case...... break; ......... }
在switch语句中,没有办法直接实现分支所以必须搭配 break来使用.
例如:#include<stdio.h> int main() { int day = 1; 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; }
其中day可以是1~7中的任意一个数字,并且也只能是整型变量,和if语句相比他有很大的局限.
当然也可以简化一下,将相同输出的语句可以写在一起.
如:#include<stdio.h> int main() { int day = 1; switch (day) { case 1: case 2: case 3: case 4: case 5: printf("周五\n"); break; case 6: case 7: printf("周末\n"); break; }
-
循环语句
-while循环语法结构 while(表达式) 循环语句;
代码演示:
//输出1-10的数字 #include<stdio.h> int main() { int i = 0; while (i < 10) { printf("%d ", i); i = i + 1; } return 0; }
while语句中的break和continue
break代码演示#include<stdio.h> int main() { int i = 0; while (i < 10) { if (i == 5) break; printf("%d ", i); i = i + 1; } return 0; }
此时输出的结果为:0 1 2 3 4
总结: break的作用是终止循环,直接从循环中跳出来.continue代码演示:
#include<stdio.h> int main() { int i = 0; while (i < 10) { i=i+1; if (i == 5) continue; printf("%d ", i); } return 0; }
此时输出结果为:1 2 3 4 6 7 8 9
总结:continue的作用是终止本次循环,进入到下次循环,也就是说continue之后的语句不再执行,直接跳转到while语句进行下次判断
break和continue的异同点:
都是终止循环的语句,但是break比较彻底,直接结束循环,而continue相对较温和一点,只是结束本次循环,并没有完全终止整个循环-for循环
语法结构: for(表达式1;表达式2;表达式3) 循环语句;
表达式1指的是初始化部分,用于初始化循环变量
表达式2指的是条件判断部分,用于循环终止
表达式3为调整部分,用于循环条件的调整
代码演示:#include<stdio.h> int main() { int i = 1; for (i = 1; i <= 10; ++i) printf("%d ", i); return 0; }
凡是可以用for循环的程序都可以用while循环来替代
break和continue在for循环中依然适用且效果和在while循环中相同-do while循环(不常用)
语法结构: do 循环语句; while(表达式);
特点:先执行后判定,循环至少需要执行一次,有所限制
代码演示:#include<stdio.h> int main() { int i = 10; do printf("%d ", i); while (i < 10); return 0; }