C语言编程题及答案.doc

上传人:wj 文档编号:4843122 上传时间:2023-05-07 格式:DOC 页数:17 大小:89.50KB
下载 相关 举报
C语言编程题及答案.doc_第1页
第1页 / 共17页
C语言编程题及答案.doc_第2页
第2页 / 共17页
C语言编程题及答案.doc_第3页
第3页 / 共17页
C语言编程题及答案.doc_第4页
第4页 / 共17页
C语言编程题及答案.doc_第5页
第5页 / 共17页
C语言编程题及答案.doc_第6页
第6页 / 共17页
C语言编程题及答案.doc_第7页
第7页 / 共17页
C语言编程题及答案.doc_第8页
第8页 / 共17页
C语言编程题及答案.doc_第9页
第9页 / 共17页
C语言编程题及答案.doc_第10页
第10页 / 共17页
C语言编程题及答案.doc_第11页
第11页 / 共17页
C语言编程题及答案.doc_第12页
第12页 / 共17页
C语言编程题及答案.doc_第13页
第13页 / 共17页
C语言编程题及答案.doc_第14页
第14页 / 共17页
C语言编程题及答案.doc_第15页
第15页 / 共17页
C语言编程题及答案.doc_第16页
第16页 / 共17页
C语言编程题及答案.doc_第17页
第17页 / 共17页
亲,该文档总共17页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

C语言编程题及答案.doc

《C语言编程题及答案.doc》由会员分享,可在线阅读,更多相关《C语言编程题及答案.doc(17页珍藏版)》请在冰点文库上搜索。

C语言编程题及答案.doc

C语言编程题

1.(*)求分数序列:

1/2,2/3,3/5,5/8,8/13,13/21......前20项的和。

main()

{floati=1,j=2,t=0,s,n,m;

for(n=1;n<=20;n++)

s=i/j,m=i,i=j,j=m+j,t=t+s;

printf("t=%f",t);

}

2.(*)从键盘输入一个字符串,再将其逆序输出。

(如:

输入abcde,输出edcba)

main()

{inti;

charc[10];

scanf("%s",c);

for(i=9;i>=0;i--)

printf("%c",c[i]);

}

3.(*)已知abc+cba=1333,其中a、b、c均为一位数,例如:

617+716=1333,518+815=1333,

试编程求出符合这一规律的a、b、c,并输出结果。

main()

{inta,b,c,x,y;

for(a=1;a<=9;a++)

for(b=0;b<=9;b++)

for(c=1;c<=9;c++)

{x=100*a+10*b+c;

y=100*c+10*b+a;

if(x+y==1333)

printf("x=%d,y=%d",x,y);}

}

4.(*)利用海伦公式求三角形面积,三边长a,b,c由键盘输入。

若输入的三边长不能构成

三角形,输出相应提示信息。

海伦公式如下:

其中s=(a+b+c)/2

三角形面积=

#include"math.h"

main()

{floata,b,c,s,area;

scanf("%f,%f,%f",&a,&b,&c);

s=(a+b+c)/2;

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

if(a+b>c&&a+c>b&&b+c>a)

printf("area=%f",area);

else

.1.

printf("no");

}

5.(*)编程求出1!

+2!

+3!

+…+8!

+9!

+10!

的值并输出。

程序1:

main()

{inti,j;

doublep=1,sum=0;

for(i=1;i<=10;i++)

{for(j=1;j<=i;j++)

p=p*i;

sum=sum+p;p=1.0;}

printf("sum=%f",sum);

}

程序2:

floatfac(n)

intn;

