C语言程序设计(4选择结构程序设计)
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
main()
【例4-1】在两个数中取大数。
{ int num1,num2,max; printf("\n input two numbers: "); scanf("%d%d",&num1,&num2); max=num1; if(max<num2) max=num2; printf("max=%d\n",max); }
if语句嵌套
例: #include “stdio.h” main() { int x=4,y=5,z=2,max; max=x; if(z>y) if(z>x) max=z; else if(y>x) 结果? max=y; printf(“max=%d”,max); }
if ~ else 配对原则:
例 求分段函数的值
0 ( x < 0) f ( x) = 2 x + 1 ( x 0)
#include <stdio.h> main() if(x>=0) { int x,y; y=2*x+1; printf("Enter integer x:"); else scanf("%d",&x); y=0; y=x>=0?2*x+1:0; printf(“when X=%d,f(x)=%d\n”,x,y); }
说明: case后面是常量表达式,且值必须互不相同 case和常量表达式之间要有空格 case后可包含多个可执行语句,且不必加{ } 常量表达式起语句标号作用,跳出必须用break语句 如: switch(z) 多个case可共用一组执行语句 如: switch(z) 例如: switch(z) switch(score) switch可嵌套 { {…… x=3,y=7; 如: int 完全可以用if语句或if语句的嵌套来实现。 case { { …… 5: printf(“Very good!”); case „A‟: i++; k--; case 1:
运行:Enter integer x:10 when X=10,f(x)=21 Enter integer x:-1 when X=-1,f(x)=0
例
1 y = -1
( x!= 0) ( x = 0)
#include <stdio.h> main() { int x,y; printf("Enter integer x:"); scanf("%d",&x); 运行:Enter integer x:10 if(x) if(x!=0) when X=10,y=1 y=1; Enter integer x:0 else when X=0,y=-1 y=-1; printf(“when X=%d,y=%d\n“,x,y); }
case switch(z) case 4: 2: printf(“A\n”); case „A‟: printf(“Good!”); case { „B‟: printf(“Pass!”); case …….. break; 3:……… case „C‟: case 2: „F‟: case printf(“score>60\n”); 2: x+y: case case printf(“Fail!”); …….. ……. printf(“data error!”); default break; :…….. } } } case } „F‟: …….. 运行结果:score为5时,输出: } Very good! Good! Pass! Fail! data error!
main()ቤተ መጻሕፍቲ ባይዱ { int num1,num2;
printf("\n input two numbers: "); scanf("%d%d",&num1,&num2); if(num1>num2) printf("max=%d\n",num1); else printf("max=%d\n",num2); }
内嵌if
statement1 statement2 内嵌if statement3 内嵌if statement4
内嵌if
main() {int x,y; printf(”\n input x :”); scanf(”%d”,x); if(x<0) y=-1; else {if(x= =0)y=0; else y=1; } printf(”x=%d,y=%d\n”,y); }
statement 执行过程: 例:if (x>y)
形式二(一般形式): printf(“%d”,x); 非0 格式:if (expression) statement1 语句1 else statement2 执行过程:
表达式
0 语句2
例:if (x>y) max=x; else max=y;
实现if ~ else 正确配对方法
例: if (a==b) 注意:书写格式不能 if(b==c) printf(“a==b==c”); 代替程序逻辑 else printf(“a!=b”); 修改: if (a==b) { if(b==c) printf(“a==b==c”); 实现if ~ else 正确配对 } 方法:加{ } else printf(“a!=b”);
缺省{ }时,else总是和它上面离它最近的未配对的 if 配对
if(…) if(…) if(…) else…... else…... else…...
main() { int x=100,y=10,a=30,b=20,k1=10,k2=6; if(a>b) if(b!=10) if(!k1)x=1; else if(k2) x=10; else x=20; 运行结果: printf("x =%d\n",x); x=10 }
其格式为: if(表达式1) 语句1 else if(表达式2) 语句2 …… else if(表达式n) 语句n else 语句n+1
多分支if语句:if-else if
【例3-3】将学生成绩由百分制转化为等级制。规则如下: ⑴ 85分(含)以上为A级。 ⑵ 70分(含)以上且85分以下为B级。 main() ⑶ 60分(含)以上且70分以下为C级。 { ⑷ 60分以下为D级。 float score; printf("\n please input a score:"); 程序运行结果如下: scanf("%f",&score); please input a score:89↙ if(score>=85) the score 89.000000 is A 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); }
C语言程序设计
第四章 选择结构程序设计
按给定条件进行判断,按判断后的不同情况进行不同处理。
选择结构有两种:
if语句: 1.单分支if语句 2.双分支if语句 3.多分支if语句
switch 语句
if语句(条件分支语句)
if语句常用的两种形式
形式一(缺省形式):
表达式
非0 语句 0
格式:if (expression)
【例】输入1—7中的数字,将其转换成相应的星期英文单词。 main() { int num; scanf(”%d”,&num); switch(num) { case 1:printf(”Monday\n”); break; case 2:printf(”Tuesday\n”); break; case 3 :printf(”Wednesday\n”); break; case 4:printf(”Tursday\n”); break; 若无break? case 5:printf(”Friday\n”);break; case 6:printf(”Saturday\n”);break; case 7:printf(”Sunday\n”);break; default:printf(”error\n”); } }
运行:Enter integer x,y:12,23 X<Y Enter integer x,y:12,6 X>Y Enter integer x,y:12,12 X==Y
一般是一个整数表达 switch语句(开关语句) 一般形式: 式(或字符表达式) switch(<表达式>) { case <常量表达式1>: <语句序列1> case <常量表达式2>: <语句序列2> ……. case <常量表达式n>: <语句序列n> default: <语句序列n+1> } 执行过程: <表达式>的值与某一case后面的<常量表达式>值匹配 时,则执行此case后面的所有的<语句序列>,直至遇 到break语句或switch的结束“}”,否则,执行default后 的<语句序列>。
if语句嵌套一般形式:
if (expr1) if (expr2) statement1 else statement2 if (expr1) statement1 else if(expr3) statement2 else statement3 if (expr1) { if (expr2) 内嵌if statement1 } else statement2 if (expr1) if (expr2) else else if(expr3) else
‘0’: ‘1’ : ‘2’ : ‘3’ : ‘4’ : ‘5’ : ‘6’ : ‘7’ : ‘8’ : ‘9’ :
说明:
else要与if配对使用 if后面的表达式类型任意 语句可以是复合语句 如:if(a==b&&x==y) printf(“a=b,x=y”); 同一个条件的多种表达方式 if(3) printf(“OK”); 例 考虑下面程序的输出结果: 如:if(x)printf(“%d”,‟a‟); if(„a‟) if(x!=0) 如:if(a<b) #include printf(“hello”); if(!x){ if(x==0) if(s=2) <stdio.h> main() if(s=2,s<0) r=a*a-b*b; printf(“false”); { int x,y; s=a/b; scanf(“%d,%d”,&x,&y); } Compile Error! if(x>y) else x=y; y=x; { 错误信息: else r=b*b-a*a; misplaced else in function main x++; y++; s=a/b+4; printf(“%d,%d\n”,x,y); } }
【例4-6】编写程序测试是数字、空白、还是其他字 符。
main() { int c; switch(c) {
case case case case case case case case case case
输入两数并判断其大小关系
#include <stdio.h> main() { int x,y; printf("Enter integer x,y:"); scanf("%d,%d",&x,&y); if(x!=y) if(x>y) printf("X>Y\n"); else printf("X<Y\n"); else printf("X==Y\n"); }