《C语言程序设计》(江宝钏著)实验三答案_c语言程序设计实验三
《C语言程序设计》(江宝钏著)实验三答案由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“c语言程序设计实验三”。
3.5 实验三 选择结构程序设计
一、实验目的与要求
1.理解C语言表示逻辑量的方法,学会正确使用逻辑运算符和逻辑表达式。
2.掌握利用if结构实现选择结构的方法。
3.掌握利用switch结构实现多分支选择结构。
4. 结合程序掌握一些简单的算法,学习调试程序
5. 实验4学时
二、实验内容
1.程序改错题
改正下面程序中的错误。输入实数x,计算并输出下列分段函数f(x)的值(保留1位小数)。1
x(x100)
yf(x)
x(x100)输入输出示例1(改正后程序的运行结果)
Enter x:f(100.00)= 0.1
输入输出示例2(改正后程序的运行结果)
Enter x:f(23.00)= 23.0
源程序(有错误的程序)
#include
#include
void main(void)
{
double x;
printf(“Enterx: 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(“Enterx:n”);
scanf(“%lf”,&x);
if(x=100)
y = 1/sqrt(x);
else
y= x;
printf(“f(%.2lf)=%.1lfn”,x,y);
}
2.一般编程题
编程题1
输入任意三个整数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函数求幂。
2(x1)2x1
x(x0)
f(x)
x(x0)
输入输出示例(共运行3次)
Enter x:f(10.00)=3.16
Enter xf(-0.50)=-2.75
Enter x:f(0.00)=0.00
成本
答:
#include
#include
void main()
{
编程题3 double x,y;printf(“Enterx:n”);scanf(“%lf”,&x);if(x
有一函数:
x(-5
y=x-1(x=0)
x+1(0
编写程序,要求用scanf函数输入x的值,输出y的值。
具体要求如下:
(1)用if语句实现分支,自变量和函数值均用实数类型。
(2)自变量用scanf函数输入,给一些输入提示。
(3)运行程序,输入x的值(分别为-5
答:
#include
#include
void main()
{
double x,y;
printf(“Enterx:n”);
scanf(“%lf”,&x);
if(x>0&&x
y=x+1;
else if(x==0)
y=x-1;
else if(x>-5&&x
y=x;
printf(“f(%.2f)=%.2fn”,x,y);
}
编程题4
某服装店经营成套服装的买卖,同时也允许单件销售。若一次购买不少于70套,则每套90元;若不足70套,则每套110元;只买上衣每件70元;只买裤子每条60元。请编写程序假设用户买入x件上衣和y条裤子,请编写程序计算相应的应付款是多少?
答:
#include
#include
void main()
{
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(x>y&&y
z=110*y+70*(x-y);
else if(y>x&&x
z=110*x+60*y-x;
printf(“应付:%.3f(元)n”,z);
}
编程题5
编写程序实现:输入一个整数,判断它能否被3、5、7整除,同时输出如下信息。
(1)能同时被3、5、7整除;
(2)能同时被其中的哪二个数整除;
(3)能被其中的哪一个数整除;
(4)不能被3、5、7任一个数整除。
答:
#include
void main()
{
int x,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){ case 100:printf(“能被5,7整除n”);case 10 :printf(“能被3,7整除n”);case 1:printf(“能被3,5整除n”);case 110:printf(“能被7整除n”);case 101:printf(“能被5整除n”);case 11 :printf(“能被3整除n”);case 111:printf(“不能被3,5,7整除n”);case 0: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对应0
1000<profit≤2000对应1
2000<profit≤5000对应2、3、4
5000<profit≤10000对应5、6、7、8、9
10000<profit对应10、11、12、……
答:
#include
void main()
{
double p,m,t,q;
int n;
printf(“某月所接工程利润为:”);printf(“nn”);scanf(“%lf”,&p);m=p-1;n=(int)m/1000;switch(n){ case 0 :printf(“n薪水为:500n”);break;case 1 :q=500+p*0.1;printf(“n薪水为:%.2lfn”,q);break;case 2 : case 3 : case 4 :q=500+p*0.15;printf(“n薪水为:%.2lfn”,q);break;case 5 : case 6 : case 7 : case 8 :
case 9 :q=500+p*0.2;printf(“n薪水为:%.2lfn”,q);break;default:q=500+p*0.25;printf(“n薪水为:%.2lfn”,q);
}
}
编程题2
编写程序实现如下功能:输入二个运算数(exp1,exp2)和一个运算符(op),计算表达式exp1 op exp2的值,其中OP可以为+、-、*、/、%五个符号中的任一种(提示:用switch语句实现)。
答:
#include
void main()
{
float exp1,exp2,x;
char op;
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(“nnn%5.2f%c%5.2f=%5.2fnnn”,exp1,op,exp2,x);}
+