一、if分支结构
-
基本分支结构1:
(1) 语法: if(表达式){ // 语句 } (2) 执行原理:如果if()中表达式的结果为真(非零),则执行{}中的语句 (3) 注意:if后面()表达式可以是关系表达式、逻辑表达式、甚至是数值表达式,结果为非0,即为真
案例: #include <stdio.h> void main(){ // 输入一个整数,存储在n变量中,如果n是大于5的数据,则打印信息 printf("输入一个整数:"); int n ; scanf("%d", &n); if(n>5){ printf("n=%d\n",n); } printf("ending..."); }
-
基本分支结构2:
(1) 语法: if(表达式){ // 语句1 }else{ // 语句2 } (2) 执行原理:如果if()中表达式的结果为真(非零),则执行语句1;否则执行语句2
案例: #include <stdio.h> void main(){ // 输入一个整数,存储在n变量中,如果n是偶数,则打印"我是偶数",否则打印"我是奇数" printf("输入一个整数:"); int n ; scanf("%d", &n); if(n%2==0){ printf("我是偶数\n"); }else{ printf("我是奇数\n"); } printf("ending..."); }
-
多重分支结构:
(1) 语法: if(表达式1){ // 语句1 }else if(表达式2){ // 语句2 }else if(表达式3){ // 语句3 }else{ // 语句4 } (2) 执行原理:从第一个if的表达式开始执行,如果条件一旦成立,则执行对应{}中的语句,如果都不成功,则执行else中的语句。
案例: #include <stdio.h> void main(){ printf("输入一个成绩:"); double score; scanf("%lf", &score); printf("%f",score); if(score>90 && score<=100){ printf("优秀\n"); }else if(score>80 && score<=90){ printf("良好\n"); }else if(score>=60 && score<=80){ printf("及格\n"); }else{ printf("再考一遍\n"); } printf("ending..."); } // 注意:输入double类型的数据使用 "%lf"
-
嵌套的分支结构:
(1) 语法: if(表达式){} if(表达式1){ // 语句1 }else if(表达式2){ // 语句2 }else if(表达式3){ // 语句3 }else{ // 语句4 } }else{ // 语句n } (2) 执行原理:先判断外层条件,再判断内层条件
案例: #include <stdio.h> void main(){ printf("输入一个成绩:"); double score; scanf("%lf", &score); printf("%f",score); if(score>=0 && score<=100){ if(score>90 && score<=100){ printf("优秀\n"); }else if(score>80 && score<=90){ printf("良好\n"); }else if(score>=60 && score<=80){ printf("及格\n"); }else{ printf("再考一遍\n"); } } else{ printf("输入的成绩无效...."); } printf("ending..."); }
二、switch…case等值分支结构
-
语法:
switch(表达式){ case 值1:语句1;break; case 值2:语句2;break; case 值3:语句3;break; ... default:语句n;break; }
-
注意细节:
(1) switch后面()表达式结果类型必须为整数类型(包括字符类型) (2) case后面的值不能重复 (3) break:终止、结束case结构,防止case穿透
-
执行原理:
首先根据switch()中表达式得到一个结果,根据结果,从上往下匹配case后面的值,哪一个匹配成功,则执行对应后面的语句;如果都没有匹配成功,则执行default对应的语句。
-
案例:
#include <stdio.h> void main(){ printf("输入一个整数:"); int n; scanf("%d", &n); switch(n){ case 1:printf("星期一");break; case 2:printf("星期二");break; case 3:printf("星期三");break; case 4:printf("星期四");break; case 5:printf("星期五");break; default:printf("周末啦...");break; } printf("\nending..."); }