c语言程序设计复习题参考答案612Word下载.docx

上传人:b****6 文档编号:19721470 上传时间:2023-01-09 格式:DOCX 页数:29 大小:35.46KB
下载 相关 举报
c语言程序设计复习题参考答案612Word下载.docx_第1页
第1页 / 共29页
c语言程序设计复习题参考答案612Word下载.docx_第2页
第2页 / 共29页
c语言程序设计复习题参考答案612Word下载.docx_第3页
第3页 / 共29页
c语言程序设计复习题参考答案612Word下载.docx_第4页
第4页 / 共29页
c语言程序设计复习题参考答案612Word下载.docx_第5页
第5页 / 共29页
点击查看更多>>
下载资源
资源描述

c语言程序设计复习题参考答案612Word下载.docx

《c语言程序设计复习题参考答案612Word下载.docx》由会员分享,可在线阅读,更多相关《c语言程序设计复习题参考答案612Word下载.docx(29页珍藏版)》请在冰豆网上搜索。

c语言程序设计复习题参考答案612Word下载.docx

if(i%2!

=0)

a=i/1000;

/*千位数*/

b=i/100%10;

/*百位数*/

c=i/10%10;

/*十位数*/

d=i%10;

/*个位数*/

if((a+b+c+d)%15==0)

s=s+i;

s=%ld\n"

s);

4、/*下面程序的功能是:

计算并输出700以内的最大的10个能被13或者17整除的自然数之和。

请改正程序中的错误,并运行,最后给出程序运行的正确结果。

只有一处错误!

)*/答案:

6591

voidmain()

{

inttotal=0,mc=0,k=700;

/*mc用于表示数组的下标值,初始时表示第一个元素应为mc=0*/

intpm[10],count=0;

while((k>

=2)&

&

mc<

=10)

if((k%13==0)||(k%17==0))

pm[mc]=k;

mc++;

}

k--;

for(k=1;

k<

=10;

k++)

total+=pm[k-1];

%d\n"

total);

5、求x=1+1/5+1/7+1/9+…的近似值,直到最后一项的绝对值小于10-5为止。

math.h>

doublex=1;

inti;

for(i=5;

fabs(1.0/i)>

=1e-5;

i=i+2)

x+=1.0/i;

x=%f\n"

x);

6、计算如下公式的A20值。

A1=1,A2=1/(1+A1),A3=1/(1+A2),A4=1/(1+A3),......(按四舍五入保留10位小数)。

答案:

0.6180339850

doublea=1.0;

for(i=2;

=20;

a=1/(1+a);

A20=%.10f\n"

a);

7、求[10,1600]之间能被7整除的奇数之和。

90965

inti,s=0;

