资源预览内容
第1页 / 共23页
第2页 / 共23页
第3页 / 共23页
第4页 / 共23页
第5页 / 共23页
第6页 / 共23页
第7页 / 共23页
第8页 / 共23页
第9页 / 共23页
第10页 / 共23页
亲,该文档总共23页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
C语言程序设计第四章 选择结构程序设计if语句:1.单分支if语句2.双分支if语句3.多分支if语句选择结构有两种:switch 语句按给定条件进行判断,按判断后的不同情况进行不同处理。l 形式二(一般形式):l 格式:if (expression) statement1elsestatement2l 执行过程:nif语句常用的两种形式n形式一(缺省形式):n格式:if (expression) statement执行过程:表达式语句非00例: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=%dn“,num1); else printf(“max=%dn“,num2);o 如:if(a=bif(3) printf(“OK”);if(a) printf(“%d”,a);if(s=2) printf(“hello”);if(s=2,smain() int x,y;scanf(“%d,%d”,if(xy)x=y; y=x;elsex+; y+;printf(“%d,%dn”,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)=%dn”,x,y); 运行:Enter integer x:10when X=10,f(x)=21Enter integer x:-1when 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;elsey=-1;printf(“when X=%d,y=%dn“,x,y); 运行:Enter integer x:10when X=10,y=1Enter integer x:0when X=0,y=-1 例 if(x!=0)=-1!=) 0() 0(1 xxy多分支if语句:if-else if o其格式为:oif(表达式1)o语句1oelse if(表达式2)o 语句2o o else if(表达式n)o 语句no else 语句n+1o【例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 Aif语句嵌套例: #include “stdio.h”main() int x=4,y=5,z=2,max;max=x; if(zy)if(zx)max=z;elseif(yx)max=y;printf(“max=%d”,max);结果?缺省 时,else总是和它上面离它最近的未配对的 if 配对if() if() if() else. else. else.if else 配对原则:omain()oo 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 =%dn“,x);o运行结果: x=10例: if (a=b)if(b=c)printf(“a=b=c”);elseprintf(“a!=b”); 修改: if (a=b) if(b=c)printf(“a=b=c”);elseprintf(“a!=b”);实现if else 正确配对 方法:加 实现if else 正确配对方法注意:书写格式不能 代替程序逻辑if语句嵌套一般形式:if (expr1)if (expr2) statement1else statement2内嵌ifif (expr1) if (expr2) statement1 elsestatement2 内嵌ifif (expr1)statement1 elseif(expr3) statement2else statement3内嵌ifif (expr1)if (expr2) statement1else statement2 elseif(expr3) statement3else statement4内嵌if内嵌ifomain()oint 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(“XYn“);else printf(“XYEnter integer x,y:12,12X=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(“score60n”);break;case F:如: switch(z)case 1:case 2: case 2:.如: switch(z) case A: i+; k-;printf(“An”);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【例】输入17中的数字,将其转换成相应的星期英文单词。omain()o int num;o scanf(”%d”,o switch(num)o case 1:printf(”Mondayn”); break;ocase 2:printf(”Tuesdayn”); break;ocase 3 :printf(”Wednesdayn”); break;ocase 4:printf(”Tursdayn”); break;ocase 5:printf(”Fridayn”);break;ocase 6:printf(”Saturdayn”);break;ocase 7:printf(”Sundayn”);break;odefault:printf(”errorn”);o o若无break?o【例4-6】编写程序测试是数字、空白、还是其他字 符。omain()oo int c;o switch(c)oocase 0:ocase 1 :ocase 2 :ocase 3 :ocase 4 :ocase 5 :ocase 6 :ocase 7 :ocase 8 :ocase 9 :oprintf(”this is a digitn”); break;ocase :ocase n :ocase t :oprintf(”this is a blankn”); break;odefault:oprintf(”this is a charactern”); break;oo补充举例:路程s越远,每公里运费越低。 折扣的标准如下:s250km 没有折扣 250s500 2折扣 500s1000 5折扣1000s2000 8折扣2000s3000 10折扣3000s 15折扣设每公里每吨货物的基本运费 为p,货物重为w,距离为s,折扣 为d,则总运费f 的计算公式为:fp*w*s*(1-d)折扣的“变化点”都是250倍数 分析折扣变化的规律:若s为整型,则c与折扣d的关系为:c=0 d=0c=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
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号