北工大C语言练习题答案doc.docx

上传人:b****7 文档编号:10636941 上传时间:2023-02-22 格式:DOCX 页数:28 大小:21.14KB
下载 相关 举报
北工大C语言练习题答案doc.docx_第1页
第1页 / 共28页
北工大C语言练习题答案doc.docx_第2页
第2页 / 共28页
北工大C语言练习题答案doc.docx_第3页
第3页 / 共28页
北工大C语言练习题答案doc.docx_第4页
第4页 / 共28页
北工大C语言练习题答案doc.docx_第5页
第5页 / 共28页
点击查看更多>>
下载资源
资源描述

北工大C语言练习题答案doc.docx

《北工大C语言练习题答案doc.docx》由会员分享,可在线阅读,更多相关《北工大C语言练习题答案doc.docx(28页珍藏版)》请在冰豆网上搜索。

北工大C语言练习题答案doc.docx

北工大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;j

return(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;i

30交换最小值和毒大值输入一个正整数n(l

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试认证 > 司法考试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1