实验四过程控制的程序设计.docx
《实验四过程控制的程序设计.docx》由会员分享,可在线阅读,更多相关《实验四过程控制的程序设计.docx(16页珍藏版)》请在冰豆网上搜索。
实验四过程控制的程序设计
实验内容
任务1改错分段函数的计算
1.打开程序文件error4-6.cpp。
#include
intmain(void)
{doublex;
printf("Enterx:
\n");
scanf("=%f",x);
if(x>0){
flag=1;
}
elseif(x=0){
flag=0;
}
else(x<0)
flag=-1;
printf("f(%.2f)=%d\n"xflag);
return0;}
2.程序的功能是输入一个浮点数x,如果x大于0,flag等于1,如果x小于0,flag等于-1,如果x等于0,flag等于0。
请根据VC的错误信息改正错误,使程序可以运行。
3.测试运行结果,找出逻辑错误,使程序能按测试用例正确运行。
测试用例1:
测试用例2:
测试用例3:
Enterx:
938.23
f(938.23)=1
Enterx:
0
f(0.00)=0
Enterx:
-737.1
f(-737.10)=-1
任务2改错两数排序
1.打开程序文件error4-7.cpp。
#include
intmain(void)
{
doublea,b,c;
printf("Entera,b:
\n");
scanf("%lf,%lf",a,b);
if(a>b)
c=a;a=b;b=c;
printf("a=%lf,b=%lf\n"a,b);
return0;
}
2.程序的功能是输入两数到变量a,b,比较a、b,使a中存放较小数,b中存放较大数。
请根据VC的compile和link错误信息改正错误,使程序可以运行。
3.测试运行结果
Entera,b:
24.5,14.5
a=14.5b=24.5
任务3改错级数求和
1.打开程序文件error4-8.cpp。
#include
intmain()
{intn;
doubles,t,q;
printf("q=");
scanf("%lf",&q);
n=1;
while(s{t=s;
s=s+(n+1)/n;
n++;
}
printf("n=%d:
%f\n",n,s);
return0;}
2.程序的功能是计算并输出下列级数的前N项之和,直到SN+1大于一个q为止,q的值由键盘输入。
error3-5.cpp没有语法错误,但存在逻辑错误,请根据下面的测试用例,定位逻辑错误,改正并输出正确结构。
3.测试运行结果
q=50
n=45:
49.394948
任务4编程BMI体重指数
1.打开程序ex4_1.cpp,文件给出了部分代码,请根据注释提示完成划线部分语句,完整程序功能。
#include
intmain()
{floatweight,height;
floatBMI;
//1.输入体重和身高
printf("weight=");
scanf("%f",&weight);
printf("height=");
scanf("%f",&height);
//计算BMI
BMI=weight/()pow(height,2);
printf("BMI=%.2f,",BMI);
//根据BMI输出健康情况
if(BMI>=28)
printf("肥胖。
\n");
elseif()
printf("超重。
\n");
elseif()
printf("健康体重。
\n");
else
printf("轻体重。
\n");
return0;
}
2.任务描述:
BMI指数(BodyMassIndex)即身体质量指数,是与体内脂肪总量密切相关的指标,主要反映全身性超重和肥胖。
它的计算公式为:
BMI=体重(kg)/身高(m)的平方。
成年人身体质量按BMI指数分为:
轻体重(BMI<18.5)、健康体重(18.5≤BMI<24)、 超重(24≤BMI<28)、肥胖28≥BMI。
输入体重(Kg)和身高(m),计算身体质量指数BMI,并输出健康信息。
3.运行示例:
weight=56
height=1.60
BMI=21.87,健康体重
任务5编写程序公式计算
1.打开程序文件ex4_2.cpp,文件给出了部分代码,请根据注释提示完成划线部分语句,完整程序功能。
#include
#include
intmain()
{doubles;
intm;
printf("m=");
scanf("%d",&m);
for(inti=1;i<=m;)
s+=;
printf("s=%f\n",);
return0;
}
2.程序的功能是按下面的公式计算并输出s的值,m的值由键盘输入,m应是一个奇数,如果输入的是一个偶数,取小于m的最大奇数。
3.测试运行结果
m=20
s=4.505522
任务6编写程序计算所得税
创建一个程序文件ex4_3.cpp,输入月薪,输出个人所得税。
所得税计算参阅P63习题3程序题第2题
任务7编写程序取位算法应用
创建一个程序文件ex4_4.cpp,计算任意一个整数x的中a的出现次数,例如x为222723272,a为2,a在x中的出现次数为6。
任务8编写程序判闰年
创建一个程序文件ex4_5.cpp,输出21世纪所有的闰年。
任务9编写程序兑换钱币
创建一个程序文件ex4_6.cpp,用一张一元票换1分、2分和5分的硬币(至少各一枚),问有哪几种换法。
实验报告
任务1改错分段函数的计算
编码
compile和link错误信息改正后的源程序清单:
#include
intmain(void)
{intflag;
doublex;
printf("Enterx:
\n");
scanf("%lf",&x);
if(x>0){
flag=1;
}
elseif(x==0){
flag=0;
}
else{
flag=-1;
}
printf("f(%.2f)=%d\n",x,flag);
return0;
}
测试
测试用例一:
输入:
938.23
输出:
1
运行过程记录(截屏图):
测试用例二:
输入:
0
输出:
0
运行过程记录(截屏图):
测试用例三:
输入:
-737.1
输出:
-1
运行过程记录(截屏图):
任务2改错两数排序
编码
compile和link错误信息改正后的源程序清单:
#include
intmain(void)
{
doublea,b,c;
printf("Entera,b:
\n");
scanf("%lf,%lf",&a,&b);
if(a>b){
c=a;a=b;b=c;}
else{
a=a;b=b;
}
printf("a=%lf,b=%lf\n",a,b);
return0;
}
测试
测试用例一:
输入:
24.5,14.5
输出:
a=14.500000,b=24.500000
运行过程记录(截屏图):
测试用例二:
输入:
13,15
输出:
a=13.000000,b=15.000000
运行过程记录(截屏图):
测试用例三:
输入:
-3,-5
输出:
a=-5.000000,b=-3.000000
运行过程记录(截屏图):
任务3改错级数求和
编码
compile和link错误信息改正后的源程序清单:
#include
intmain()
{intn;
doubles,t,q;
printf("q=");
scanf("%lf",&q);
n=1;
s=0;
while(s<=q-1)
{
t=s;
s=s+1.0*(n+1)/n;
n=n+1;
}
printf("n=%d,%lf\n",n-1,s);
return0;
}
测试
测试用例:
输入:
50
输出:
45,49.394948
运行过程记录(截屏图):
任务4编程BMI体重指数
编码
源程序清单:
#include
#include
intmain()
{floatweight,height;
floatBMI;
//1.输入体重和身高
printf("weight=");
scanf("%f",&weight);
printf("height=");
scanf("%f",&height);
//计算BMI
BMI=weight/(float)pow(height,2);
printf("BMI=%.2f,",BMI);
//根据BMI输出健康情况
if(BMI>=28)
printf("肥胖。
\n");
elseif(BMI>=24)
printf("超重。
\n");
elseif(BMI>=18.5)
printf("健康体重。
\n");
else
printf("轻体重。
\n");
return0;
}
测试
测试用例设计:
(自行增减)
输入:
weight=56
Height=1.60
输出:
BMI=21.87,健康体重
输入:
weight=78
Height=1.80
输出:
BMI=24.07,超重。
运行过程记录(截屏图):
(只需一次)
任务5编写程序公式计算
编码
源程序清单:
#include
#include
intmain()
{doubles,a,t;
intm;
printf("m=");
scanf("%d",&m);
s=0;
a=0;
if(m/2!
=0){
m=m-1;}
for(inti=1;i<=m;i=i+2)
{t=log(i*1.0);
a=a+t;
s=sqrt(a*1.0);}
printf("s=%f\n",s);
return0;
}
测试
测试用例设计:
(自行增减)
输入:
m=20
输出:
s=4.505522
输入:
m=21
输出:
s=4.505522
运行过程记录(截屏图):
(只需一次)
任务6编写程序计算所得税
编码
源程序清单:
#include
intmain()
{ints,d;
doublea,b;
printf("请输入月薪s:
");
scanf("%d",&s);
if(s<=3500)
{a=0;
d=0;}
elseif(s>3500&&s<=5000)
{a=0.03;
d=0;}
elseif(s>5000&&s<=8000)
{a=0.10;
d=105;}
elseif(s>8000&&s<=12500)
{a=0.20;
d=555;}
elseif(s>12500&&s<=38500)
{a=0.25;
d=1005;}
elseif(s>38500&&s<=58500)
{a=0.30;
d=2755;}
elseif(s>58500&&s<=83500)
{a=0.35;
d=5505;}
else
{a=0.45;
d=13505;}
b=a*(s-3500)-d;
printf("应缴纳的个人所得税为%.2f元",b);
return0;
}
测试
测试用例设计:
(自行增减)
输入:
7000
输出:
245.00
输入:
4000
输出:
15.00
运行过程记录(截屏图):
(只需一次)
任务7编写程序取位算法应用
编码
源程序清单:
#include
intmain()
{inta,x,b,count=0;
printf("请输入1个数a:
");
scanf("%d",&a);
printf("请输入1组数x:
");
scanf("%d",&x);
if(x<0)
x=-x;
while(x>0)
{b=x%10;
if(b==a)
{count++;}
x=x/10;}
printf("%d\n",count);
return0;
}
测试
测试用例设计:
(自行增减)
输入:
a=3,x=3444335
输出:
3
输入:
a=2,x=-2567222
输出:
4
运行过程记录(截屏图):
(只需一次)
任务8编写程序判闰年
编码
源程序清单:
#include
intmain()
{inti;
printf("二十一世纪的所有闰年:
\n");
for(i=2001;i<=2100;i++)
{if(i%4==0)
{if(i%100==0)
{if(i%400==0)
printf("%d\n",i);}
else
printf("%d\n",i);}}
return0;
}
运行过程记录(截屏图):
任务9编写程序兑换钱币
编码
源程序清单:
#include
intmain()
{inta,b,c;
printf("用一张一元票换1分、2分和5分的硬币(至少各一枚)的所有换法为:
\n");
{for(a=1;a<=93;a++)
for(b=1;b<=48;b++)
for(c=1;c<=19;c++)
if(a*1+b*2+c*5==100)
printf("%d张1分、%d张2分、%d张5分\n",a,b,c);}
return0;
}
运行过程记录(截屏图):