实验4 分支结构程序设计

上传人:飞****9 文档编号:130670191 上传时间:2020-04-30 格式:DOC 页数:11 大小:98.76KB
返回 下载 相关 举报
实验4 分支结构程序设计_第1页
第1页 / 共11页
实验4 分支结构程序设计_第2页
第2页 / 共11页
实验4 分支结构程序设计_第3页
第3页 / 共11页
实验4 分支结构程序设计_第4页
第4页 / 共11页
实验4 分支结构程序设计_第5页
第5页 / 共11页
点击查看更多>>
资源描述

《实验4 分支结构程序设计》由会员分享,可在线阅读,更多相关《实验4 分支结构程序设计(11页珍藏版)》请在金锄头文库上搜索。

1、实验四 分支结构程序设计姓名学号班级1.练习题一编写程序,计算练习一分段函数的值。(1) 用scanf函数输入x的值。(2) 运行程序时,分别按x的值小于0、x的值在0-15之间、x的值大于15三种情况输入数据,检查输出的y值是否正确。# include int k=1;void test();/程序是否继续void main ()while (k=1)int x,y,c;printf(Input x:);scanf(%d,&x);while (c=getchar()!=n&c!=EOF);if (x0) y=x+10;printf(x=%d,y=x+10=%dn,x,y);else if(x

2、15) y=3*x+5;printf(x=%d,y=3*x+5=%dn,x,y);elsey=2*x-10;printf(x=%d,y=2*x-10=%dn,x,y);test();void test() char c;printf(Test again?y/nn);if (c=getchar()=n|c=N)/只有当输入N或n时才终止程序k=0;运行结果截图:思考题及问题:判断x的值在0-15之间可否使用表达式“0=x=0&x15.2.练习题二输入3个数字,判断他们是否能构成三角形,如果不能,输出提示信息;否则判断它是直角、等边、等腰还是普通三角形。# include int k=1;voi

3、d test();void main() while(k=1)int a,b,c,d;printf(Input a,b,c:);scanf(%d,%d,%d,&a,&b,&c);while (d=getchar()!=n&c!=EOF);/清空输入缓存区if(!(a0&b0&c0&a+bc&a+cb&b+ca)printf(三条边无法构成三角形。n);else if (a*a+b*b=c*c|a*a=b*b+c*c|b*b=a*a+c*c)printf(这是一个直角三角形n); else if (a=b&b=c)printf(这是一个等边三角形n);else if (a=b|b=c|a=c)p

4、rintf(这是一个等腰三角形n);elseprintf(这是一个普通三角形n);test();void test() char c;printf(Test again?y/n:);if (c=getchar()=n|c=N)/只有当输入N或n时才终止程序k=0;运行结果截图:思考题及问题:判断三角形的类型时需要用到各种判断条件,入等边三角形的判断条件是3条边相等,该判断条件可否描述为“a=b=c”?为什么?答案:不能,“=”在C语言中是赋值符号,在条件判断式中是一个永真式,会引起语义错误。1. 练习题三编写一个程序,输出给定的某年某月的天数。要求:采用switch语句实现。程序代码:# in

5、clude void main()int year,mon,days,leap;printf(年.月:);scanf(%4d.%2d,&year,&mon);switch(mon)case 1:case 3:case 5:case 7:case 8:case 10:case 12:days=31;break;case 4:case 6:case 9:case 11:days=30;break;case 2: if (year%4=0&year%100!=0|year%400=0)leap =1;elseleap=0;if (leap)days=29;elsedays=28;printf(%d年

6、%d月的天数为%d天n,year,mon,days);运行结果截图:思考题及问题: 本程序所给代码中的switch语句没有default语句可以吗?default语句应该在switch语句的什么位置?可以。Default语句可以在之间的任意位置。 本程序所给代码中的最后一个case语句中,没有break正确吗?请解释。正确。在switch语句中,当找到符合条件的case时,执行该case语句及之后的其他情况的语句,故C语言会在case语句和default语句后加break;防止执行下面的语句。而最后一个case语句后无其他语句,故没有break语句也正确。1. 自测练习一编写程序,计算逻辑表达

7、式的值。假设int a=0,b=1,c=1,d=3;(1)表达式a*b&c-d、c-d&a*b是多少?为什么?程序代码:# include void main() int a=0,b=1,c=1,d=3; printf(%d,%d,a*b&c-d,c-d&a*b);运行结果截图及原因:a*b=0,逻辑假,由于与运算的短路性,&右边的表达式不进行,直接为0;c-d=-2,逻辑真,为1,故第二个运算式为1&0=0.(2)表达式a|+b&-c的值是多少?变量a、b、c的值分别是多少?为什么?程序代码:# include void main() int a=0,b=1,c=1,d=3; printf(

8、%dn,-a|+b&-c); printf(a=%d,b=%d,c=%d,a,b,c);运行结果截图及原因:+b即b的值为2,是真值1,-c值即c的值为0,假值0。-a即a的值为0,假值0.故结果为0|1&0=1&0=0,(3)表达式+b&-c|-a的值是多少?变量a、b、c的值分别是多少?为什么?程序代码:# include void main() int a=0,b=1,c=1,d=3; printf(+b&-c|-a=%dn,+b&-c|-a); printf(a=%d,b=%d,c=%d,a,b,c);运行结果截图及原因:+b即b的值为2,是真值1,-c值即c的值为0,假值0。-a即a

