C语言程序设计任务5 判断指定月份天数主讲:彭顺生目 录CONTENTS目 录CONTENTS任务陈述C语言程序设计年份分闰年和平年,闰年和 平年的天数不一样,每个月的天数也不一样,请设计一个程序来判断某年某月有多少天。运行结果目 录CONTENTS级联if语句的执行过程 C语言程序设计有时候我们也会碰到在某些点上时执行什么操作。int day;scanf("%d",&day);if(day==1){ printf("Monday\n");}else if(day ==2){printf("Tuesday\n"); }else i f(day ==3){printf("Wednesday\n");}else if(day ==4){printf("Thursd ay\n");}else if(day ==5){printf("Friday\n"); }else if(day ==6){pr intf("Saturday\n");}else if(day ==7){printf("Sunday\n");}else{pri ntf("error\n");}day==5 比较5次day==1 比较1次day==8 比较8次 调试结果s witch…case语句C语言程序设计switch(条件表达式){ case常量表达式1: 语句序列1;[break;] case常量表达式2: 语句序列2;[break;] … case常量表达式i: 语句序列i;[brea k;] case常量表达式n: 语句序列n;[break;] [default: 语句序列n+1;]}语句结构if (条件表达式){ 语句;}switch(条件表达式){ 语句;} 执行流程:1.计算条件表达式的值2.依次与各c ase后的常量表达式相比较。若相等,则执行对应的分支,遇break退出。3.若无匹配,执行default分支。特别提醒C语言程序设 计break:不是语法的必须部分,但为避免语义错误,消除歧义,一般把break作为了该语法的一部分。表达式类型:整型、字符型 注意事项C语言程序设计1.条件表达式类型Switch的条件表达式只能为整型或字符型正确形式:switch(4+3)switch (‘f’-’b’)switch(‘a’+3)错误形式:switch(4.0+2)switch(“abc”) 注意事项C语言 程序设计2.case后表达式类型各常量表达式只能为整型或字符型。正确形式:case 3:语句1;break;case 3+2:语句 2;break;case ‘d’:语句3;break;case ‘d’-2:语句4;break;错误形式:case 3.2:语句1 ;break;case d:语句2;break;case “d”:语句3;break; 注意事项C语言程序设计3.case 常量表达式不能重复各常量表达式的值不能重复。错误形式:switch(‘a’+2){ case ‘b’:语句1;break; ca se ‘a’:语句2;break; case ‘c’:语句3;break; case ‘a’ :语句4;break; //错 误,’a’重复} 注意事项C语言程序设计4.在switch…case语句中最困惑的就是break误区:初学者认为case与 case分割了case之间的哪些语句。正常情况下,每个case配对一个break,但特殊情况也会出现多个case只有1个break 的情况。case 1:case 1+1:printf("Tuesday\n"); break;case 3:printf("Wed nesday\n");case 4:printf("Thursday\n");break;因此case与case之间不会去划分开程 序语句,程序执行到哪里由break决定。 注意事项C语言程序设计5.可选default随便放default可选的,如果含有 default分支,其位置任意。int a = 2;switch(a){case 1:printf(“a=1分支\n”);case 2:printf(“a=2分支\n”);case 3:printf(“a=3分支\n”);default:printf(“没找到 对应分支\n”);case 4:printf(“a=4分支\n”);case 5:printf(“a=5分支\n”);}其输出结果 为:a=2分支a=3分支没找到对应分支a=4分支a=5分支 注意事项C语言程序设计6.多分支共享同一语句多分支共享语句。各 “case 常量表达式:”均不能省略int n = 2;switch(n){case 1:case 2:case 3:print f(“小于等于3\n”);break;case 4:printf(“等于4\n”);break;default:printf(“等 于5\n”);break;}目 录CONTENTS精典案例C语言程序设计【例3-10】根据学生成绩的等级,输出相应消息。分析:成绩 等级由键盘输入,分别为’A’,’B’,’C’,’D’,’E’,其他,根据等级输出消息,规则是,成绩的等级为’A’输出“Excell ent!”,成绩的等级为’B’或’C’输出“Well done!”, 成绩的等级为’D’输出“You passed!”, 成绩的等 级为’E’输出“Better try again!”,否则输出“Invalid grade!”。精典案例C语言程序设计流程图#in cludeint main(){ char grade; scanf("%c", &grade) ; switch(grade) { case ''A'' : printf("Excell ent!\n" ); break; case ''B'' : case ''C'' : printf("Well done!\n" ); break; case ''D'' : printf("You passed!\n" ); break; case ''E'' : printf("Better try again!\n" ); break; default : printf("Invalid grade!\n" ); } return 0;}程序目 录CONTENTS任务描述C语言程序设计年份分闰年和平年,闰年和平年的天数不一样 ,每个月的天数也不一样,请设计一个程序来判断某年某月有多少天。提示:每年的1,3,5,7,8,10,12月,这些月份天数一样,都是 31天。2月,闰年为29天,平年28天。每年的4,6,9,11月,这些月份天数也一样,都是30天。任务实施流程(1)分析解决该任务 的步骤、方法(2)把解决该任务的步骤(算法)用流程图进行描述(4)测试执行程序C语言程序设计(3)根据流程图编写程序实施步骤第一步 ,获取输入的年份和月份值;第二步,根据输入的年份和月份的不同进行判断,不同月份进行不同的运算;C语言程序设计第三步, 根据不同的计 算得出计算结果。流程图编写程序C语言程序设计#includeint main(){ int year,month ; printf("请输入一个年份:"); scanf("%d",&year); printf("请输入一个月份:"); scan f("%d",&month); switch(month) { case 1: case 3: case 5: case 7: case 8: case 10: case 12:printf("该月为三十 一天");break; case 4: case 6: case 9: case 11:print f("该月为三十天");break; case 2: if((year%4==0)&&(year%100!=0)||(year%400==0)) printf("该月为二十九天"); else printf("该月为二十八天"); break; } return 0;}程序流程图测试程序C语言程序设计运行结果C语言程序设计再见 |
|