c语言将学生成绩由百分制转化为等级制,C语言程序设计(4选择结构程序设计).ppt...

C语言程序设计 第四章 选择结构程序设计 if语句: 1.单分支if语句 2.双分支if语句 3.多分支if语句 选择结构有两种: switch 语句 按给定条件进行判断,按判断后的不同情况进行不同处理。 l 形式二(一般形式): l 格式:if (expression) statement1 else statement2 l 执行过程: nif语句常用的两种形式 n形式一(缺省形式): n格式:if (expression) statement §执行过程: 表达式 语句 非0 0 例:if (xy) printf(“%d”,x); 表达式 语句1语句2 非00 例:if (xy) max=x; else max=y; if语句(条件分支语句) 【例4-1】在两个数中取大数。 omain() o{ int num1,num2,max; oprintf(“\n input two numbers: “); scanf(“%d%d“, o max=num1; o if(maxnum2) printf(“max=%d\n“,num1); else printf(“max=%d\n“,num2); o } 如:if(a==b if(3) printf(“OK”); if(‘a’) printf(“%d”,’a’); if(s=2) printf(“hello”); if(s=2,s main() { int x,y; scanf(“%d,%d”, if(xy) x=y; y=x; else x++; y++; printf(“%d,%d\n”,x,y); } Compile Error! 说明: 错误信息: misplaced else in function main 如:if(a main() { int x,y; printf(“Enter integer x:“); scanf(“%d“, y=x=0?2*x+1:0; printf(“when X=%d,f(x)=%d\n”,x,y); } 运行:Enter integer x:10 when X=10,f(x)=21 Enter integer x:-1 when X=-1,f(x)=0 例 求分段函数的值 if(x=0) y=2*x+1; else y=0; î í ì ³+ main() { int x,y; printf(“Enter integer x:“); scanf(“%d“, if(x) y=1; else y=-1; printf(“when X=%d,y=%d\n“,x,y); } 运行:Enter integer x:10 when X=10,y=1 Enter integer x:0 when X=0,y=-1 例 if(x!=0) î í ì = -1 != = ) 0( ) 0(1 x x y 多分支if语句:if-else if o其格式为: oif(表达式1) o语句1 oelse if(表达式2) o 语句2 o …… o else if(表达式n) o 语句n o else 语句n+1 o【例3-3】将学生成绩由百分制转化为等级制。规则如下: o ⑴ 85分(含)以上为A级。 o ⑵ 70分(含)以上且85分以下为B级。 o ⑶ 60分(含)以上且70分以下为C级。 o ⑷ 60分以下为D级。 main() { float score; printf(“\n please input a score:“); scanf(“%f“, if(score=85) printf(“the score %f is A \n“,score); else if(score=75) printf(“ the score %f is B \n“,score); else if(score=60) printf(“the score %f is C \n“,score); else printf(“the score %f is D \n“,score); } 程序运行结果如下: please input a score:89↙ the score 89.000000 is A if语句嵌套 例: #include “stdio.h” main() { int x=4,y=5,z=2,max; max=x; if(zy) if(zx) max=z; else if(yx) max=y; printf(“max=%d”,max); } 结果? 缺省{ }时,else总是和它上面离它最近的未配对的 if 配对 if(…) if(…) if(…) else…. else…. else…. if ~ else 配对原则: omain() o{ o int x=100,y=10,a=30,b=20,k1=10,k2=6; o if(ab) oif(b!=10) oif(!k1)x=1; oelse if(k2) x=10; o else x=20; oprintf(“x =%d\n“,x); o} 运行结果: x=10 例: if (a==b) if(b==c) printf(“a==b==c”); else printf(“a!=b”); 修改: if (a==b) { if(b==c) printf(“a==b==c”); } else printf(“a!=b”); 实现if ~ else 正确配对 方法:加{ } 实现if ~ else 正确配对方法 注意:书写格式不能 代替程序逻辑 if语句嵌套一般形式: if (expr1) if (expr2) statement1 else statement2 内嵌if if (expr1) { if (expr2) statement1 } else statement2 内嵌if if (expr1) statement1 else if(expr3) statement2 else statement3 内嵌if if (expr1) if (expr2) statement1 else statement2 else if(expr3) statement3 else statement4 内嵌if 内嵌if omain() o{int x,y; oprintf(”\n input x :”); oscanf(”%d”,x); oif(x main() { int x,y; printf(“Enter integer x,y:“); scanf(“%d,%d“, if(x!=y) if(xy) printf(“XY\n“); else printf(“XY Enter integer x,y:12,12 X==Y 例 输入两数并判断其大小关系 switch语句(开关语句)v 一般形式: v 执行过程: switch() { case : case : ……. case : default: } 的值与某一case后面的值匹配 时,则执行此case后面的所有的,直至遇 到break语句或switch的结束“}”,否则,执行default后 的。 一般是一个整数表达 式(或字符表达式) v 说明: l case后面是常量表达式,且值必须互不相同 l case和常量表达式之间要有空格 l case后可包含多个可执行语句,且不必加{ } l 常量表达式起语句标号作用,跳出必须用break语句 l 多个case可共用一组执行语句 l switch可嵌套 l 完全可以用if语句或if语句的嵌套来实现。 如: switch(z) { …… case ‘A’: case ‘B’: case ‘C’: printf(“score60\n”); break; case ‘F’: …… } 如: switch(z) { case 1: case 2: …… case 2: ……. } 如: switch(z) { …… case ‘A’: i++; k--; printf(“A\n”); break; case ‘F’: …… } 例 switch(score) { case 5: printf(“Very good!”); case 4: printf(“Good!”); case 3: printf(“Pass!”); case 2: printf(“Fail!”); default : printf(“data error!”); } 运行结果:score为5时,输出: Very good! Good! Pass! Fail! data error! 如: int x=3,y=7; switch(z) { ……… case x+y: …… } o【例】输入1—7中的数字,将其转换成相应的星期英文单词。 omain() o{ int num; o scanf(”%d”, o switch(num) o{ case 1:printf(”Monday\n”); break; ocase 2:printf(”Tuesday\n”); break; ocase 3 :printf(”Wednesday\n”); break; ocase 4:printf(”Tursday\n”); break; ocase 5:printf(”Friday\n”);break; ocase 6:printf(”Saturday\n”);break; ocase 7:printf(”Sunday\n”);break; odefault:printf(”error\n”); o } o} 若无break? o【例4-6】编写程序测试是数字、空白、还是其他字 符。 omain() o{ o int c; o switch(c) o{ ocase ‘0’: ocase ‘1’ : ocase ‘2’ : ocase ‘3’ : ocase ‘4’ : ocase ‘5’ : ocase ‘6’ : ocase ‘7’ : ocase ‘8’ : ocase ‘9’ : oprintf(”this is a digit\n”); break; ocase ‘ ’ : ocase ‘\n’ : ocase ‘\t’ : oprintf(”this is a blank\n”); break; odefault: oprintf(”this is a character\n”); break; o} o} 补充举例: 路程s越远,每公里运费越低。 折扣的标准如下: s<250km 没有折扣 250≤s<500 2%折扣 500≤s<1000 5%折扣 1000≤s<2000 8%折扣 2000≤s<3000 10%折扣 3000≤s 15%折扣 设每公里每吨货物的基本运费 为p,货物重为w,距离为s,折扣 为d,则总运费f 的计算公式为: f=p*w*s*(1-d) 折扣的“变化点”都是250倍数 分析折扣变化的规律: 若s为整型,则c与折扣d的关系为: c=0 d=0 c=1 d=2% c=2、3 d=5% c=4、5、6、7 d=8% c=8、9、10、11 d=10% c=12、13、14、… d=15% 若c=s/250,则折扣d如下: c=3000) c=12; else c=s/250; switch (c) { case 0:d=0; break; case 1:d=2; break; case 2: case 3:d=5; break; case 4:case 5:case 6: case 7:d=8; break; case 8:case 9:case 10: case 11:d=10; break; case 12:d=15; break; } f=p*w*s*(1-d/100.0); printf(“%15.4f\n”,f); } 程序: ? 能 o练习: o输入一个由两个数据和 一个算术运算符组成的表达式 ,根据运算符完成相应运算,并输出结果。 #include main() {int a,b; char c; scanf(“%d%c%d“, switch(c) {case '+':printf(“a+b=%d“,a+b);break; case '-':printf(“a-b=%d“,a-b);break; case '*':printf(“a*b=%d“,a*b);break; case '/':if(b!=0)printf(“a/b=%d“,a/b); else printf(“b=0“);break; delfault:printf(“error“);}}

展开阅读全文

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值