资源预览内容
第1页 / 共46页
第2页 / 共46页
第3页 / 共46页
第4页 / 共46页
第5页 / 共46页
第6页 / 共46页
第7页 / 共46页
第8页 / 共46页
第9页 / 共46页
第10页 / 共46页
亲,该文档总共46页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
复习顺序结构编程练习:键盘输入4个数,求平均值。参考代码: #include void main() float a,b,c,d,av;scanf(“%f,%f,%f,%f“, av=(a+b+c+d)/4;printf(“av=%.2fn“,av); 第五章选择结构程序设计教学目标与要求: 掌握关系运算符和关系表达式和逻辑运算符和 逻辑表达式。 能够熟练掌握和运用if 语句、switch 语句,能设 计出具有判断能力的程序,重点学会设计程序 的算法。 单分支、双分支、多分支选择其一 例: if (xy) z=x; else z=y;例: if( xy5.1 关系运算符与关系表达式1、关系运算符假值用0表示,非0都为真;关系运算符与优先级:= (高) = != (低)结合性:左到右2、关系表达式赋值运算 关系运算 算术运算(高)例: ca+b 等价于 c(a+b)a=bc等价于 a=(bc)5.2 逻辑运算符与逻辑表达式1、逻辑运算符:scanf(“%f,%f“,if (ab)printf(“a=%f,b=%fn“,a,b); t=a;a=b;b=t;(2)格式二 if (表达式1) 语句1 else if (表达式2) 语句2else if (表达式3) 语句3else 语句n#include void main() int score;scanf(“%d“,if (score=90)printf(“score=%d A等n“,score);else if (score=80)printf(“ score=%d B等n“,score);else if (score=70)printf(“score=%d C等n“,score);else if (score=60)printf(“score=%d D等n“,score);else printf(“score=%d E等n“,score); 例3:学生成绩分等级。 90-100 “A”,80-89 “B”,70-79 “C”,60- 69 “D”,0-60 “E”. C5_cjfd.c2、if 语句的嵌套if ( ) if ( ) 语句1else 语句2else if ( ) 语句3else 语句4说明:多个嵌套的结果,else存在匹配的问题: else 总是与最近的尚未匹配的 if 匹配。如if和else 数目不同,可用确定配对关系。程序1:void main() float x,y;scanf(“%f”,if (x0)输入任意x,求y.-1 (x0)程序2: void main() float x,y;scanf(“%f”,if (x=0) if (x0) y=1;else y=0;elsey=-1;printf(“x=%f y=%fn”,x,y); -1 (x0)程序3: void main() float x,y;scanf(“%f”,y=-1;if (x!=0) if (x0) y=1;else y=0; printf(“x=%f y=%fn”,x,y);练习:给一个不多于5位的正整数,判断是几位 数。xt5_7.c参考代码: void main() int num,place;printf(“请输入一个整数(0-99999)“);scanf(“%d“,if (num9999)place=5;else if (num999)place=4;else if (num99)place=3;else if (num9)place=2;else place=1; printf(“place=%dn“,place); 3、条件运算符if语句中,表达式真假时,都给同一变 量赋值,可用条件运算符。格式为: 表达式1?表达式2:表达式3 例:if (ab) max=a;else max=b;可改为:max=(ab)?a:b说明:先求表达式1,如果满足,则计算表 达式2;否则,计算表达式3;条件运算优于赋值运算复习: if语句格式:格式一: if (表达式) 语句1 else 语句2 格式二:if (表达式1) 语句1 else if (表达式2) 语句2else if (表达式3) 语句3else 语句n#include void main() char c; c=getchar();练习:判断由键盘输入的字符是数字、大 写字母、小写字母、空格还是其他字符。 if(c=0)printf(“%c 是字符!n“,c); else if (ca)printf(“%c 是小写字母!n“,c);else if (cA)printf(“%c 是大写字母!n“,c); else if (c= )printf(“%c 是空格!n“,c); else printf(“%c 是其他!n“,c); 5.4 多分支语句 switch格式:switch(表达式) case 常量表达式1: 语句1;case 常量表达式2: 语句2;case 常量表达式n: 语句n;default: 语句n+1;switch(表达式) case 常量表达式1: 语句1;case 常量表达式2: 语句2;case 常量表达式n: 语句n;default: 语句n+1; 说明:lswitch 内的表达式任意类型,与常量表达式类型一致。lcase 语句后有 break终止,否则将执行下面case 语句 。lswitch与if不同,只能测试相等,不能像 if 作关系比较, 如大于、小于之类; 例5 :输入数字,输出星期几?输入0,输出”星期日“输入1,输出”星期一“输入6,输出”星期六“参考代码: #include void main() int n;scanf(“%d“ ,switch(n)case 0: printf(“星期日n“);break;case 1: printf(“星期一n“);break;case 2: printf(“星期二n“);break;case 6: printf(“星期六n“);break;default: printf(“error!n“);例6:学生成绩分等级。90-100 “A”,80 -89 “B”,70-79 “C” ,60-69 “D”,0-60 “E”.给出一个等级,输出 相应分数段。 C5_djcj.c 参考代码: #include void main() char grade;grade=getchar();switch(grade)case A: printf(“90-100n“);break;case B: printf(“80-89n“);break; case C: printf(“70-79n“);break;case D: printf(“60-69n“);break;case E: printf(“50-59n“);break;default: printf(“error!n“);5.5 例子选讲例1:学生成绩分等级。根据分数输出相 应等级.90-100 “A” , 80-89 “B”,70-79 “C”,60-69 “D”,0-60 “E” xt5_6.c分析: 处理成绩temp=score/10;#include void main()void main() intint score,tempscore,temp; ;char grade; char grade;printf(“printf(“请输入学生成绩请输入学生成绩:“);:“);scanf(“%d“, );temp=score/10; temp=score/10;switch(tempswitch(temp) ) case 10: case 10:case 9: grade=A; break; case 9: grade=A; break;case 8: grade=B; break; case 8: grade=B; break;case 7: grade=C; break; case 7: grade=C; break;case 6: grade=D; break; case 6: grade=D; break;case 5: case 5: case 4: case 4:case 3: case 3:case 2: case 2:case 1: case 1:case 0: grade=E case 0: grade=E; ; printf(“printf(“成绩成绩:%d:%d 等级等级:%c“,score,grade:%c“,score,grade); ); 例2:求ax2+bx+c=0的根. C5_6.c分析: 三种情况参考代码:参考代码: #include #include void main() float a,b,c,disc,x1,x2,p,q;scanf(“%f,%f,%f“,disc=b*b-4*a*c;if (fabs(disc)1e-6) x1=(-b+sqrt(disc)/(2*a);x2=(-b-sqrt(disc)/(2*a);printf(“x1=%8.4f x2=%8.4fn“,x1,x2);elsep= ;q= ;printf(“x1=%8.4f+%8.4fin“,p,q);printf(“x2=%8.4f-%8.4fin“,p,q);-b/(2*a);sqrt(-disc)/(2*a)例3: 给一个不多于5位的正整数,判断是几 位数, 并且按逆序输出各位数字。Xt5_7.cIf语句求位数.9999,999,999,=0求各位数字:如:wan=num/10000qian=(num-wan*10000)/1000.定义变量:num, ge,shi,bai,qian,wan,place输出结果#include void main() int num;int ge,shi,bai,qian,wan,place;printf(“请输入一个整数(0-99999):“);scanf(“%d“,if (num9999) place=5;else if (num999) place=4;else if (num99) place=3;else if (num9) place=2; else place=1; printf(“place=%dn“,place);wan=num/10000; qian=(num-wan*10000)/1000; bai=(num-wan*10000-qian*1000)/100; shi=(num-wan*10000-qian*1000-bai*100)/10; ge=num-wan*10000-qian*1000-bai*100-shi*10;printf(“每位数字为:“); switch(place)case 5: printf(“%d,%d,%d,%d,%dn“,wan,qian,bai,shi
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号