{floatf;

if(n<0)printf("n<0,error!

");

elseif(n==0||n==1)f=1;

elsef=fac(n-1)*n;

return(f);

}

main()

{inth,s=0,n;

for(n=1;n<=4;n++)

{h=fac(n);

s=s+h;}

printf("s=1!

+2!

+...+10!

=%d\n",s);

}

程序3:

main()

{inti;

doublep=1,sum=0;

for(i=1;i<=10;i++)

{p=p*i;

sum=sum+p;}

printf("sum=%f",sum);

}

.2.

6.(*)从键盘输入两个整数,输出其和,差,积,商。

7.(**)输入若干个自然数,对奇数从大到小排序,对偶数从小到大排序,输出两种结果。

maxji(inta[],intn)

{inti,j,k,t;

for(i=0;i

{k=i;

for(j=i+1;j

if(a[k]

if(k!

=i)

{t=a[k];a[k]=a[j];a[j]=t;}

}}

#defineN10

main()

{intc[N],i,j;

for(i=0;i

scanf("%d",&c[i]);

maxji(c,N);

for(i=N-1;i>=0;i--)

if(c[i]%2==0)

printf("%5d",c[i]);

printf("\n");

for(i=0;i

if(c[i]%2!

=0)

printf("%5d",c[i]);

}

8.(*)求出0~999之间的所有“水仙花数”并输出。

“水仙花数”是指一个三位数,其各位数字的立方和确好等于该数本身,如;153=1+5+3,则153是一个“水仙花数”。

程序1:

main()

{inti,j,k,a;

for(i=1;i<=9;i++)

for(j=0;j<=9;j++)

for(k=0;k<=9;k++)

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

printf("%d%d%d\n",i,j,k);

}

程序:

main()

{intm,i,j,k,a;

for(m=101;i<=999;m++)

{i=m/100;

j=(m-m*100)/10;

.3.

k=m%10;

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

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

}

9.(*)试编程:

判断输入的正整数是否既是5,又是7的整数倍数。

若是则输出yes;否

则输出no。

10.(*)已有函数调用语句c=add(a,b);请编写aad函数,计算两个实数a和b的和,并返回和值。

11.(*)有人想将手中一张面值100元的人民币换成5元、1元、0.5元面值的零钱100张,以上三种面值的零钱至少有一张,问共有几种换法。

请编程实现。

程序1:

main()

{inti,j,k,n=0;

for(i=1;i<19;i++)

for(j=1;j<95;j++)

for(k=1;k<94;k++)

if(5*i+j+0.5*k==100&&i+j+k==100)

{printf("%d,%d,%d\n",i,j,k);n++;}

printf("%d",n);

}

12.(*)求Sn=a+aa+aaa+aaaa+aaaaa的前5项之和,其中a是一个数字,例如:

2+22+222+2222+22222

程序1:

main()

{inti,a,n;

longsum=0,b=1,c=1;

scanf("%d,%d",&a,&n);

for(i=1;i<=n;i++)

程序3:

main()

{longintsn=0,k=a;

inta,i,j;

scanf("%d",&a);

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

{k=10*k+a;

sn=sn+k;

}

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

}

{sum+=a*c;

b*=10;c+=b;}

printf("%ld",sum);

}

程序2:

main()

{longintsn=0,k=0;

inta,i,j;

scanf("%d",&a);

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

{for(j=1;j<=i;j++)

k=10*k+a;

.4.

sn=sn+k;

k=0;}

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

}



13.(*)编程输出如下图形(不能仅用printf语句):

*

***

*****

*******

*********

main()

{inti,k,j;

for(i=0;i<=4;i++)

{for(j=0;j<4-i;j++)

printf("");

for(k=0;k<=2*i;k++)

printf("*");

printf("\n");}

}

14.(*)用近似公式求自然对数的底e的值。

e≈1+1!

+++……

#include"math.h"

main()

{floati,j,e,p=1.0,sum=0.0;

for(i=1;i<10;i++)

{for(j=1;j<=i;j++)

p=p*j;

sum=sum+1.0/p;

p=1.0;}

e=i+sum;

printf("%f\n",e);

}

15.(*)请编程,用scanf()函数输入三个字符,对这三个字符各加一个整数1后,用

putchar()函数输出,且每输出一个字符换一行。

16.(*)请编程,用scanf()函数输入三个整数,输出其中不大不小的那个数,输出宽度为五位。

intfindmid(inti,intj,intk)

{intn;

.5.

if(i

if(i

elseif(j>k)n=j;

elsen=k;

return(n);}

main()

{inti,j,k,n;

scanf("%d%d%d",&i,&j,&k);

n=findmid(i,j,k);

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

}

17.(*)编程实现输出所有1~100之间能被9整除余2的数。

18.(*)编写一程序实现如下功能:

输入1、2、3、4、5、6、7(分别对应星期一至星期日)中的任何一个数,便能输出与之对应的英文名称。

如输入1,则输出Monday。

main()

{charday;

scanf("%c",&day);

swith(day)

{case'1':

printf("monday\n");break;

case'2':

printf("tuesday\n");break;

case'3':

printf("wednsday\n");break;

case'4':

printf("thursday\n");braek;

case'5':

printf("friday\n");break;

case'6':

printf("saturday\n");break;

case'7':

printf("sunday\n");break;

defult:

printf("error\n");

19.(*)编一程序,对于给定的一个百分制成绩,输出相应的5分制成绩。

设:

90分以上为‘A’,80~89分为‘B’,70~79分为‘C’,60~69分为‘D’,60分以下为‘E’。

(用switch语句实现)。

main()

{ints,score;

scanf("%d",&score);

s=score/10;

switch(s)

{case10:

printf("A\n");break;

case9:

printf("A\n");break;

case8:

printf("B\n");break;

case7:

printf("C\n");break;

case6:

printf("D\n");break;

case5:

case4:

case3:

case2:

case1:

printf("E\n");break;

default:

printf("error");

}}

20.(*)试编程:

判断输入的正整数是否既是5,又是7的整数倍数。

若是则输出yes;否则输出no。

21.(**)一个数如果却好等于它的因子之和,这个数就称为“完数”。

例如,6的因子为1、2、3,而6=1+2+3,因此6是“完数”。

编程序找出100之内的所有完数,并按下列格式输出其因子:

6itsfactorsare1,2,3

main()

{intm,i,s;

for(m=2;m<1000;m++)

{s=0;

for(i=1;i

if(m%i==0)s=s+i;

if(m==s)

{printf("%3ditsfactorsare",m);

for(i=1;i

if(m%i==0)printf("%4d",i);

printf("\n");

}

}

}

22.(*)输入5对整数,请输出每对数中较大者

main()

{inti,j,a[5][2];

for(i=0;i<=4;i++)

for(j=0;j<=1;j++)

scanf("%d",&a[i][j]);

for(i=0;i<=4;i++)

if(a[i][1]>a[i][0])

printf("%4d\n",a[i][1]);

else

printf("%4d\n",a[i][0]);

}

.6.

23.(**)编程将一个3x3矩阵转置(行列互换)后输出。

main()

{inti,j,a[3][3],b[3][3];

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

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

scanf("%d",&a[i][j]);

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

{for(j=0;j<=2;j++)

{print(“%5d”,a[i][j]);

b[j][i]=a[i][j];}

printf('\n');}

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

{for(i=0;i<=2;i++)

printf("%5d",b[i][j]);

printf(“\n”);}

}

24.(**)求一个一维数组的最大值,最小值和平均值(主函数调用并输出)。

程序2:

main()

{voidmake();

inta[10],i;

externintmax,min;

externfloataver;

for(i=0;i<10;i++)

scanf("%d",&a[i]);

make(a,10);printf("max=%d,min=%d,aver=%.2f",max,min,aver);

}

intmax,min;floataver;

voidmake(inta[],intn)

{inti;floatsum;

max=min=a[0];

sum=a[0];

for(i=1;i

{if(max

if(min>a[i])min=a[i];

sum+=a[i];printf("%f",sum);}

aver=(float)sum/n;}

程序1:

floatmax(intn,floata[])

{inti;

floatmax;

max=a[0];

for(i=0;i

if(max

return(max);

}

floatmin(intn,floata[])

{inti;

floatmin;

min=a[0];

for(i=0;i

if(min>a[i])min=a[i];

return(min);

}

floataver(intn,floata[])

{inti;

floatsum=0,aver;

.7.

for(i=0;i

sum=sum+a[i];

aver=sum/n;

return(aver);

}

#include"math.h"

main()

{inti;

floatm,n,a[5],c;

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

scanf("%f",&a[i]);

m=max(5,a);

n=min(5,a);

c=aver(5,a);

printf("%5f%5f%5f\n",m,n,c);

}

25.(**)编写函数,求一个不超过五位的十进制整数各位数值的和。

(如:

输入2634,输出15)

#include"math.h"

main()

{inti,a[5],m,n=0;

scanf("%d",&m);

for(i=0;i<=4;i++)

{a[i]=m%10;

n=n+a[i];

m=m-a[i]*10;

printf("%5d",a[i]);}

printf('\n');

printf("%d",n);

}

26.(**)编程求出一个3x3矩阵的最大和最小元素及其下标。

main()

{inti,j,max,min,a[3][3],m1,n1,m2,n2;

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

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

scanf("%d",&a[i][j]);

min=max=a[0][0];

.8.

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

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

if(a[i][j]>max){max=a[i][j];m1=I;n1=j;}

elseif(a[i][j]

{min=a[i][j];m2=i;n2=j;}

printf("max=%d,%3d,%3d,min=%d,%3d,%3d",max,m1,n1,min,m2,n2);

}

27.(**)有一个字符串,包含n个字符,编写一个函数,将此字符串中从第m个字符开始的全部字符复制成另一个字符串。

main()

{charchs2[30]={0},chs1[30]="thisismyfirstCprogram";

inti,j,m;

scanf("%d",&m);

for(i=m,j=0;i<30;i++,j++)

chs2[j]=chs1[i];

chs2[29]='\0';

printf("%s",chs2);

}

28.(**)求一个3x3矩阵的对角线元素之和。

main()

{inti,j,sum1=0,sum2=0,a[3][3];

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

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

scanf("%d",&a[i][j]);

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

{for(j=0;j<=2;j++)

if(i==j)sum1+=a[i][j];

if((i+j)==2)sum2+=a[i][j];

}

printf("%5d%5d",sum1,sum2);}

29.(**)从键盘输入两个整数,输出其最大公约数和最小公倍数。

程序1:

main()

{inta,b,t,p,r;

scanf("%d,%d",&a,&b);

if(a

p=a*b;

while(b!

=0)

{r=a%b;a=b;b=r;}

printf(“%5d%5d”,a,p/a);}

.9.

main()

{inta,b,m,n,i,t;

scanf(“%d%d”,&a,&b);

if(a

m=a;n=b;

for(i=1;i<=n;i++)

if((m%i==0)&&(n%i==0))

{printf("%5d\n",i);break;}

printf("%5d",a*b/i);

}

30.(**)一个已按从小到大的顺序排序的数组,有9个元素,从终端输入第10个数,要求按原来排序的规律将它插入数组中。

(该数比第一个数大,比第九个数小)

#defineN10

main()

{intb,i,n,a[N]={1,5,7,11,15,19,23,28,31};

scanf("%d",&b);

for(i=0;i

if(a[i]>b){n=i;break;}

for(i=(N-2);i>=n;i--)

a[i+1]=a

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

当前位置:首页 > 幼儿教育 > 幼儿读物

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2