浙江大学C程汇总题库更新.docx
《浙江大学C程汇总题库更新.docx》由会员分享,可在线阅读,更多相关《浙江大学C程汇总题库更新.docx(178页珍藏版)》请在冰豆网上搜索。
浙江大学C程汇总题库更新
c语言程序设计题目及答案
20021程序填空,不要改变与输入输出有关的语句。
输入一个正整数repeat(0输入x,计算并输出下列分段函数f(x)的值(保留1位小数)。
当x不等于0时,y=f(x)=1/x,当x等于0时,y=f(x)=0。
输入输出示例:
括号内是说明
输入
2(repeat=2)
10(x=10)
0(x=0)
输出
f(10.00)=0.1
f(0.00)=0.0
#include
intmain(void)
{
intrepeat,ri;
doublex,y;
scanf("%d",&repeat);
for(ri=1;ri<=repeat;ri++){
scanf("%lf",&x);
/*---------*/
if(x!
=0)y=1/x;
elsey=0;
printf("f(%.2f)=%.1f\n",x,y);
}
}
20022程序填空,不要改变与输入输出有关的语句。
输入华氏温度,输出对应的摄氏温度。
计算公式:
c=5*(f-32)/9,式中:
c表示摄氏温度,f表示华氏温度。
输入输出示例:
括号内为说明
输入
150(fahr=150)
输出
celsius=65
#include
intmain(void)
{
intcelsius,fahr;
/*---------*/
scanf(“%d”,&fahr);
celsius=5.0*(fahr-32)/9;
printf("celsius=%d\n",celsius);
}
20023程序填空,不要改变与输入输出有关的语句。
输入存款金额money、存期year和年利率rate,根据下列公式计算存款到期时的利息interest(税前),输出时保留2位小数。
interest=money(1+rate)^year-money
输入输出示例:
括号内为说明
输入
100030.025(money=1000,year=3,rate=0.025)
输出
interest=76.89
#include
#include
intmain(void)
{
intmoney,year;
doubleinterest,rate;
/*---------*/
scanf(“%d%d%lf”,&money,&year,&rate);
interest=money*pow((1+rate),year)-money;
printf("interest=%.2f\n",interest);
}
20024程序填空,不要改变与输入输出有关的语句。
输入一个正整数repeat(0输入x,计算并输出下列分段函数f(x)的值(保留2位小数),请调用sqrt函数求平方根,调用pow函数求幂。
当x>=0时,f(x)=x^0.5,当x小于0时,f(x)=(x+1)^2+2x+1/x。
输入输出示例:
括号内是说明
输入
3(repeat=3)
10
-0.5
0
输出
f(10.00)=3.16
f(-0.50)=-2.75
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+1),2)+2*x+1/x;
printf("f(%.2f)=%.2f\n",x,y);
}
}
20025程序填空,不要改变与输入输出有关的语句。
输入一个正整数repeat(0输入实数x,计算并输出下列分段函数f(x)的值,输出时保留1位小数。
当x不等于10时,y=f(x)=x,当x等于10时,y=f(x)=1/x。
输入输出示例:
括号内是说明
输入
2(repeat=2)
10
234
输出
f(10.0)=0.1
f(234.0)=234.0
#include
intmain(void)
{
intrepeat,ri;
doublex,y;
scanf("%d",&repeat);
for(ri=1;ri<=repeat;ri++){
/*---------*/
scanf("%lf",&x);
if(x!
=10)y=x;
elsey=1/x;
printf("f(%.1f)=%.1f\n",x,y);
}
}
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;
}
20031程序填空,不要改变与输入输出有关的语句。
计算表达式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程序填空,不要改变与输入输出有关的语句。
输入一个正整数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程序填空,不要改变与输入输出有关的语句。
输入一个正整数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程序填空,不要改变与输入输出有关的语句。
输入一个正整数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;
intrepeat,ri;
doublesum;
scanf("%d",&repeat);
for(ri=1;ri<=repeat;ri++){
scanf("%d",&n);
/*---------*/
sum=0;
for(i=1;i<=n;i++)
sum=sum+1.0/(2*i-1);
printf("sum=%.6f\n",sum);
}
}
20035程序填空,不要改变与输入输出有关的语句。
输入一个正整数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;item=0;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程序填空,不要改变与输入输出有关的语句。
输入一个正整数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+2){
celsius=5*(fahr-32)/9;
printf("%3.0f%6.1f\n",fahr,celsius);
}
}
}
20037程序填空,不要改变与输入输出有关的语句。
输入一个正整数repeat(0输入2个正整数m和n,计算m!
+n!
。
输入输出示例:
括号内是说明
输入:
2(repeat=2)
14(m=1,n=4)
38(m=3,n=8)
输出:
1!
+4!
=25
3!
+8!
=40326
#include"stdio.h"
intmain(void)
{
inti,m,n;
intrepeat,ri;
doublefm,fn;
scanf("%d",&repeat);
for(ri=1;ri<=repeat;ri++){
scanf("%d%d",&m,&n);
/*---------*/
fm=fn=1;
for(i=1;i<=m;i++)
fm=fm*i;
for(i=1;i<=n;i++)
fn=fn*i;
printf("%d!
+%d!
=%.0f\n",m,n,fm+fn);
}
}
20038程序填空,不要改变与输入输出有关的语句。
输入一个正整数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程序填空,不要改变与输入输出有关的语句。
输入一个正整数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);
}
return0;
}
20042程序填空,不要改变与输入输出有关的语句。
输入一个正整数n,生成一张阶乘表,输出1!
~n!
的值,要求定义和调用函数fact(n)计算n!
,函数类型为double。
输出使用语句printf("%d!
=%.0f\n",i,myfact);
输入输出示例:
括号内是说明
输入
3(n=3)
输出
1!
=1
2!
=2
3!
=6
#include
intmain(void)
{
inti,n;
doublemyfact;
doublefact(intn);
scanf("%d",&n);
/*---------*/
for(i=1;i<=n;i++){
myfact=fact(i);
printf("%d!
=%.0f\n",i,myfact);
}
return0;
}
/*---------*/
doublefact(intn)
{
inti;
doublef=1;
for(i=1;i<=n;i++)
f=f*i;
returnf;
}
20043程序填空,不要改变与输入输出有关的语句。
输入一个正整数repeat(0输入2个正整数m和n(m<=n),计算n!
/(m!
*(n-m)!
)。
要求定义并调用函数fact(n)计算n的阶乘,其中n的类型是int,函数类型是double。
例:
括号内是说明
输入:
2(repeat=2)
27(m=2,n=7)
512(m=5,n=12)
输出:
result=21
result=792
#include"stdio.h"
doublefact(intn);
intmain(void)
{
intm,n;
intrepeat,ri;
doubles;
scanf("%d",&repeat);
for(ri=1;ri<=repeat;ri++){
scanf("%d%d",&m,&n);
/*---------*/
s=fact(n)/(fact(m)*fact(n-m));
printf("result=%.0f\n",s);
}
return0;
}
/*---------*/
doublefact(intn)
{
inti;
doublef=1;
for(i=1;i<=n;i++)
f=f*i;
returnf;
}
20044程序填空,不要改变与输入输出有关的语句。
计算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);
}
30001程序填空,不要改变与输入输出有关的语句。
输入一个正整数repeat(0输入参数a,b,c,求一元二次方程a*x*x+b*x+c=0的根,结果保留2位小数。
输出使用以下语句:
printf("参数都为零,方程无意义!
\n");
printf("a和b为0,c不为0,方程不成立\n");
printf("x=%0.2f\n",-c/b);
printf("x1=%0.2f\n",(-b+sqrt(d))/(2*a));
printf("x2=%0.2f\n",(-b-sqrt(d))/(2*a));
printf("x1=%0.2f+%0.2fi\n",-b/(2*a),sqrt(-d)/(2*a));
printf("x2=%0.2f-%0.2fi\n",-b/(2*a),sqrt(-d)/(2*a));
输入输出示例:
括号内为说明
输入:
5(repeat=5)
000(a=0,b=0,c=0)
001(a=0,b=0,c=1)
024(a=0,b=2,c=4)
2.18.93.5(a=2.1,b=8.9,c=3.5)
123(a=1,b=2,c=3)
输出:
参数都为零,方程无意义!
a和b为0,c不为0,方程不成立
x=-2.00
x1=-0.44
x2=-3.80
x1=-1.00+1.41i
x2=-1.00-1.41i
#include
#include
intmain(void)
{
intrepeat,ri;
doublea,b,c,d;
scanf("%d",&repeat);
for(ri=1;ri<=repeat;ri++){
scanf("%lf%lf%lf",&a,&b,&c);
/*---------*/
d=b*b-4*a*c;
if(a==0)
if(b==0)
if(c==0)
printf("