for(i=10;

=1600;

if(i%7==0&

i%2!

s+=i;

s=%d\n"

8、函数mystrlen(char*s)的功能是求字符串s的长度。

请填空。

intmystrlen(char*s)

{intnum=0;

while(*s++!

='

\0'

){__num++__;

return(num);

9、[100,500]之间同时满足除以7余5,除以5余3,除以3余1的整数之和。

1042

for(i=100;

=500;

if(i%7==5&

i%5==3&

i%3==1)

10、求[100,999]之间所有的素数的个数。

143

inti,j,n=0;

=999;

for(j=2;

j<

i;

j++)

if(i%j==0)

break;

if(j==i)

n+=1;

n=%d\n"

n);

11、编写程序,求满足下列条件的所有四位数ABCD的个数,该四位数是8的倍数,且A+B=B+C,即第1位数加上第2位数等于第2位数加上第3位数。

110

inti,n=0,a,b,c;

a=i/1000;

b=i/100%10;

c=i/10%10;

if(i%8==0&

(a+b)==(b+c))

12、/*数列1,2,1,4,7,12,23…具有这样的特征,从第四项(也就是4)开始,每一项是前三项之和,4=1+2+1,7=2+1+4,12=1+4+7….。

下列程序的功能是求出该数列前10项的和。

请改正程序中的错误,并运行修改后的程序,给出程序结果。

)*/

答案:

311

longsum=0,a[30]={1,2,1};

intk,j;

for(k=3;

10;

a[k]=a[k-1]+a[k-2]+a[k-3];

for(j=1;

j++)

sum+=a[j-1];

/*数组a初始下标应为0,所以此处应改为a[j-1]*/

%ld\n"

sum);

13、/*求1到2000之间的双胞胎数的对数。

双胞胎数:

两素数差为2称为双胞胎数。

例如227和229是一对双胞胎数,它们都是素数且差为2。

*/答案:

61

intprime(intx)

intk;

for(k=2;

x;

k++)

if(__x%k==0____)break;

if(k==x)return1;

elsereturn0;

voidmain()

{inta,b,n=0;

intprime(intx);

for(a=2;

a<

=1998;

a++)

if(prime(a)==1)

{b=a+2;

if(__prime(b)___)n++;

%d\n"

14、编写程序,统计200~400之间的所有满足三个数字之积为42,三个数字之和为12的数的个数。

4

inti,a,b,c,n=0;

for(i=200;

=400;

a=i/100;

b=i/10%10;

c=i%10;

if(a+b+c==12&

a*b*c==42)

15、有30个学生一起买小吃,共花钱50元,其中每个大学生花3元,每个中学生花2元,每个小学生花1元,问大、中、小学生的人数分配共有多少种不同的解(去掉某类学生数为0的解)?

9

inti,j,k,n=0;

=28;

for(j=1;

for(k=1;

if(i+j+k==30&

i+2*j+3*k==50)

n+=1;

16、爱因斯坦走台阶:

有一台阶,如果每次走两阶,最后剩一阶;

如果每次走三阶,最后剩两阶;

如果每次走四阶,最后剩三阶;

如果每次走五阶,最后剩四阶;

如果每次走六阶,最后剩五阶;

如果每次走七阶,刚好走完.求满足上述条件的最小台阶数是多少?

119

intm,n;

for(n=1;

;

n++)

if(n%2==1&

n%3==2&

n%4==3&

n%5==4&

n%6==5&

n%7==0)

break;

17、/*求1000以内最大的10个素数的和。

9664

intprime(longn)

longk;

=n-1;

if(_n%k==0__)return0;

return1;

}

longt,total=0,num=0;

intprime(longn);

for(t=1000;

t>

=2;

t--)

if(__prime(t)_)

total=total+t;

num++;

if(num==10)break;

\n%ld"

18、/*求1!

+2!

+3!

+...+7!

,7!

表示7的阶乘。

5913

longjc(longx)

longk,fac=1;

for(k=1;

__k<

=x_;

fac*=k;

__returnfac___;

longn,sum=0;

longjc(longx);

n<

=7;

__sum+=jc(n)__;

19、求10000以内所有完数之和,"

完数"

是指:

一个数如果刚好与它所有的真因子(不包括该数本身)之和相等,如:

6=1+2+3,则6就是一个完数。

所有变量用int数据类型定义!

8658

#include<

inti,j,k,s=0;

=10000;

for(j=1,k=0;

if(i%j==0)

k+=j;

if(k==i)

s+=i;

20、/*数列1,2,1,4,7,12,23…具有这样的特征,从第四项(也就是4)开始,每一项是前三项之和,4=1+2+1,7=2+1+4,12=1+4+7….。

下列程序先给出数列的第一项

(1)、第二项

(2)、第三项

(1),再逐步计算其它项并保存在数组a中,最后求出该数列的第25项。

)*/答案:

1323525

conio.h>

#defineN30

longa[N];

clrscr();

a[0]=1;

a[1]=2;

a[2]=1;

=24;

k++)/*应改为k<

=24,因为第数组下标24即为数组的第25个元素。

a[k-1]);

/*因for循环结束后k值为25所以必须减1求得a[24]的值*/

21、/*求区间[200,3000]中所有回文数的和,回文数是正读与反读都是一样的数,如525,1551。

87970

inthws(longn)

longx=n,t=0,k;

while(x>

0)

k=x%10;

t=t*10+k;

x=x/10;

if(t==n)return1;

/*t==n中间有两个等号*/

longk,s=0;

inthws(longn);

for(k=200;

k<

=3000;

if(hws(k))

s=s+k;

22、/*下面的程序是求表达式的值:

s=1+1/3+(1*2)/(3*5)+(1*2*3)/(3*5*7)+...+(1*2*3*...*n)/(3*5*7*...(2*n+1))请将程序补充完整,并给出当n=25时,程序的运行结果(按四舍五入保留10位小数)。

*/答案:

1.5707963267

doublefun(intn)

doubles=1.0,t=1.0;

doublertn=1.0;

=n;

k++)

t=t*k;

s=s*(2*k+1);

rtn+=t/s;

returnrtn;

doublesum;

sum=fun(25);

\n%.10lf"

23、已知:

Sn=2/1+3/2+4/3+…+(n+1)/n,求Sn不超过50的最大值(按四舍五入的方式精确到小数点后第三位)。

49.395

floatsn=0;

sn+=(float)(i+1)/i;

if(sn>

=50)

{

sn-=(float)(i+1)/i;

}

sn=%.3f\n"

sn);

24、计算Y=X/1!

-X^3/3!

+X^5/5!

-X^7/7!

+……前20项的值(已知:

X=2)。

要求:

按四舍五入的方式精确到小数点后第二位。

0.91

#defineX2

inti,j,n;

doubley=0,p;

for(i=1,n=1;

n+=2,i++)

for(j=1,p=1;

j++)

p*=j;

y+=pow(-1,i+1)*pow(X,n)/p;

y=%.2f\n"

y);

/*printf("

(int)(y*100+0.5)/100.0);

*/

25、若某正整数平方等于某两个正整数平方之和,称该正整数为弦数。

例:

3^2+4^2=5^2,则5为弦数,求[131,200]之间最小的弦数。

135

stdlib.h>

inti,j,k;

for(i=131;

=200;

for(j=1;

{k=(int)(sqrt(i*i-j*j));

if(j*j+k*k==i*i)

{

printf("

i=%d\n"

i);

exit(0);

}

26、已知X,Y,Z为三个正整数,且X^2+Y^2+Z^2=25^2,求X+Y+Z的最大值。

43

intx,y,z,max=0;

for(x=1;

x<

25;

x++)

for(y=1;

y<

y++)

{

z=(int)(sqrt(25*25-x*x-y*y));

if((x*x+y*y+z*z==25*25)&

max<

(x+y+z))

max=x+y+z;

max=%d\n"

max);

27、猴吃桃:

有一天小猴子摘下了若干个桃子,当即吃掉一半,还觉得不过瘾,又多吃了一个。

第二天接着吃了剩下的桃子中的一半,仍不过瘾,又多吃了一个。

以后每天都是吃尚存桃子的一半零一个。

到第10天早上小猴子再去吃桃子时,看到只剩下一个桃子了。

问小猴子第一天共摘下了多少个桃子。

1534

inti,n=1;

for(i=9;

i>

=1;

i--)

n=(n+1)*2;

%d\n"

28、求[1,50]之间的所有整数能构成直角三角形的三边的组数。

例如:

3*3+4*4=5*5,它们构成直角三角形,所以{3,4,5}作为一组,但{4,3,5}视为跟{3,4,5}相同的一组。

20

intx,y,z,n=0;

for(x=1;

x<

=48;

x++)

for(y=x;

y<

=49;

y++)

for(z=y;

z<

=50;

z++)

if(x*x+y*y==z*z)

n++;

29、15元钱换成1元、2元、5元的票面,问有多少种不同的兑换方法?

输出所有的兑换方法。

18种

for(i=0;

=15;

for(j=0;

for(k=0;

=3;

if(i+2*j+5*k==15)

n++;

%d%d%d\n"

i,j,k);

30、用迭代法求x等于a开平方的正数值。

迭代公式为:

xn+1=1/(2*(xn+a/xn)),要求直到前后两次求出的x的差的绝对值小于10-5为止。

A的值从键盘输入。

floata,xn=1,xn1,d;

scanf("

%f"

&

a);

do{

xn1=1/(2*(xn+a/xn));

d=xn1-xn;

xn=xn1;

}while(fabs(d)>

=1e-5);

xn=%f\n"

xn);

31、求最大的水仙花数,所谓水仙花数,指的是一个三位数,其各个数字的立方之和等于该数。

407

intx,a,b,c,max=0;

for(x=100;

a=x/100;

b=x/10%10;

c=x%10;

if(a*a*a+b*b*b+c*c*c==x)

max=x;

32、一球从100米的高度自由落下,每次落地后反跳回原高度的一半,再落下。

求它在第10次落地时,共经过多少米?

第10次反弹多高?

299.6093750.097656

floats=100,h=50;

s+=2*h;

h/=2;

s=%fh=%f\n"

s,h);

33、编写程序,完成如下功能,输入8个float类型的实数,分别求最大值和最小值,保留三位小数输出最大值和最小值。

floata[8],max,min;

8;

a[i]);

max=min=a[0];

if(max<

a[i])

max=a[i];

if(min>

min=a[i];

max=%fmin=%f\n"

max,min);

34、编写程序输出如下字符图形:

@@@@@@@@@@@

@@@@@@@@@@

@@

@

inti,j;

for(i=11;

=i;

@"

\n"

35、计算:

s=f(-30)+f(-29)+......+f(-1)+f(0)+f

(1)+......+f(30)的值。

其中函数定义如下:

f(x)=(x+1)/(x-2)如果x>

1;

f(x)=0如果x=0或x=2;

f(x)=(x-1)/(x-2)如果x<

0。

(按四舍五入保留6位小数)答案:

65.223018

题目给定条件不完整,无法得出正确结果。

intx;

floatfx,s=0;

for(x=-30;

=30;

if(x==0||x==2)

fx=(float)(x-1)/(x-2);

if(x>

1)

fx=0;

if(x<

0||x==1)

fx=(float)(x+1)/(x-2);

s+=fx;

prin

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

当前位置:首页 > 自然科学 > 化学

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

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