Res春学期C语言上机练习参考答案汇总.docx
《Res春学期C语言上机练习参考答案汇总.docx》由会员分享,可在线阅读,更多相关《Res春学期C语言上机练习参考答案汇总.docx(93页珍藏版)》请在冰豆网上搜索。
Res春学期C语言上机练习参考答案汇总
第2周(M2)2
20011求华氏温度100°F对应的摄氏温度。
2
20012求华氏温度150°F对应的摄氏温度。
3
20013求摄氏温度26°C对应的华氏温度。
3
20015当n为152时,分别求出n的个位数字(digit1)、十位数字(digit2)和百位数字(digit3)的值。
3
20026输入2个整数num1和num2,计算并输出它们的和、差、积、商与余数。
4
第3周(M3)5
20031求1+2+3+......+100(调试示例error02_5)5
20032求m+(m+1)+(m+2)+......+1005
20033求1/m+1/(m+1)+1/(m+2)+......+1/n6
20034求1+1/3+1/5+......的前n项和7
20035求1-1/4+1/7-1/10+……的前n项之和7
20036输出华氏-摄氏温度转换表(改错题error02_6)8
20038求x的n次幂9
20041生成3的乘方表10
20044求100^0.5+101^0.5+……+1000^0.510
20053计算物体自由下落的距离11
20056计算分段函数11
20061阶梯电价12
20062求m*m+1/m+(m+1)*(m+1)+1/(m+1)+(m+2)*(m+2)+1/(m+2)+......+n*n+1/n13
20063求1-2/3+3/5-4/7+5/9-6/11+……14
20064求2^1+2^2+2^3+……+2^n15
第4周(M4)15
10007显示图案(复习printf()的字符串输出)15
20042生成阶乘表16
20043使用函数求n!
/(m!
*(n-m)!
)16
20054求平均值17
20057求1+1/2+1/3+......+1/n18
20065求0!
+1!
+2!
+……+n!
18
40015求最小值19
40018求a+aa+aaa+aa…a20
第5周(M5)21
30001求一元二次方程的根21
30002求分段函数的值23
30003分类统计字符23
30004显示五级记分制成绩所对应的百分制成绩区间(使用switch)24
30005显示水果的价格(使用switch)25
30007求三角形的面积和周长27
30008计算个人所得税28
30051判断闰年29
30052统计学生平均成绩与及格人数30
30053分段计算水费(使用嵌套的if-else语句)31
第6周(M6)32
40011求最小公倍数和最大公约数(调试示例error04_1)32
40012求1-1/4+1/7-1/10+1/13-1/16+……33
40014求整数的位数34
40023换硬币35
40024找出各位数字的立方和等于它本身的数36
40025找完数(改错题error04_2)38
40027从高位开始逐位输出一个整数的各位数字(选作)39
40052判断素数40
40053逆序输出整数41
40054输出斐波那契序列42
第7周(M7)42
50002使用函数判断数的符号42
50003使用函数求奇数和43
50005使用函数统计素数并求和44
50006使用函数统计一个整数中数字的个数45
50007使用函数找水仙花数46
50009使用函数求余弦函数的近似值48
50052使用函数找最大值49
50062使用函数输出指定范围内的Fibonacci数50
50063使用函数找出指定范围内的完数51
第8周(M8)52
40013求奇数和52
40062求x+x*x/2!
+x*x*x/3!
+x*x*x*x/4!
+……的值53
50004使用函数计算两点间的距离54
50061使用函数求a+aa+aaa+aa…a55
60002整数的十进制、八进制和十六进制表现形式56
60003分类统计字符57
60006验证歌德巴赫猜想58
60007使用函数输出整数的逆序数59
60009统计单词60
60062简单计算器61
第2周(M2)
20011求华氏温度100°F对应的摄氏温度。
计算公式如下,c=5*(f-32)/9,式中:
c表示摄氏温度,f表示华氏温度。
(源程序error02_1.cpp)
输入输出示例:
fahr=100,celsius=37
#include
intmain(void)
{
intcelsius,fahr;
/*---------*/
fahr=100;
celsius=5*(fahr-32)/9;
printf("fahr=%d,celsius=%d\n",fahr,celsius);
return0;
}
20012求华氏温度150°F对应的摄氏温度。
计算公式:
C=5*F/9-5*32/9,式中:
C表示摄氏温度,F表示华氏温度。
输入输出示例:
fahr=150,celsius=66
#include
intmain(void)
{
intcelsius,fahr;
/*---------*/
fahr=150;
celsius=5*fahr/9-5*32/9;
printf("fahr=%d,celsius=%d\n",fahr,celsius);
return0;
}
20013求摄氏温度26°C对应的华氏温度。
计算公式如下,f=9*c/5+32,式中:
c表示摄氏温度,f表示华氏温度。
输入输出示例:
celsius=26,fahr=78
#include
intmain(void)
{
intcelsius,fahr;
/*---------*/
celsius=26;
fahr=9*celsius/5+32;
printf("celsius=%d,fahr=%d\n",celsius,fahr);
return0;
}
20015当n为152时,分别求出n的个位数字(digit1)、十位数字(digit2)和百位数字(digit3)的值。
输入输出示例:
整数152的个位数字是2,十位数字是5,百位数字是1
#include
intmain(void)
{
intn,digit1,digit2,digit3;
n=152;
digit1=n%10;
digit2=(n/10)%10;
digit3=n/100;
/*---------*/
printf("整数%d的个位数字是%d,十位数字是%d,百位数字是%d\n",n,digit1,digit2,digit3);
return0;
}
20026输入2个整数num1和num2,计算并输出它们的和、差、积、商与余数。
输出两个整数的余数可以用printf("%d%%%d=%d\n",num1,num2,num1%num2);
输入输出示例:
括号内是说明
输入
53(num1=5,num2=3)
输出
5+3=8
5-3=2
5*3=15
5/3=1
5%3=2
#include
intmain(void)
{
intnum1,num2;
/*---------*/
scanf("%d%d",&num1,&num2);
printf("%d+%d=%d\n",num1,num2,num1+num2);
printf("%d-%d=%d\n",num1,num2,num1-num2);
printf("%d*%d=%d\n",num1,num2,num1*num2);
printf("%d/%d=%d\n",num1,num2,num1/num2);
printf("%d%%%d=%d\n",num1,num2,num1%num2);
return0;
}
第3周(M3)
20031求1+2+3+......+100(调试示例error02_5)
计算表达式1+2+3+......+100的值。
输出示例:
sum=5050
#include
intmain(void)
{
inti,sum;
sum=0;
for(i=1;i<=100;i++)
sum=sum+i;
printf("sum=%d\n",sum);
}
20032求m+(m+1)+(m+2)+......+100
输入一个正整数repeat(0输入一个正整数m(0<=m<=100),计算表达式m+(m+1)+(m+2)+......+100的值。
输入输出示例:
括号内为说明
输入
3(repeat=3)
0(计算0+1+2+...+100)
10(计算10+11+12+...+100)
50(计算50+51+52+...+100)
输出
sum=5050
sum=5005
sum=3825
#include
intmain(void)
{
inti,m,sum;
intrepeat,ri;
scanf("%d",&repeat);
for(ri=1;ri<=repeat;ri++){
scanf("%d",&m);
sum=0;
for(i=m;i<=100;i++)
sum=sum+i;
/*---------*/
printf("sum=%d\n",sum);
}
}
20033求1/m+1/(m+1)+1/(m+2)+......+1/n
输入一个正整数repeat(0输入2个正整数m和n(m<=n),计算表达式1/m+1/(m+1)+1/(m+2)+......+1/n的值,输出时保留3位小数。
输入输出示例:
括号内为说明
输入
3(repeat=3)
515(计算1/5+1/6+1/7+...+1/15)
1020(计算1/10+1/11+1/12+...+1/20)
13(计算1+1/2+1/3)
输出
sum=1.235
sum=0.769
sum=1.833
#include
intmain(void)
{
inti,m,n;
intrepeat,ri;
doublesum;
scanf("%d",&repeat);
for(ri=1;ri<=repeat;ri++){
scanf("%d%d",&m,&n);
sum=0;
for(i=m;i<=n;i++)
sum=sum+1.0/i;
printf("sum=%.3f\n",sum);
}
}
20034求1+1/3+1/5+......的前n项和
输入一个正整数repeat(0输入一个正整数n,计算表达式1+1/3+1/5+......的前n项之和,输出时保留6位小数。
输入输出示例:
括号内为说明
输入
2(repeat=2)
5(计算1+1/3+1/5+1/7+1/9)
23(计算1+1/3+1/5+...+1/45)
输出
sum=1.787302
sum=2.549541
#include
intmain(void)
{
inti,n;
intdenominator;
intrepeat,ri;
doublesum;
scanf("%d",&repeat);
for(ri=1;ri<=repeat;ri++){
scanf("%d",&n);
sum=0;
denominator=1;
for(i=1;i<=n;i++)
{
sum=sum+1.0/denominator;
denominator=denominator+2;
}
printf("sum=%.6f\n",sum);
}
}
20035求1-1/4+1/7-1/10+……的前n项之和
输入一个正整数repeat(0读入一个正整数n,计算1-1/4+1/7-1/10+……的前n项之和,输出时保留3位小数。
输入输出示例:
括号内是说明
输入
2(repeat=2)
3
10
输出
sum=0.893
sum=0.819
#include
intmain(void)
{
intflag,i,n,t;
intrepeat,ri;
doubleitem,sum;
scanf("%d",&repeat);
for(ri=1;ri<=repeat;ri++){
scanf("%d",&n);
sum=0;
flag=1;
t=1;
for(i=1;i<=n;i++){
item=flag*1.0/t;
sum=sum+item;
flag=-flag;
t=t+3;
}/*---------*/
printf("sum=%.3f\n",sum);
}
}
20036输出华氏-摄氏温度转换表(改错题error02_6)
输入一个正整数repeat(0读入2个整数lower和upper,输出一张华氏—摄氏温度转换表,华氏温度的取值范围是[lower,upper],每次增加2F。
计算公式:
c=5*(f-32)/9,其中:
c表示摄氏温度,f表示华氏温度。
输出请使用语句printf("%3.0f%6.1f\n",fahr,celsius);
输入输出示例:
括号内是说明
输入
2(repeat=2)
3235(lower=32,upper=35)
4030(lower=40,upper=30)
输出
fahrcelsius
320.0
341.1
fahrCelsius
#include
intmain(void)
{
intlower,upper;
intrepeat,ri;
doublecelsius,fahr;
scanf("%d",&repeat);
for(ri=1;ri<=repeat;ri++){
scanf("%d%d",&lower,&upper);
printf("fahrcelsius\n");
for(fahr=lower;fahr<=upper;fahr++,fahr++)
{
celsius=5*(fahr-32)/9;
printf("%3.0f%6.1f\n",fahr,celsius);
}/*---------*/
}
}
20038求x的n次幂
输入一个正整数repeat(0读入1个实数x和正整数n(n<=50),计算并输出x的n次幂(保留2位小数),不允许调用pow函数求幂。
输入输出示例:
括号内是说明
输入
2(repeat=2)
1.52(x=1.5,n=2)
27(x=2,n=7)
输出
2.25
128.00
#include
intmain(void)
{
inti,n;
intrepeat,ri;
doublemypow,x;
scanf("%d",&repeat);
for(ri=1;ri<=repeat;ri++){
scanf("%lf%d",&x,&n);
mypow=1;
for(i=1;i<=n;i++)
mypow=mypow*x;
/*---------*/
printf("%.2f\n",mypow);
}
}
20041生成3的乘方表
输入一个正整数n,生成一张3的乘方表,输出3^0~3^n的值,可调用幂函数计算3的乘方。
输出使用语句printf("pow(3,%d)=%.0f\n",i,mypow);
输入输出示例:
括号内是说明
输入
3(n=3)
输出
pow(3,0)=1
pow(3,1)=3
pow(3,2)=9
pow(3,3)=27
#include
#include
intmain(void)
{
inti,n;
doublemypow;
scanf("%d",&n);
for(i=0;i<=n;i++){
mypow=pow(3,i);
printf("pow(3,%d)=%.0f\n",i,mypow);
}
}
20044求100^0.5+101^0.5+……+1000^0.5
计算100^0.5+101^0.5+……+1000^0.5的值(保留2位小数),可调用sqrt函数计算平方根。
输入输出示例:
括号内是说明
输出
sum=20435.99
#include
#include
intmain(void)
{
inti;
doublesum;
sum=0;
for(i=100;i<=1000;i++)
sum=sum+sqrt(i);
/*---------*/
printf("sum=%.2f\n",sum);
}
20053计算物体自由下落的距离
一个物体从100m的高空自由落下,编写程序,求它在前3s内下落的垂直距离(结果保留2位小数)。
设重力加速度为10米/秒^2。
#include
intmain(void)
{
doubleheight;
height=0.5*10*3*3;/*---------*/
printf("height=%.2f\n",height);
}
20056计算分段函数
输入一个正整数repeat(0编写程序,输入x,计算并输出下列分段函数f(x)的值(保留2位小数),请调用sqrt()函数求平方根,调用pow()函数求幂。
当x>=0时,f(x)=x^0.5,当x小于0时,f(x)=x^5+2x+1/x。
输入输出示例:
括号内是说明
输入
3(repeat=3)
10(x=10)
-0.5(x=-0.5)
0(x=0)
输出
f(10.00)=3.16
f(-0.50)=-3.03
f(0.00)=0.00
#include
#include
intmain(void)
{
intrepeat,ri;
doublex,y;
scanf("%d",&repeat);
for(ri=1;ri<=repeat;ri++){
scanf("%lf",&x);
if(x>=0)y=sqrt(x);
elsey=pow(x,5)+2*x+1.0/x;
/*---------*/
printf("f(%.2f)=%.2f\n",x,y);
}
}
20061阶梯电价
输入一个正整数repeat(0为了提倡居民节约用电,某省电力公司执行"阶梯电价",安装一户一表的居民用户电价分为两个"阶梯":
月用电量50千瓦时以内的,电价为0.53元/千瓦时;超过50千瓦时的用电量,电价上调0.05元/千瓦时。
输入用户的月用电量e(千瓦时),计算并输出该用户应支付的电费(元),结果保留2位小数。
输入输出示例:
括号内是说明
输入
2(repeat=2)
10(e=10)
100(e=100)
输出
cost=5.30
cost=55.50
#include
intmain(void)
{
intrepeat,ri;
doublecost,e;
scanf("%d",&repeat);
for(ri=1;ri<=repeat;ri++){
scanf("%lf",&e);
if(e<=50)
cost=e*0.53;
else
cost=0.53*50+(e-50)*0.58;
/*---------*/
printf("cost=%.2f\n",cost);
}
}
20062求m*m+1/m+(m+1)*(m+1)+1/(m+1)+(m+2)*(m+2)+1/(m+2)+......+n*n+1/n
输入一个正整数repeat(0输入两个正整数m和n(m<=n),求sum=m*m+1/m+(m+1)*(m+1)+1/(m+1)+(m+2)*(m+2)+1/(m+2)......+n*n+1/n,结果保留6位小数。
输入输出示例:
括号内为说明
输入
3(repeat=3)
12(m=1,n=2)
25(m=2,n=5)
510(m=5,n=10)
输出
sum=6.500000
sum=55.283333
sum=355.845635
#include
intmain(void)
{
inti,m,n