07-C语言流程控制if、switch
目录:
一、流程控制 条件分支
1.语法格式:if(表达式1){
//表达式1为真(非0时),执行的语句部分。
//代码块由一条件或多条语句组成
}else if(){
//表达式1为0为假,执行的语句部分。
}else{
//以上条件补满足是,执行的语句部分。
}
2.在一个完整的if语句中至少要有一个if,elseif可以出现0~n次,else可以出现0~1次。
3.if else语句应用与需要根据不同条件执行代码的场合。
4.if else 语句最多只能执行一个分支,有else分支,必须选择其一执行,无else分支,可以选择其一执行,也可能不执行。
5.如果{}中仅有一条语句,可以省略{},不推荐。
练习:输入一个成绩,得到评价,>90,优;<60,不及格;其他,一般。
1)在键盘上输入一个字母,将小写转换为大写,如果是大写就原样输出。
#include <stdio.h> //在键盘上输入一个字母,将小写转换为大写,如果是大写就原样输出。 int main() { char ch; printf("请输入一个字母:\n"); scanf("%c",&ch); if (ch >= 'a' && ch <= 'z') { printf("转换为大写:%c\n",ch -('a'-'A')); }else{ printf("大写:%c\n",ch); } return 0; }
2)输入一个成绩,0~100之间的整数,根据分数得到相应的级别,100~90优90~80良80~60中60~0不及格
3)准备回家,交通工具,输入工资,小于1300,则显示输入错误,大于10000坐飞机,大于5000坐火车,大于3000坐汽车,大于1500骑自行车,都不满足步行。
4)优化第二题,优A良B中C不及格D,根据分数级别,判断分数范围。
5)判断闰年,平年2月份29天,闰年2月份29天,条件:a,年份可以同时整除4且不能整除100;b,整除400,满足其一就是闰年。输入一个年份判断是否是闰年。
6)输入年、月,求某月有多少天,一共有28,29,30,31几种。
7)输入年,求该年的总天数,365、366
1 #include <stdio.h> 2 //输入一个成绩,0~100之间的整数,根据分数得到相应的级别,100~90优90~80良80~60中60~0不及格 3 void test() 4 { 5 int i; 6 printf("输入一个成绩:\n"); 7 scanf("%d",&i); 8 if (i >= 90 && i <= 100) { 9 printf("优\n"); 10 }else if(i >= 80 && i < 90){ 11 printf("良\n"); 12 }else if(i >= 60 && i < 80){ 13 printf("中\n"); 14 }else if(i >= 0 && i < 60){ 15 printf("不及格\n"); 16 }else{ 17 printf("无效\n"); 18 } 19 } 20 //3)准备回家,交通工具,输入工资,小于1300,则显示输入错误,大于10000坐飞机,大于5000坐火车,大于3000坐汽车,大于1500骑自行车,都不满足步行。 21 void test2() 22 { 23 int salary; 24 printf("输入工资:\n"); 25 scanf("%d",&salary); 26 if (salary >= 10000) { 27 printf("坐飞机回家\n"); 28 }else if (salary >= 5000){ 29 printf("坐火车回家\n"); 30 }else if (salary >= 3000){ 31 printf("坐汽车回家\n"); 32 }else if (salary >= 1500){ 33 printf("骑车回家\n"); 34 }else if (salary >= 1300){ 35 printf("步行回家\n"); 36 }else{ 37 printf("输入错误\n"); 38 } 39 } 40 /* 41 输入分数级别ABCD 42 优(90-100)A 43 良(80-90)B 44 中(60-80)C 45 不及格(0-60)D, 46 根据分数级别,判断分数范围。 47 */ 48 void test3() 49 { 50 char fj; 51 printf("输入分数级别:\n"); 52 scanf("%c",&fj); 53 if(fj == 'A' || fj == 'a'){ 54 printf("您的分数范围在90~100间\n"); 55 }else if(fj == 'B' || fj == 'b'){ 56 printf("您的分数范围在80~90间\n"); 57 }else if(fj == 'C' || fj == 'c'){ 58 printf("您的分数范围在60~80间\n"); 59 }else if(fj == 'D' || fj == 'd'){ 60 printf("您的分数范围在0~60间\n"); 61 }else{ 62 printf("输入数据无效"); 63 } 64 } 65 //判断闰年,平年2月份29天,闰年2月份29天,条件:a,年份可以同时整除4且不能整除100;b,整除400,满足其一就是闰年。输入一个年份判断是否是闰年。 66 void test4() 67 { 68 int year; 69 printf("输入一个年份:\n"); 70 scanf("%d",&year); 71 if((year % 4 == 0 && year % 100 !=0) || year % 400 == 0){ 72 printf("该年是闰年\n"); 73 }else{ 74 printf("该年是平年\n"); 75 } 76 } 77 //输入年、月,求某月有多少天,一共有28,29,30,31几种。 78 void test5() 79 { 80 int year; 81 int month; 82 printf("请输入年、月\n"); 83 scanf("%d%d",&year,&month); 84 if(month == 2){ 85 /*if((year % 4 == 0 && year % 100 !=0) || year % 400 == 0){ 86 printf("%d是闰年,%d月有29天\n",year,month); 87 }else{ 88 printf("%d是平年,%d月有28天\n",year,month); 89 }*/ 90 printf("%d年,%d月有%d天\n",year,month,28 + (year % 4 == 0 && year % 100 !=0 || year % 400 == 0)); 91 }else if(month == 4 || month == 6 || month == 9 || month == 11){ 92 if((year % 4 == 0 && year % 100 !=0) || year % 400 == 0){ 93 printf("%d是闰年,%d月有30天\n",year,month); 94 }else{ 95 printf("%d是平年,%d月有30天\n",year,month); 96 } 97 }else{ 98 if((year % 4 == 0 && year % 100 !=0) || year % 400 == 0){ 99 printf("%d是闰年,%d月有31天\n",year,month); 100 }else{ 101 printf("%d是平年,%d月有31天\n",year,month); 102 } 103 } 104 } 105 //输入年,求该年的总天数,365、366 106 void test6() 107 { 108 int year; 109 printf("输入年份:\n"); 110 scanf("%d",&year); 111 /*if((year % 4 == 0 && year % 100 !=0) || year % 400 == 0){ 112 printf("%d年是闰年,总天数366天\n",year); 113 }else{ 114 printf("该年是平年,总天数365天\n",year); 115 }*/ 116 printf("%d年,有%d天\n",year,365 + (year % 4 == 0 && year % 100 !=0 || year % 400 == 0)); 117 } 118 int main() 119 { 120 //test(); 121 //test2(); 122 //test3(); 123 //test4(); 124 //test5(); 125 test6(); 126 return 0; 127 }
作业:
1)输入四个数,求出四个数中的最大数、最小值、和
二、流程控制 开关分支(选择分支switch)
1.语法规则:switch(控制表达式){
case 常量表达式1:
语句;
break;
case 常量表达式2:
语句;
break;
……
default:
语句;
}
2. break关键字,终止switch代码块的执行。
3.控制表达式当做整型数据处理,也可以是字符型数据处理,但不能是浮点数和字符串。常量表达式必须是常量(常量和字符),不允许重复。
4.default语句,不一定在最后一行。
#include <stdio.h> int main() { int i =1; char ch = 'a'; /*switch (i){ case 1: printf("一\n"); break; case 2: printf("二\n"); break; default: printf("有误\n"); }*/ switch (ch){ case 'a': printf("1\n"); break; case 'b': printf("2\n"); break; default: printf("有误\n"); } return 0; }
作业:
(使用switch写)输入一个成绩,0~100之间的整数,根据分数得到相应的级别,100~90优(A)90~80良(B)80~60中(C)60~0不及格(D),根据分数级别,判断分数范围。
#include <stdio.h> int main() { char j; printf("输入分数级别:\n"); scanf("%c",&j); switch (j){ case 'A': printf("范围在90-100\n"); break; case 'B': printf("范围在80-90\n"); break; case 'C': printf("范围在60-80\n"); break; default: printf("范围在0-60\n"); } return 0; }