9、的值为-1,真值1.故结果为1&0|1=1,2. 自测练习二设整型变量a、b、c分别存放从键盘输入的3个整数。编写C程序,按从大到小排列这3个数,使a成为最大值,c成为最小值,并且按序输出这3个数。源程序代码:# include void main()int a3=0,t,j,i,k;for (i=0;i=2;i+)printf(Input %c:,i+97);scanf(%d,&ai);for (j=0;j=2;j+)/冒泡法for (i=0;i=2-j;i+)if (aiai+1)t=ai,ai=ai+1,ai+1=t;printf(a=%d,b=%d,c=%dn,a0,a1,a2);运行

10、结果截图:3. 自测练习三从键盘输入一个小于六位的正整数,判断它是几位数,并按照相反的顺序输出各位上的数字,例如输入1234,输出为4321。源程序代码:# include # include void main()int i=4,a6=0,k=0;printf(“请输入一个小于六位的正整数:);scanf(%d,&a5);while (a5=1;i-)ai=ai+1%(int)pow(10,i);ai+1=ai+1/(int)pow(10,i);for (i=1;i=k;i+)/倒序输出printf(%d,ai);printf(n);运行结果截图:4. 自测练习四假设今天是星期日,编写一个程

11、序,求n(n由键盘输入)天后是星期几。源程序代码:# include void main()int n,t;printf(假设今天是星期日,求n天后是星期几n输入n=);scanf(%d,&n);t=n%7;switch(t)case 0:printf(n天后还是星期日n);break;case 1:printf(n天后是星期一n);break;case 2:printf(n天后是星期二n);break;case 3:printf(n天后是星期三n);break;case 4:printf(n天后是星期四n);break;case 5:printf(n天后是星期五n);break;case 6

12、:printf(n天后是星期六n);运行结果截图:5. 自测练习五假定向香港邮寄包裹的收费规则如下:首先,包裹重量向上取整到最近的15g的倍数,然后按书上表格收费,编写一个程序根据用户输入的包裹的重量和里程计算邮费。包裹邮费计算表重量(g)收费(元)15530945126014(每足1000km加1元)75及以上15(每足1000km加2元)源程序代码:# include int k=1,c=0;/全局变量void test() printf(Test again?y/n:);if (c=getchar()=n|c=N)/只有当输入N或n时才终止程序k=0;void main() while(k=1) int m,s; printf(请输入包裹重量(g); scanf(%d,&m);

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 管理论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号