《《c语言程序设计》(江宝钏著)实验三答案.doc》由会员分享,可在线阅读,更多相关《《c语言程序设计》(江宝钏著)实验三答案.doc(7页珍藏版)》请在金锄头文库上搜索。
1、3.5 实验三 选择结构程序设计一、实验目的与要求1. 理解C语言表示逻辑量的方法,学会正确使用逻辑运算符和逻辑表达式。2. 掌握利用if结构实现选择结构的方法。3. 掌握利用switch结构实现多分支选择结构。4 结合程序掌握一些简单的算法,学习调试程序5 实验4学时二、实验内容1程序改错题改正下面程序中的错误。输入实数x,计算并输出下列分段函数f(x)的值(保留1位小数)。 输入输出示例1(改正后程序的运行结果)Enter x:100f(100.00)= 0.1输入输出示例2(改正后程序的运行结果)Enter x:23f(23.00)= 23.0源程序(有错误的程序)#include#in
2、cludevoid main(void)double x;printf(Enter x: n);scanf(=%f, x);if (x = 100) y = 1/sqrt(x)else (x != 100) y = x;printf(f(%.2f) = %.1fn,x,y);答:#include #include void main(void) double x,y; printf(Enter x:n); scanf(%lf,&x); if (x=100)y = 1/sqrt(x); else y= x;printf(f(%.2lf)=%.1lfn,x,y); 2一般编程题编程题1 输入任意三
3、个整数a,b,c,求3个数中的最大值和最小值。答:#include void main() int a,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(最小值为:%dn,a); printf(最大值为:%dn,c);编程题2输入x,计算并输出下面分段函数f(x)的值(保留2位小数)。请调用sqrt函数求平方根,调用pow函数求幂。 输入输出示例(共运行3次)Enter x:10f(10.00) = 3.1
4、6Enter x:0.5f(0.50) = 2.75Enter x:0f(0.00) = 0.00成本答:#include#includevoid main(void)double x,y;printf(Enter x:n);scanf(%lf,&x);if (x0)y=pow(1+x,2)+2*x+1/x;elsey=sqrt(x);printf(f(%.2f)=%.2fn,x,y); 编程题3有一函数: x (-5x0) y= x-1 (x=0) x+1 (0x10)编写程序,要求用scanf函数输入x的值,输出y的值。具体要求如下:(1)用if语句实现分支,自变量和函数值均用实数类型。(
5、2)自变量用scanf函数输入,给一些输入提示。(3)运行程序,输入x的值(分别为-5x0,x=0,0x10)三种情况,检查输出的y值是否正确。答:#include#includevoid main(int)double x,y;printf(Enter x:n);scanf(%lf,&x);if (x0&x-5&x0)y=x; printf(f(%.2f)=%.2fn,x,y); 编程题4 某服装店经营成套服装的买卖,同时也允许单件销售。若一次购买不少于70套,则每套90元;若不足70套,则每套110元;只买上衣每件70元;只买裤子每条60元。请编写程序假设用户买入x件上衣和y条裤子,请编写
6、程序计算相应的应付款是多少?#include#includevoid main(int) double x,y,z;printf(输入上衣x件,裤子y件:n);scanf(%lf%lf,&x,&y);if (x=y&y=70) z=90*y+70*(x-y); else if (y=x&x=70)z=90*x+60*(y-x); else if (xy&yx&x70)z=110*x+60*y-x; printf(应付:%.3f(元)n,z);编程题5编写程序实现:输入一个整数,判断它能否被3 、5 、7整除,同时输出如下信息。(1) 能同时被3 、5 、7整除;(2) 能同时被其中的哪二个数整
7、除;(3) 能被其中的哪一个数整除;(4) 不能被3 、5 、7任一个数整除。答:#include void main() int a; printf(请输入一个整数:); scanf(%d,&a); if (a%3=0) printf(n能被3整除n); else printf(n不能被3整除n); if (a%5=0)printf(n能被5整除n);else printf(n不能被5整除n); if (a%7=0)printf(n能被7整除n);else printf(n不能被7整除n);3较难编程题编程题1请用switch语句编程计算员工每月的薪水。(exph3_1.cpp) 已知某公司
8、员工的保底薪水为500,某月所接工程的利润profit(整数)与提成的关系如下(计量单位:元): profit1000 没有提成;1000profit2000提成10%;2000profit5000提成15%;5000profit10000提成20%;10000profit 提成25%。分析:为使用switch语句,必须将利润profit与提成的关系,转换成某些整数与提成的关系。分析本题可知,提成的变化点都是1000的整数倍(1000、2000、5000、),如果将利润profit整除1000,则相邻两个区间的重叠。为解决相邻两个区间的重叠问题,最简单的方法就是:利润profit先减1(最小增量),然后再整除1000即可: profi