2025年C语言编程宝典权威题库解析与标准答案汇编_第1页
2025年C语言编程宝典权威题库解析与标准答案汇编_第2页
2025年C语言编程宝典权威题库解析与标准答案汇编_第3页
2025年C语言编程宝典权威题库解析与标准答案汇编_第4页
2025年C语言编程宝典权威题库解析与标准答案汇编_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

《C语言程序设计》复习题库

1、计算下面公式的值。T=l/l!+l/2!+l/3!+……+l/m!当m=5时的成果(按四舍五入保留3

位小数)。(注:所有变量用float数据类型定义!)答案:1.717

2、程序填空:用*号输出字母C的图案。

#include"stdio.h"

#include"conio.h"

main()

printf("*\n");

getch();

}

3、8232和9678,它们的个、十、百、千各位数字之和是15的倍数,8+2+3+2=15,9+6+7+8=30°

编写程方:,求四位数的所有奇数中,这样的数(各位数字之和是15的倍数)的总和。(注:所

有变量用long数据类型定义!)答案:1533459

4、/*下面程序的功能是:计算并输出700以内的最大的10个能被13或者17整除的自然

数之和。请改正程序中的错误,并运行,最终给出程序运行的对的成果。(注:只有一处错

误!)*/答案:6591

#include<stdio.h>

voidmain()

