您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > 《C语言程序设计》(江宝钏著)实验三答案
3.5实验三选择结构程序设计一、实验目的与要求1.理解C语言表示逻辑量的方法,学会正确使用逻辑运算符和逻辑表达式。2.掌握利用if结构实现选择结构的方法。3.掌握利用switch结构实现多分支选择结构。4.结合程序掌握一些简单的算法,学习调试程序5.实验4学时二、实验内容1.程序改错题改正下面程序中的错误。输入实数x,计算并输出下列分段函数f(x)的值(保留1位小数)。)100(1xx)(xfy)100(xx输入输出示例1(改正后程序的运行结果)Enterx:100f(100.00)=0.1输入输出示例2(改正后程序的运行结果)Enterx:23f(23.00)=23.0源程序(有错误的程序)#includestdio.h#includemath.hvoidmain(void){doublex;printf(Enterx:\n);scanf(=%f,x);if(x=100){y=1/sqrt(x)}else(x!=100){y=x;}printf(f(%.2f)=%.1f\n,x,y);}答:#includestdio.h#includemath.hvoidmain(void){doublex,y;printf(Enterx:\n);scanf(%lf,&x);if(x=100)y=1/sqrt(x);elsey=x;printf(f(%.2lf)=%.1lf\n,x,y);}2.一般编程题编程题1输入任意三个整数a,b,c,求3个数中的最大值和最小值。答:#includestdio.hvoidmain(){inta,b,c;printf(请输入三个整数:);scanf(%d%d%d,&a,&b,&c);if(a=b)t=a,a=b,b=t;if(a=c)t=a,a=c,c=t;if(b=c)t=b,b=c,c=t;printf(最小值为:%d\n,a);printf(最大值为:%d\n,c);}编程题2输入x,计算并输出下面分段函数f(x)的值(保留2位小数)。请调用sqrt函数求平方根,调用pow函数求幂。)0(12)1(2xxxx)(xf)0(xx输入输出示例(共运行3次)Enterx:10f(10.00)=3.16Enterx:-0.5f(-0.50)=-2.75Enterx:0f(0.00)=0.00成本答:#includestdio.h#includemath.hvoidmain(){doublex,y;printf(Enterx:\n);scanf(%lf,&x);if(x0)y=pow(1+x,2)+2*x+1/x;elsey=sqrt(x);printf(f(%.2f)=%.2f\n,x,y);}编程题3有一函数:x(-5x0)y=x-1(x=0)x+1(0x10)编写程序,要求用scanf函数输入x的值,输出y的值。具体要求如下:(1)用if语句实现分支,自变量和函数值均用实数类型。(2)自变量用scanf函数输入,给一些输入提示。(3)运行程序,输入x的值(分别为-5x0,x=0,0x10)三种情况,检查输出的y值是否正确。答:#includestdio.h#includemath.hvoidmain(){doublex,y;printf(Enterx:\n);scanf(%lf,&x);if(x0&&x10)y=x+1;elseif(x==0)y=x-1;elseif(x-5&&x0)y=x;printf(f(%.2f)=%.2f\n,x,y);}编程题4某服装店经营成套服装的买卖,同时也允许单件销售。若一次购买不少于70套,则每套90元;若不足70套,则每套110元;只买上衣每件70元;只买裤子每条60元。请编写程序假设用户买入x件上衣和y条裤子,请编写程序计算相应的应付款是多少?答:#includestdio.h#includemath.hvoidmain(){doublex,y,z;printf(输入上衣x件,裤子y件:\n);scanf(%lf%lf,&x,&y);if(x=y&&y=70)z=90*y+70*(x-y);elseif(y=x&&x=70)z=90*x+60*(y-x);elseif(xy&&y70)z=110*y+70*(x-y);elseif(yx&&x70)z=110*x+60*y-x;printf(应付:%.3f(元)\n,z);}编程题5编写程序实现:输入一个整数,判断它能否被3、5、7整除,同时输出如下信息。(1)能同时被3、5、7整除;(2)能同时被其中的哪二个数整除;(3)能被其中的哪一个数整除;(4)不能被3、5、7任一个数整除。答:#includestdio.hvoidmain(){intx,a,b,c,d;scanf(%d,&x);a=x%3;a=a/a*100;b=x%5;b=b/b*10;c=x%7;d=a+b+c;switch(d){case100:printf(能被5,7整除\n);case10:printf(能被3,7整除\n);case1:printf(能被3,5整除\n);case110:printf(能被7整除\n);case101:printf(能被5整除\n);case11:printf(能被3整除\n);case111:printf(不能被3,5,7整除\n);case0:printf(能被3,5,7整除\n);}}3.较难编程题编程题1请用switch语句编程计算员工每月的薪水。(exph3_1.cpp)已知某公司员工的保底薪水为500,某月所接工程的利润profit(整数)与提成的关系如下(计量单位:元):profit≤1000没有提成;1000<profit≤2000提成10%;2000<profit≤5000提成15%;5000<profit≤10000提成20%;10000<profit提成25%。分析:为使用switch语句,必须将利润profit与提成的关系,转换成某些整数与提成的关系。分析本题可知,提成的变化点都是1000的整数倍(1000、2000、5000、……),如果将利润profit整除1000,则相邻两个区间的重叠。为解决相邻两个区间的重叠问题,最简单的方法就是:利润profit先减1(最小增量),然后再整除1000即可:profit≤1000对应01000<profit≤2000对应12000<profit≤5000对应2、3、45000<profit≤10000对应5、6、7、8、910000<profit对应10、11、12、……答:#includestdio.hvoidmain(){doublep,m,t,q;intn;printf(某月所接工程利润为:);printf(\n\n);scanf(%lf,&p);m=p-1;n=(int)m/1000;switch(n){case0:printf(\n薪水为:500\n);break;case1:q=500+p*0.1;printf(\n薪水为:%.2lf\n,q);break;case2:case3:case4:q=500+p*0.15;printf(\n薪水为:%.2lf\n,q);break;case5:case6:case7:case8:case9:q=500+p*0.2;printf(\n薪水为:%.2lf\n,q);break;default:q=500+p*0.25;printf(\n薪水为:%.2lf\n,q);}}编程题2编写程序实现如下功能:输入二个运算数(exp1,exp2)和一个运算符(op),计算表达式exp1opexp2的值,其中OP可以为+、-、*、/、%五个符号中的任一种(提示:用switch语句实现)。答:#includestdio.hvoidmain(){floatexp1,exp2,x;charop;printf(输入:);scanf(%f%c%f,&exp1,&op,&exp2);switch(op){case'+':x=exp1+exp2;break;case'-':x=exp1-exp2;break;case'*':x=exp1*exp2;break;case'/':x=exp1/exp2;break;}printf(\n\n\n%5.2f%c%5.2f=%5.2f\n\n\n,exp1,op,exp2,x);}+
本文标题:《C语言程序设计》(江宝钏著)实验三答案
链接地址:https://www.777doc.com/doc-4463502 .html