北工大C语言练习题答案doc.docx
《北工大C语言练习题答案doc.docx》由会员分享,可在线阅读,更多相关《北工大C语言练习题答案doc.docx(28页珍藏版)》请在冰豆网上搜索。
北工大C语言练习题答案doc
1求两个数的和与差
输入整数a和b,计算并输出a、b的和与差。
(例:
输入2-8;输出Thesumis-6Thedifferenceis10)
#include
intmain()
{inta,b,sum,diff;
scanf(H%d%dn,&a,&b);
sum=a+b;
diff=a-b;
printf(nThesumis%d\nH,sum);
printf(nThedifferenceis%d\n*\diff);}
2求平方根
输入1个实数x,计算并输出其平方根(保留1位小数)。
(例:
输入17;输出Thesquarerootof17.0is4.1)
#include
#include
intmain()
(doublex,root;
scanf(n%lfn,&x);
root=sqrt(x);
printf(nThesquarerootof%0.1fis%0.lf\nn,x,root);}
3华氏温度转换为摄氏温度
输入华氏温度f,计算并输出相应的摄氏温度c(保留2位小数)。
c=5/9(f-32).(例:
括号内是说明输入17.2(华氏温度)输出Thetempratureis-8.22)
#include
intmain()
(doublef,c;
scanf(H%lfn,&f);
c=5.0/9.0*(f-32.0);
printf(nThetempratureis%0.2f\nn,c);}4计算旅途时间
输入2个整数timel和time2,表示火车的出发时间和到达时间,计算并输出旅途时间。
有效的时间范围是0000到2359,不需要考虑出发时间晚于到达时间的情况。
例:
括号内是说明输入7121411(出发时间是7:
12,到达时间是14:
11)输出Thetrainjourneytimeis6hrs59mins.
#include
intmain()
(inttimel,time2,hours,mins;
scanf(n%d%dH,&timel,&time2);
timel=timel/100*60+timel%100;
time2=time2/100*60+time2%100;
hours=(time2-timel)/60;
mins=(time2-timel)%60;
printf(nThetrainjourneytimeis%dhrs%dminsAn'hours,mins);}
5大写字母转换成小写字母
输入一个大写英文字母,输出相应的小写字母。
例:
输入G输出g
#include
intmain()
(charch;
scanf(n%cn,&ch);
ch=ch・'A'+'a';
printf(n%c\nH,ch);}
6显示两级成绩
输入一个正整数repeat(0输入一个学生的数学成绩,如果它低于60,输出“Fail”,否则,输出“Pass"。
#include
intmain()
{intri,repeat;
intmark;
scanf(u%dn,&repeat);
for(ri=l;ri<=repeat;ri++){
canf(H%dn,&mark);
/**/
if(mark>59)
printf(nPass\nn);
else
printf(HFail\nH);)}
7找最小值
#include
intmain()
{intri,repeat;
inta,b,c,d,min;
scanf(u%dn,&repeat);
for(ri=l;ri<=repeat;ri++){
scanf(''%d%d%d%d'',&a,&b,&c,&d);
/**/
min=a;
if(min>b)min=b;
if(min>c)min=c;
if(min>d)min=d;
printf(nminis%d\n”,min);}}
8求三角形面积和周长
输入三角形的三条边a,b,c,如果能构成一个三角形,输出面积area和周长perimete宝留2位小数);否则,输出"Thesesidesdonotcorrespondtoavalidtriangle"。
在一个三角形中,任意两边之和大于第三边。
#include
intmain()
{intri,repeat;
floata,b,c,area,perimeter,s;
scanf(u%dn,&repeat);
for(ri=l;ri<=repeat;ri++)(
scanf(H%f%f%fn,&a,&b,&c);
/**/
if(a+b>c&&a-b(s=(a+b+c)/2;
area=sqrt(s*(s-a)*(s-b)*(s-c));
perimeter=a+b+c;
printf(''area=%f'',area);
print。
'perimeter=%f''‘perimeter);}
else
printf(nThesesidesdonotcorrespondtoavalidtriangle**);)}
9判断数的符号
输入整数x,若x大于0,y=l;若x等于0,y=0;否则,y=・l,最后输出y.
#include
intmain()
{intri,repeat;
intx,y;
scanf(u%dn,&repeat);
for(ri=l;ri<=repeat;ri++){
scanf(u%dn,&x);
/**/
if(x<0)y=-l;
elseif(x>0)y=l;
elsey=0;
printf(H%d\nH,y);))
10显示水果价格
以下4种水果的单价分别是3.00元/公斤,2.50元/公斤,4.10元/公斤,10.20元/公斤。
[1]apples[2]pears[3]oranges[4]grapes输入水果的编号,输出该水果的单价(保留2位小数)。
如果输入不正确
的编号,显示单价为0。
#include
intmain()
{intri,repeat;
intchoice;
floatprice;
scanf(n%d*\&repeat);
for(ri=l;ri<=repeat;ri++){
printf(n[l]apples\nn);
printf(n[2]pears\nn);
printf(n[3]oranges\nn);
printf(n[4]grapes\nH);
scanf(n%d*\&choice);
/**/
price=(choice==l)*3+(choice==2)*2.50+(choice==3)*4.1+(choice==4)*10.2;
printf(**price=%0.2f\n**,price);))
11读入1个正整数n(n<=100),计算并输出1+1/2+1/3++l/n(保留
3位小数)。
#include
intmain()
{intri,repeat;
inti,n;
floatsum;
scanf(n%du,&repeat);
for(ri=l;ri<=repeat;ri++){scanf(u%du,&n);
/**/
sum=0;
for(i=l;i<=n;i++)
sum=sum+1.0/i;
printf(u%.3f\nn,sum);}}
12求n的阶乘
#include
intmain()
{intri,repeat;
inti,n;
doublefact;
scanf(n%d*\&repeat);
for(ri=l;ri<=repeat;ri++)(
scanf(n%d*\&n);
/**/
fact=l;
for(i=l;i<=n;i++){fact=fact*i;}
prmtf(n%.0f\nH,fact);)}
13求X的n次幕
#include
intmain()
(intri,repeat;
inti,n;
doublex,mypow;
scanf(n%d*\&repeat);
for(ri=l;ri<=repeat;ri++)(
scanf(n%lf%dn,&x,&n);
/**/
mypow=l;
for(i=l;i<=n;i++)
mypow*=x;
printf(H%.2f\nn,mypow);}}
14摄氏华氏转换表
#include
intmain()
(intri,repeat;
intbegin,c,end,f;
scanf(n%d*\&repeat);
for(ri=l;ri<=repeat;ri++)(
scanf(n%d%dn,&begin,&end);
printf(nCelsiusFahrenheit\n'');
/**/
for(c=begin;c<=end;c++)
(
f=32+c*9/5;
printf(”%d%1Od\n”,c,f);}}}
15求整数的位数以及各位数之和
#include
intmain()
(intri,repeat;
intnumber,sum;
longin;
scanf(n%d*\&repeat);
for(ri=l;ri<=repeat;ri++)(
scanf(H%ldH,&in);
/**/
number=0;
sum=0;
if(in<0)in=-in;
do(
number++;
sum+=(in%10);
}while((in/=10)!
=0);
printf(nnumber=%d,sum=%d\n'',number,sum);}}
16求最大值
#include
intmain()
{intri,repeat;
inti,max,n,x;
scanf(n%dn,&repeat);
for(ri=l;ri<=repeat;ri++)(
scanf(n%dn,&n);
/**/
for(i=l;i<=n;i++)(
scanf(n%dn,&x);
if(i==l)max=x;
elseif(x>max)max=x;}
printf(”%d\n”,max);}}
17求a+aa+aaa+aa・・・a
#include
voidmain()
(intri,repeat;
inti,n;
longinta,sn,tn;
scanf(n%dn,&repeat);
for(ri=l;ri<=repeat;ri++)(
scanf(n%ld%dn,&a,&n);
/**/
tn=a;
sn=0;
for(i=l;i<=n;i++)(
sn+=tn;
tn=10*tn+a;}
printf(H%ld\nH,sn);})
18新入1个正整数n,计算s的前n项的和(保留4位小数)。
s=1+1/2!
+....+1/n!
#include''stdio.h''
intmain()
{intri,repeat;
inti,n;
floats,t;
scanf(n%dn,&repeat);
for(ri=l;ri<=repeat;ri++)(scanf(H%dH,&n);
/**/
s=0;
t=l;
for(i=l;i<=n;i++)(
t=t*l.O/i;
s=s+t;}
printf(H%0.4f\nn,s);))
19求奇数和
#include
intmain()
{intri,repeat;
intx,sum;
scanf(n%d*\&repeat);
for(ri=l;ri<=repeat;ri++)(scanf(n%d*\&x);
/**/
sum=0;
while(x>0)
{if(x%2!
=0)
sum=sum+x;
scanf(n%d*\&x);}
printf(n%d\nn,sum);)}
21统计素数并求和输入2个正整数m和n(l<=m,n<=500),统计并输出m和n之间的素数的个数以及这些素数的和。
#include''stdio.h''
#include''math.h''
intmain()
(intri,repeat;
intcount,digit,i,j,k,m,n,sum;scanf(''%d'',&repeat);
for(ri=l;ri<=repeat;ri++)(scanf(n%d%d*\&m,&n);
/**/
sum=0;
count=0;
if(m<2)m=2;
for(digit=m;digit<=n;digit++){j=sqrt(double(digit));
boolisPrime=true;
for(k=2;k<=j;++k)(
if(digit%k==0)(isPrime=false;
break;}}
if(isPrime)(count++;
sum+=digit;}}
printf(ncount=%d,sum=%d\nn,count,sum);}}
22输入1个正整数n,计算s的前n项的和(保留4位小数)。
s=1+1/2!
+....+1/n!
要求定义并调用函数fact(n)计算n的阶乘。
#include''stdio.h''
intmain()
{intri,repeat;
inti,n;
doubles;
doublefact(intn);
scanf(”%(T',&repeat);
for(ri=l;ri<=repeat;ri++)(scanf(n%dn,&n);
/**/
s=0;
for(i=l;i<=n;i++)
s+=fact(i);
printf(”%0.4f\n",s);}}
/**/
doublefact(intn)(intj,t=l;
doublex;
for(j=l;j<=n;j++)
(t*=j;
x=1.0/t;}
return(x);}
23统计一个整数中数字的个数
读入1个整数,统计并输出该数中2的个数要求定义并调用函数countdigit(number,digit),它的功能是统计整数number中数字digit的个数。
例如,countdigit(10090,0)的返回值是3o
#include''stdio.h''
intmain()
{
intri,repeat;
intcount;
longin;
intcountdigit(longnumber,intdigit);
scanf(''%d'',&repeat);
for(ri=l;ri<=repeat;ri++)(scanf(n%ldn,&in);
/**/
count=countdigit(in92);
printf(''count=%d\n”,count);)}
/**/
intcountdigit(longnumber,intdigit)
{inti,sum;
if(number<0)
number=-number;
sum=0;
while(number!
=O)(i=number%10;if(i==2)sum++;
number=number/10;}
return(sum);}
24输入2个正整数m和n(l<=m,n<=10000),输出m和n之间所有的Fibonacci数。
Fibonacci序列(第1项起):
1123581321......要求定义并调用函数fib(n),它的功能是返回第n项Fibonacci数。
#include''stdio.h''
#include"math.hn
intmain()
{
intri,repeat;
inti,m,n;
longf;
longfib(intn);
scanf(”%(T',&repeat);
for(ri=l;ri<=repeat;ri++)(scanf(n%d%dn,&m,&n);
/**/
i=l;
while(fib①v=n)
(f=fib(i);
if(f>=m)printf(n%ld”,f);
i++;}
printf("\n");}}
/**/
longfib(intn)
{inti,xl,x2,x;
if(n==l||n==2)x=l;
else
(xl=x2=l;
for(i=l;i<=n-2;i++)
(x=xl+x2;
xl=x2;
x2=x;}}
returnx;}
25将一个整数逆序输出输入一个整数,将它逆序输出。
要求定义并调用函数reverse(number),它的功能是返回number的逆序数。
#include
intmain()
{intri,repeat;
longin,res;
longreverse(longnumber);
scanf(''%d'',&repeat);
for(ri=l;ri<=repeat;ri++)(scanf(n%ldn,&in);
/**/
res=reverse(in);
printf(H%ld\nn,res);)}
/**/
longreverse(longnumber)
(longx=0;
while(number!
=O)
(x=10*x+number%10;
number/=10;}
return(x);}
26十进制转换二进制输入1个正整数n,将其转换为二进制后输出。
要求定义并调用函数dectobin(n),它的功能是输出n的二进制
#include''stdio.h''
intmain()
{intri,repeat;
inti,n;
voiddectobin(intn);
scanf(”%drepeat);
for(ri=l;ri<=repeat;ri++)(scanf(n%dn,&n);
/**/
dectobin(n);
printf(n\nn);}}
/**/
voiddectobin(intn)
(if(n>D
dectobin(n/2);
printf(H%dM,n%2);}
27统计素数并求和输入2个正整数m和n(l<=m,n<=500),统计并输出m和n之间的素数的个数以及这些素数的和(素数就是只能被1和自身整除的正整数,1不是素数,2是素数)。
要求定义并调用函数prime(m)判断m是否为素数。
#include''stdio.h''
#include''math.h''
intmain()
(intri,repeat;
intcount,i,m,n,sum;
intprime(intm);
scanf(n%dn,&repeat);
for(ri=l;ri<=repeat;ri++)(scanf(n%d%dn,&m,&n);
/**/
count=0;
sum=0;
for(i=m;i<=n;i++)
if(prime(i))
(count++;
sum+=i;}
printf(''count=%d,sum=%d\n'',count,sum);)}
/**/
intprime(inti)
{intflag,j;
if(i==l)
flag=0;
elseif(i==2)
flag=l;
else
(for(j=2;j
if(i%j==O)
(flag=0;
break;}
elseflag=l;}
return(flag);}
28求完数输入2个正整数m和n(l<=m,n<=1000),输出m到n之间的所有完数(完数就是因子和与它本身相等的数)要求定义并调用函数factorsum(number)
#include''stdio.h''
intmain()
(intri,repeat;
inti,m,n;
longfactorsum(intnumber);
scanf(”%(T',&repeat);
for(ri=l;ri<=repeat;ri++)(scanf(n%d%d*\&m,&n);
/**/
for(i=m;i<=n;i++)
if(factorsum(i)==illi==l)printf(H%d”,i);
printf(”\iT);}}
/**/
longfactorsum(intnumber)
(intj,sum=0;
for(j=l;jreturn(sum);}
29逆序输出输入一个正整数n(l#include
intmain(void)
(inti,n,temp;
intrepeat,ri;
inta[10];
scanf(n%dn,&repeat);
for(ri=1;ri<=repeat;ri++)(scanf(n%dn,&n);
for(i=0;i/**/
for(i=0;i{temp=a[i];
a[i]=a[n-l-i];
a[n-l-i]=temp;}
for(i=0;i30交换最小值和毒大值输入一个正整数n(l