(

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

intpm[IO],count=0;

while((k>=2)&&mc<=10)

(

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

(

pm[mc]=k;

mc++;

for(k=l;k<=10;k++)

total+=pm[k-l];

printf("

I

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

6、计算如下公式的A20值。Al=l,A2=1/(1+A1),A3=l/(1+A2),A4=l/(1+A3),...........(按

四舍五入保留10位小数)。答案:0.

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

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

Intmystrlen(char*s)

{intnurn=O;

while(_){;}

return(_);

)

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

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

11、编写程序,求满足下列条件的所有四位数ABCD的个数,该四位数是8的倍数,且A+B=B+C,

即第1位数加上第2位数等于第2位数加上第3位数。答案:110

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

项之和,4=1+2+1,7=2+1+4,12=1+4+7-.o下列程序的功能是求出该数列前10项的和。

请改正程序中的错误,并运行修改后的程序,给出程序成果。(注:只有一处错误!)*/

答案:311

#include<stdio.h>

voidmain()

(

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

intk,j:

for(k=3;k<IO;k++)

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

for(j=l;j<=10;j++)

sum+=a[j];

printf("%ld\n",sum);

}

13、/*求1到之间的双胞胎数的对数。双胞胎数:两素数差为2称为双胞胎数。例如227

和229是一对双胞胎数,它们都是素数且差为2。写案:61

#include<stdio.h>

intprime(intx)

(

intk;

for(k=2;k<x;k++)

if()break;

if(k==x)return1;

elsereturn0;

)

voidmain()

{inta,b,n=0;

intprime(intx);

for(a=2;a<=1998;a++)

(

if(prime(a)==l)

{b=a+2;

if()n++;

)

printf("%d\n",n);

I

14、编写程序,记录200F00之间的所有满足三个数字之积为42,三个数字之和为12的数的

个数。答案:4

15、有30个学生一起买小吃,共花钱50元,其中每个大学生花3元,每个中学生花2元,每个

小学生花1元,问大、中、小学生的人数分派共有多少种不一样的解(去掉某类学生数为0

的解)?答案:9

16、爱因斯坦走台阶:有一台阶,假如每次走两阶,最终剩一阶;假如每次走三阶,最终剩两阶;

假如每次走四阶,最终剩三阶;假如每次走五阶,最终剩四阶;假如每次走六阶,最终剩五阶;

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

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

#include<stdio.h>

intpriine(longn)

(

longk;

for(k=2;k<=n-l;k++)

if()return0;

return1;

I

voidmain()

(

longt,total=0,num=0;

intprime(longn);

for(t=IOOO;t>=2;t-)

(

if()

(

total=total+t;num++;

}

if(num==10)break;

)

prinlf("\n%Id",total);

}

18、/*求l!+2!+3!+...+7!,7!表达7的阶乘。*/答案:5913

#include<stdio.h>

longjc(longx)

(

longk,fac=1;

for(k=1;;k++)

fac*=k;

1

voidmain()

longn,sum=();

longjc(longx);

for(n=l;n<=7;n++)

printf("\n%ld",sum);

I

19、求10000以内所有完数之和,“完数”是指:一种数假如刚好与它所有的真因子(不包括

该数自身)之和相等,如:6=1+2+3,则6就是一种完数。(注:所有变量用int数据类型定

义!)答案:8658

20、/*数列1,2,1,4712,23…具有这样的特性,从第四项(也就是4)开始,每一项是前三项

之和,4=1+2+1,7=2+1+4,12=1+4+7-.<>下列程序先给出数列的第一项(1)、第二项(2)、

第三项(1),再逐渐计算其他项并保留在数组a中,最终求出该数列的第25项。请改正程

序中的错误,并运行修改后的程序,给出程序成果。(注:只有一处错误!)刃答案:1323525

#include<conio.h>

#includc<stdio.h>

#dcfineN30

voidniain()

(

longa[N];

intk;

clrscr();

a[0]=I;a[l]=2;a[2]=l;

for(k=3;k<=20;k++)

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

prinlfC%ld\n",a[k-l]);

}

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

*/答案:87970

#include<stdio.h>

inthws(longn)

(

longx=n,t=O,k;

while(x>0)

(

k=x%10;

t=t*10+k;

x=x/10;

)

if()return1;

elsereturn0;

voidmain()

longk,s=O;

inthws(longn);

for(k=200;k<=;k++)

if()

s=s+k;

printf("\n%ld",s);

I

22、/*下面的程序是求体现式的值:

s=l+l/3+(1*2)/(3*5)+(1*2*3)/(3*5*7)+...+(1*2*3*...*n)/0x5*7*...(2*n+1))请将程序补充完整,

并给出当n=25时,程序的运行成果(按四舍五入保留10位小数)。*/答案:1.

#include<stdio.h>

doublefun(intn)

(

doubles=1.0,t=1.0;

intk;

doublertn=1.0;

for(k=l;k<=n;k++)

{

c=t*k;

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

I

returnrtn;

}

voidmain()

(

doublesum;

printf("\n%.10lf',sum);

)

23、已知:Sn=2/l+3/2+4/3+-+(n+l)/n,求Sn不超过50的最大值(按四舍五入的方式精确

到小数点后第三位)。答案:49.395

24、计算Y=X/l!-X-3/3!+X"/5!-X7/7!+……前20项的值(已知:X=2)。规定:按四舍五入

的方式精确到小数点后第二位。答案:0.91

25、若某正整数平方等于某两个正整数平方之和,称该正整数为弦数。例:2+4.2=52则

5为弦数,求[131,200]之间最小的弦数。答案:135

26、已知X,Y,Z为三个正整数,且X〃2+Y'2+Z〃2=25.2,求X+Y+Z的最大值。答案:43

27、猴吃桃:有一天小猴子摘下了若干个桃子,当即吃掉二分之一,还觉得不过瘾,又多吃

了一种。第二天接着吃了剩余的桃子中的二分之一,仍不过瘾,又多吃了一种。后来每天都

是吃尚存桃子的二分之一零一种。到第1()天早上小猴子再去吃桃子时,看到只剩余一种桃子

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

28、求[1,50]之间的所有整数能构成直角三角形的三边的组数。例如:3*3+求4=5*5,它们

构成直角三角形,因此{3,4,5}作为一组,但{4,3,5}视为跟{3,4,5}相似的一组。答

案:20

29、15元钱换成1元、2元、5元的票面,问有多少种不一样的兑换措施?输出所有的兑换措

施。答案:18种

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

迭代公式为:xe=l/(2*(xn+a/x.)),规定直到前后两次求出的x的差的绝对值不不小于I。/

为止。A的值从键盘输入。

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

数。答案:407

32、一球从100米的高度自由落下,每次落地后反跳回原高度的二分之一,再落下。求它在

第10次落地时,共通过多少米?第10次反弹多高?

答案:299.6093750.097656

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

三位小数输出最大值和最小值。

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

@@@@@@@@@@@

@@@@@@@@@司

•••

@@

@

35、计算:s=f(-30)+f(-29)+.......+f(-l)+f(0)+f(l)-......+f(30)的值。其中函数定义

如下:f(x)=(x+l)/(x-2)假如x>l;f(x)=0假如x=0或x=2;f(x)=(x-l)/(x-2)假

如x<0。(按四舍五入保留6位小数)答案:65.223018

36、编写程序输出如下字符图形(最终一行19颗星):

***

*****

*******

•••

***•••****

37、企业发放的奖金根据利润提成。利润⑴低于或等J70万元时,奖金可提10%;利润高

于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提

成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于

40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高

于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总

数?

38、计算下面公式的值。T=l+l/(2*3)+l/(3*4)+……+l/(m*(m+l)),当m=50时的成果(按四

舍五入保留6位小数)。(注:所有变量用double数据类型定义!)答案:1.480392

39、程序填空:输入一行字符,分别记录出其中英文字母、空格、数字和其他字符的个数。

程序分析:运用while语句,条件为输入的字符不为

#include"stdio.h"

#include"conio.h"

main()

chare;

intIetters=0,space=0,digit=0,others=0;

printf("pleaseinputsomecharacters"");

while((c=getchar(y)!='\ii')

(

if(c>=,a'&&c<=,z,||c>='A'&&c<=,Z')

elseif(c=='')

elseif(c>='0'&&c<='9')

else

printf("allinall:char=%dspace=%ddigit=%dothers=%d\n"Jetters,space,digi(,others);

getch();

40、打印出如下图案(菱形)

*

***

*****

*******

*7*4、*7**1*

***

*

41、求出[2,478]以内的:

*467

(2)素数数目。*91

(3)所有素数之和。*19580

42、已知:

N7。.为奇数)6(,•为奇数)

尸2〃-4

“=||a为偶数)'一卜③(,为偶数)

/=1

⑴若210,求Yo*1304735

(2)若N=15,求Y。*1.184172E+07

X"

43、已知:)'=l+X+?.+,+了,其中:了二0.25,〃=求:

(1)Y值(精确到小数点后第5位)*1.28767

(2)与⑴匹配的最小的n*7

44、如下程序输入三个整数值给a,b,c,程序把b中的值给a,把c中的值给b,把a中的

值给c,互换后输出a>b>c的值。例如:读入后,a=10>b=20>c=30;互换后,a=20%b=30>

c=10o请填空。

#include<stdio.h>

rnain()

{inta»b,c,t;

printf("Entera,b,c:');

scanf("%d%d%d",);

_____:a=b;—:_;

printf("a=%db=%dc=%d\n",a,b,c);

)

45.下面fun函数的功能是从a数组中查找值为y的元素;若找到,返回该元素的下标值,

若不存在值为y的元素,返回0;数列放在a数组的a⑴到a[n]中,a⑼元素用来作为临时存

储单元。请填空。

fun(inta[l,inty,intn)

{intk=0;

a[O]=y;k=n;

whiie()k-;

return();

)

46、/*下列程序的功能是求出二阶Fibonacci数列前1()之和,1,1,2,3,5,8…。请改正程序中

的错误,并运行修改后的程疗,给出程样成果。(注;只有一处错误!3足第四项,5足第五

项。)*/答案:143

#include<stdio.h>

voidinain()

{

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

intk;

for(k=2;k<10;k++)

a[k]=a[k-l]+a[k-2];

for(k=l;k<=10;k++)

sum+=a[kj;

printf("%ld\n,,,sum);

)

47、20,160]之间的所有倡数的平方和。答案:694380

48、求[10,]之间能被2或3或5整除的数之和。答案:67795

49、求800以内的最大的20个素数之和。答案:14510

50、求当n=60时下式的和:s=l+l/(l+2)+l/(l+2+3)+......+1/(1+2+3+.......+n)(按四舍

五入保留6位小数)。答案:1.967214

51、编写程序:输入x的值,按照下列公式计算cos(x)

COS(X)=1-X2/2!+X4/4!-X6/6!+...精确到10汽

/*C11.717*/

mainO

inti;

longjc=l;

floats=0;

for(i=l;i<=5;i++)

jc=jc*i;

s=s+l.0/jc;

)

printfs);

)

/*C31533459*/

mainO

(

longi,c=0,t=0,g,s,b,q;

for(i=1001;i<=9999;i=i+2)

(

g=i%10;

s=i/10%10;

b=i/100%10;

q=i/1000;

if((g+s+b+q)%15=0)

(

c++;

t=t+i;

)

)

printft);

)

/*C16591*/

main()

{

inti,s=0,c=0;

for(i=700;i>=l;i—)

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

(

c++;

s+=i;

if(c==10)break;

)

printf('%d",s);

)

/*C56.058311*/

main()

(

longi=5;

doubles=l;

while(1.0/i>=le-5)

{

s=s+l.0/i;

i=i+2;

)

printfC%ir,s);

1

/*C60.*/

main()

{

inti;

doublea=l;

for(i=2;i<=20;i++)

(

a=1.0/(l+a);

)

printf(飞.lOlf”,a);

)

/*C790965*/

main()

(

longi,s=0;

for(i=ll;i<=1600;i=i+2)

if(i%7==0)

s=s+i;

printfs);

)

/*C91042*/

main()

longi,s=0;

for(i=100;i<=500;i++)

if(i%5==3&&i%7==5&&i%3==l)

s=s+i;

printf("为ld〃,s);

}

/*C10143*/

main()

{

intc=0,i,j,p;

for(i=100;i<=999;i++)

(

P=l;

for(j=2;j<i;j++)

if(i%j==0){p=0;break;}

if(p==l)c।•;

)

prinlf(飞d〃,c);

)

/*C11110*/

main()

{

intc=0,i,q,b,s;

for(i=1000;i<=9999;i=i+8)

(

q=i/1000;

b=i/100%10;

s=i/10%10;

if(q+b=b+s)c++;

)

printf(“%d",c);

)

/*C1361*/

#include"fun.c"

main()

{

inta,b,n=0;

intprime(intx);

for(a=2;a<=1998;a++)

if(prime(a)==1&&prime(a+2)=1)

n++;

printf("%d〃,n);

)

/*C144*/

main()

(

intc=0,i,g,s,b;

for(i=200;i<=400;i++)

(

g=i%10;

s=i/10%10;

b=i/100;

if(g+s+b==12&&g*s*b==42)

c++;

)

printfC%d",c);

)

/♦Cl59*/

main()

{

intd,z,x,c=0;

for(d=l;d<=17;d++)

for(z=l;z<=25;z++)

(

x=30-d-z;

if(x>=0&&d*3+z*2+x==50)

c++;

printf("困d”,c);

)

/*C16119*/

mainO

(

inttj,i,j;

for(tj=l;tj>=0;tj++)

if(tj%2==1&&tj%3=2&&tj%4==3&&tj%5==4&&tj%6==5&&tj%7==0)break;

printf("%d",tj);

}

/*C198658*/

main()

{

inti,s=O,w,j;

for(i=l;i<=10000;i++)

(

w=O;

for(j=l;j<i;j++)

if(i%j=O)w+=j;

if(w==i)s+=i;

}

printf('%d",s);

)

/*C201323525*/

main()

{

longa[25]={l,2,1);

inti;

for(i=3;i<25;i++)

a[i]=a[i-l]+a[i-2]+a[i-3];

printfa[24]);

}

/*C221.*/

^defineN24

main()

{

inti,j;

doubles=l,si,s2;

for(i=l;i<=N;i++)

(

sl=l;

s2=\;

for(j=l;j<=i;j++)

(

sl*=j;

s2*=(2*j+l);

)

s+=(sl/s2);

)

printf("%.lOlf”,s);

)

/*C2349.395*/

main()

{

inti=l;

doubles=();

do

(

s+=(l+1.0/i);

printf(z,\n%0.31f”,s);

i++;

)

while(s<50);

}

/*C240.91V

#include<math.h>

main()

(

intx=2,i,j;

doublejc(inti);

doubley=0,fz;

for(i=l;i<=20:i++)

(

fz=pow(-l,i+l)*pow(x,2*i-l);

y+=fz/jc(2*i-l);

printf("\n%d,%.01f/%.01f”,i,fz,jc(2*i-l));

)

printf(z,\n%.2ir,y);

)

doublejc(inti)

(

intj;

doubler=l;

for(j=l;j<=i;j++)

r*二j;

returnr;

}

/*C25135*/

#include<math.h>

main()

(

longa,b,c;

intxs=0;

for(c=131;c<=200;c++)

(

xs=0;

for(a=l;a<c;a++)

(

b=sqrt(c*c-a*a);

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

xs=l;

break;

)

)

if(xs==l)

(

printf(飞Id",c);

break;

}

)

)

/*C2643*/

mainO

(

intd=25;

intx,y,z,max=0;

for(x=l;x<d;x।•)

for(y=l;y<d;y++)

for(z=I;z<d;z+-*-)

if(x*x+y*y+z*z==d*d&&max<x+y+z)

max=x+y+z;

printfmax);

}

/*C2820*/

#include<math.h>

mainO

{inta,b,c,n=0;

intxs=O;

for(c=l;c<=50;c++)

for(a=l;a<c;a++)

for(b=l;b<a;b++)

if(b*b+a*a==c*c)n++;

printfn);

)

/*C30*/

#include<math.h>

main()

{

doublexl=l.0,x2;

doublea;

scanf(飞If",&a);

while(l)

xl=1.0/2*(xl+a/xl);

if(fabs(x2-xl)<=le-5)break;

elsex2=xl;

)

printf("%1f”,xl);

}

/*C3567.223018*/

main()

(

doublef(doublex),s=0;

inti;

for(i=-30;i<=30;i++)

s=s+f(i);

printfs);

}

doublef(doublex)

(

doubley;

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

elseif(x>l)y=(x+l)/(x-2);

elseif(x<0)y=(x-l)/(x-2);

retur

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论