一、主要的语句类型
二、3种控制结构
结构化程序设计提供了3种控制结构,分别是顺序结构、分支结构和循环结构。
1、取三个数中的最小数
用三元运算符?:
#includeint main() { int x,y,z; int i,j,n; scanf("%d %d %d",&x,&y,&z); i=(x x:y; j=(i i:z; printf("%d",j); return 0; }
三元运算符 m=x?y:z; 先运算x,如果x正确,则输出y,否则输出z
2、双分支选择结构
将输入的三个数按照从小到大的顺序输出。
#include/* 输入 3 个整数 x、y 以及 z,请把这三个数从小到大输出。 */ int main() { int x,y,z; int i,j,n; scanf("%d %d %d",&x,&y,&z); if(x>y) { i=x; x=y; y=i; } if(x>z) { j=x; x=z; z=j; } if(y>z) { n=y; y=z; z=n; } printf("%d<%d<%d",x,y,z); return 0; }
3、多分支选择结构
判断输入的字符是数字、大写字母、小写字母或其他字符。
#includeint main() { char ch; scanf("%c",&ch); if('0'<=ch && ch<='9') printf("输入的是数字"); else if('A'<=ch && ch<='Z') printf("输入的是大写字母"); else if('a'<=ch && ch<='z') printf("输入的是小写字母"); else printf("输入的是其他字符"); return 0; }
三、switch语句
switch语句中的“表达式”和case后面的“常量表达式”的结果值的类型应该一致。其类型可以是除实型以外的任何类型(如整型、字符型、枚举类型)。
• 每一个case后的常量表达式的值必须互不相同。
• 执行完一个case后面的语句后,流程控制到下一个case继续执行。因此,多个case可共用一组语句。
1、break语句
终止switch语句的执行。为了执行完某个分支后跳出switch结构,应在其后加上break语句。
2、default语句
当所有case常量表达式与switch后表达式的值都不匹配时,default语句被执行,实际上,default语句也不是必须的,当default语句省略时,表示“缺省情况下什么也不做”。
default语句并不一定放在switch结构的最后,default语句和各个case语句的顺序完全可互换而不影响结果,当default语句不在switch结构的最后时,不要忘记使用break。
四、课后作业
#include/* 如果员工满足下列条件之一,公司就为他们投保。 员工已婚 员工为 30 岁以上的未婚男性 员工为 25 岁以上的未婚女性 如果以上条件一个也不满足,则公司不投保。 根据用户输入员工的婚姻状态、性别和年龄,判定该员工是否已投保。 */ int main() { int age; char H,X; printf("请输入您的婚姻状态(请填Y/N)、性别(请填M/F)和年龄(请填数字)\n"); scanf("%c %c %d",&H,&X,&age); if(H=='Y') printf("您已婚,公司已给您投保"); else if(H=='N' && (X=='M' && age>=30)) printf("您是30岁以上的未婚男性,公司已给您投保"); else if(H=='N' && (X=='F' && age>=25)) printf("您是25岁以上的未婚女性,公司已给您投保"); else printf("您不满足公司投保要求,没有投保"); return 0; }
#include#define PI 3.14 /* 用于计算长方形、圆形和三角形的面积。根据用户的选择要能计算相应形状的面积。 根据用户选择的形状,提示用户输入该形状的详细信息: 长方形要求输入长和宽的值; 圆形要求输入半径的值; 三角形要求输入底和高的值。计算相应形状的面积 */ int main() { int i; float c,k,r,d,g; float s1,s2,s3; printf("您需要计算长方形的面积请输入‘1 ’\n计算圆形的面积请输入‘2 ’\n计算三角形的面积请输入‘3 ’\n"); scanf("%d",&i); getchar(); switch(i) { case 1 :printf("您计算长方形的面积,请输入长和宽:"); scanf("%f %f",&c,&k); s1=c*k; printf("长方形的面积为.2%f",s1); break; case 2 :printf("您计算圆形的面积,请输入半径:"); scanf("%f",&r); s2=r*r*PI; printf("圆形的面积为%.2f",s2); break; case 3 :printf("您计算三角形的面积,请输入底和高:"); scanf("%f %f",&d,&g); s3=0.5*d*g; printf("三角形的面积为%.2f",s3); break; } return 0; }
#include/* 编写一个程序,用于创建包括下列选项的菜单。 A. 添加详细信息 B. 修改详细信息 C. 删除详细信息 D. 查看详细信息 E. 退出 请输入之间的选项:用户应保证输入的选项在”a-e”之间,否则均视为无效输入。 */ int main() { char i; scanf("%c",&i); switch(i) { case 'A' :printf("添加详细信息");break; case 'B' :printf("修改详细信息");break; case 'C' :printf("删除详细信息");break; case 'D' :printf("查看详细信息");break; case 'E' :printf("退出");break; default :printf("无效输入,请输入选项在‘A-E ’之间");break; } return 0; }
#include/* 某公司员工的工资包括底薪和奖金两部分,每个员工的底薪都是 1000 元,而奖金取决于员工的级别。 不同级别的员工奖金比例如下表所示: 等级 奖金占底薪的百分比 A 45% B 40% C 30% D 25% 根据员工级别,计算应付给该员工的工资。 */ int main() { char i; float s1,s2,s3,s4; printf("您的员工级别为:"); scanf("%c",&i); switch(i) { case 'A' :s1=1000+1000*0.45; printf("应付的员工工资为%.2f",s1); break; case 'B' :s2=1000+1000*0.4; printf("应付的员工工资为%.2f",s2); break; case 'C' :s3=1000+1000*0.3; printf("应付的员工工资为%.2f",s3); break; case 'D' :s4=1000+1000*0.25; printf("应付的员工工资为%.2f",s4); break; } return 0; }
#include/* 输入某年某月某日,判断这一天是这一年的第几天。 */ int main() { int year,month,day; int i; scanf("%d %d %d",&year,&month,&day); if((year%4!=0 && year%100==0) || year%400!=0) { switch(month) { case 1 :i=day; printf("这一天是%d年%d月%d日的第%d天",year,month,day,i);break; case 2 :i=day+31; printf("这一天是%d年%d月%d日的第%d天",year,month,day,i);break; case 3 :i=day+59; printf("这一天是%d年%d月%d日的第%d天",year,month,day,i);break; case 4 :i=day+90; printf("这一天是%d年%d月%d日的第%d天",year,month,day,i);break; case 5 :i=day+120; printf("这一天是%d年%d月%d日的第%d天",year,month,day,i);break; case 6 :i=day+151; printf("这一天是%d年%d月%d日的第%d天",year,month,day,i);break; case 7 :i=day+181; printf("这一天是%d年%d月%d日的第%d天",year,month,day,i);break; case 8 :i=day+212; printf("这一天是%d年%d月%d日的第%d天",year,month,day,i);break; case 9 :i=day+243; printf("这一天是%d年%d月%d日的第%d天",year,month,day,i);break; case 10 :i=day+273; printf("这一天是%d年%d月%d日的第%d天",year,month,day,i);break; case 11 :i=day+304; printf("这一天是%d年%d月%d日的第%d天",year,month,day,i);break; case 12 :i=day+334; printf("这一天是%d年%d月%d日的第%d天",year,month,day,i);break; } } else { switch(month) { case 1 :i=day; printf("这一天是%d年%d月%d日的第%d天",year,month,day,i);break; case 2 :i=day+31; printf("这一天是%d年%d月%d日的第%d天",year,month,day,i);break; case 3 :i=day+60; printf("这一天是%d年%d月%d日的第%d天",year,month,day,i);break; case 4 :i=day+91; printf("这一天是%d年%d月%d日的第%d天",year,month,day,i);break; case 5 :i=day+121; printf("这一天是%d年%d月%d日的第%d天",year,month,day,i);break; case 6 :i=day+152; printf("这一天是%d年%d月%d日的第%d天",year,month,day,i);break; case 7 :i=day+182; printf("这一天是%d年%d月%d日的第%d天",year,month,day,i);break; case 8 :i=day+213; printf("这一天是%d年%d月%d日的第%d天",year,month,day,i);break; case 9 :i=day+244; printf("这一天是%d年%d月%d日的第%d天",year,month,day,i);break; case 10 :i=day+274; printf("这一天是%d年%d月%d日的第%d天",year,month,day,i);break; case 11 :i=day+305; printf("这一天是%d年%d月%d日的第%d天",year,month,day,i);break; case 12 :i=day+335; printf("这一天是%d年%d月%d日的第%d天",year,month,day,i);break; } } return 0; }