main() { inta,b,c,min; printf("inputa,b,c:"); scanf("%d%d%d",&a,&b,&c); if(a<b) min=a; else min=b; if(c<min) min=c; printf("Theresultis%d\n",min); } |
#include<stdio.h> main() { floatx,y,t; printf("inputx,y:"); scanf("%f%f",&x,&y); if(x<y) { t=x; x=y; y=t; } printf("result:%7.3f\t%7.3f\n",x,y); } |
执行结果:
inputx,y:43.256.7
result:56.70043.200
3.if...elseif语句
语句1
elseif<表达式2>
语句2
elseif<表达式3>
语句3
else语句4
对应的流程图见图3-4。
[例3-7]货物征税问题,价格在1万元以上的征5%,5000元以上1万元以下的征3%,
1000元以上5000以下的征2%,1000元以下的免税,读入货物价格,计算并输出税金。
分析:读入price,计算tax,这是一个较复杂的分支结构程序设计(应注意避免重复征税)。
假定货物的价格在1万元以上,征税应分段累计,各段采用不同税率进行征收。
算法:若price>=10000
则tax=0.05*(price-10000);price=10000;
否则,若price>=5000
则tax=0.03*(price-5000)+tax;price=5000;
否则,若price>=1000
则tax=0.02*(price-1000)+tax;price=1000;
程序如下:
#include<stdio.h> main() { floatprice,tax=0; printf("inputprice:"); scanf("%f",&price); if(price>=10000.0) { tax=0.05*(price-10000)+tax;price=10000; } if(price>=5000.0) { tax=0.03*(price-5000)+tax;price=5000; } if(price>=1000.00) { tax=0.02*(price-1000)+tax; } printf("thetax=%10.3f",tax); } |
main() { floatx,y; printf("inputx,y:"); scanf("%f",&x); if(x>=0) if(x>0) y=1; else y=0; else y=-1; printf("y=%4.0f\n",y); } |
y=0; if(x>=0) if(x>0) y=1; else y=-1; |
y=0; if(x>=0) { if(x>0) y=1; } else y=-1; |
#p#副标题#e#
3.3.2switch语句
if语句只能处理从两者间选择之一,当要实现几种可能之一时,就要用if...elseif甚至多重的嵌套if来实现,当分支较多时,程序变得复杂冗长,可读性降低。C语言提供了switch开关语句专门处理多路分支的情形,使程序变得简洁。
switch语句的一般格式为:
switch<表达式>
case常量表达式1:语句序列1;
break;
case常量表达式2:语句序列2;
break;
⋯⋯
case常量表达式n:语句n;
break;
default:语句n+1;
其中常量表达式的值必须是整型,字符型或者枚举类型,各语句序列允许有多条语句,不需要按复合语句处理,若语句序列i为空,则对应的break语句可去掉。图3-7是switch语句的流程图。
特殊情况下,如果switch表达式的多个值都需要执行相同的语句,可以采用下面的格式:
switch(i) { case1: case2: case3:语句1; break; case4: case5:语句2; break; default:语句3; } |
#include<stdio.h> main() { int month; int day; printf("please input the month number:"); scanf("%d",&month); switch(month) { case 1: case 3: case 5: case 7: case 8: case 10: case 12:day=31; break; case 4: case 6: case 9: case 11:day=30; break; case 2:day=28; break; default:day=-1; } if day=-1 printf("Invalid month input !\n"); else printf("1999.%dhas%ddays\n",month,day); } |