c语言编程题及答案.docx
《c语言编程题及答案.docx》由会员分享,可在线阅读,更多相关《c语言编程题及答案.docx(23页珍藏版)》请在冰豆网上搜索。
c语言编程题及答案
1、输入1,7,9,5,8,6,2,用冒泡法进行排序,按从小到大的顺序输出。
#include
main()
{
inta[7],i,j,t;
for(i=0;i<7;i++)
scanf("%d",&a[i]);
for(i=1;i<=7;i++)
{
for(j=0;j<=7-i;j++)
{
if(a[j]>a[j+1])
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
}
for(i=0;i<7;i++)
printf("%d",a[i]);
printf("\n");
}
2、编程判断输入的字符串是否为“回文”。
所谓“回文”是指顺读和倒读都一样,如abcba。
#include
main()
{
chars[20],l,i,flag=0;
gets(s);
l=strlen(s);
for(i=0;iif(s[i]!
=s[l-i-1])
flag=1;
if(flag==0)
printf("输入的字符串是回文\n");
else
printf("输入的字符串不是回文\n");
}
3、输入5个数,求和并输出。
要求编写求和的函数。
#include
voidmain()
{intb(intx[],intn);
intsum=0;
inta[5];
inti;
printf("请输入5个数:
");
for(i=0;i<5;i++)
scanf("%d",&a[i]);
sum=b(a,5);
printf("sum=%d\n",sum);
}
intb(intx[],intn)
{inti,sum=0;
for(i=0;i<5;i++)
sum=sum+x[i];
returnsum;
}
4、编写程序,求满足1*1+2*2+3*3+……n*n<=800的最大n是多少
#include"stdio.h"
voidmain()
{
intn,s=0;
for(n=1;s+n*n<=800;n++)
s=s+n*n;
printf("s=%d,n=%d\n",s,n-1);
}
5、编程计算1*2*3+4*5*6+...+97*98*99的值。
#include
main()
{
ints=0,i;
for(i=1;i<100;i)
{
s=s+i*(i+1)*(i+2);
i=i+3;
}
printf("%ld",s);
}
6、从键盘输入n和a的值,计算a+aa+aaa+...+aa...a(n个a)的值。
#include"stdio.h"
voidmain()
{
intn,a,i,t=0,s=0;
scanf("%d%d",&n,&a);
for(i=1;i<=n;i++)
{
t=t*10+a;
s=s+t;
}
printf("a+aa+aaa+...+a(n个a)=%d",s);
}
7、输出Fibonacci数列的前40项,要求按4列输出。
Fibonacci数列的特点:
前两个数为1,从第三数开始,每个数都是它前面两个数的和。
#include
voidmain()
{
longa[40];
inti;
a[0]=1;
a[1]=1;
printf("%10ld%10ld",a[0],a[1]);
for(i=2;i<40;i++)
{
a[i]=a[i-1]+a[i-2];
printf("%10ld",a[i]);
if(i%4==3)
printf("\n");
}
}
8、输入3个学生4门课的成绩{(60,70,65,75),(75,80,75,90),(95,75,90,65)},计算每个学生的总分和平均成绩并输出,结果保留一位小数。
#include
voidmain()
{
floatave;
inta[3][4],i,j,s;
for(i=0;i<3;i++)
{
s=0;
for(j=0;j<4;j++)
{
scanf("%d",&a[i][j]);
s=s+a[i][j];
}
printf("s=%d,ave=%f\n",s,(float)s/4);
}
}
9、求100之内自然数中最大的能被31整除的数。
#include
voidmain()
{
inti;
for(i=100;i>0;i--)
if(i%31==0)
{
printf("%d",i);
break;
}
}
10、求以下数列前15项的和:
2/1,3/2,5/3,8/5,13/8,21/13,...
#include
voidmain()
{
intn,a1,a2,a3;
doublesum=0;
for(n=1,a1=1,a2=1;n<=15;n++)
{
a3=a1+a2;
a1=a2;
a2=a3;
sum+=a3/n;
}
printf("%d",sum);
}
11、从键盘输入10个数,统计非正数的个数,并计算非正数的和。
#include
voidmain()
{inti,n=0,sum=0;
inta[10];
printf(“请输入10个数:
”);
for(i=0;i<10;i++)
scanf(“%d”,&a[i]);
for(i=0;i<10;i++)
if(a[i]>=0)
{sum=sum+a[i];
n++;}
printf("非负个数是%d,sum=%d\n",n,sum);
}
12、输入任意三个数,按从小到大的顺序输出。
#include"stdio.h"
main()
{
intx,y,z,t;
scanf("%d%d%d",&x,&y,&z);
if(x>y)
{
t=x;x=y;y=t;
}
if(x>z)
{
t=z;z=x;x=t;
}
if(y>z)
{
t=y;y=z;z=t;
}
printf("smalltobig:
%d%d%d\n",x,y,z);
}
13、输入一个不多于5位的正整数,判断它是几位数,并逆序输出各位数字。
#include
voidmain()
{
intn,i,j;
scanf("%d",&n);
if(n>0&&n<10)
printf("它是%d位数!
\n",i=1);
elseif(n>=10&&n<100)
printf("它是%d位数!
\n",i=2);
elseif(n>=100&&n<1000)
printf("它是%d位数!
\n",i=3);
elseif(n>=1000&&n<10000)
printf("它是%d位数!
\n",i=4);
elseif(n>=10000&&n<100000)
printf("它是%d位数!
\n",i=5);
else
printf("输入的数超出范围!
\n",i=0);
for(j=0;j
{
printf("%d",n%10);
n=n/10;
}
}
14、一个皮球从100米高度自由落下,每次落地后反弹回原高度的一半,再落下,再反弹。
求当它第10次落地时,共经过了多少米,第10次反弹多高?
#include
voidmain()
{
floath=100,s=0;
inti;
for(i=1;i<=10;i++)
{
s=s+h;
h=h/2;
s=s+h;
}
printf("当它第10次落{地时,共经过了%f米,第10次反弹%f米高",s-h,h);
15、编写程序,使用循环结构输出下列图形:
* * * *
* * * *
* * * *
* * * *
* * * *
#include"stdio.h"
voidmain()
{
inti,j;
for(i=1;i<=5;i++)
{
for(j=1;j<=5-i;j++)
printf("");
printf("****\n");
}
}
16、求3行3列矩阵a[3][3]={1,2,3,4,5,6,7,8,9}非对角线上元素之和。
#include
voidmain()
{
inta[3][3]={1,2,3,4,5,6,7,8,9};
inti,j,s=0;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
if(i!
=j&&i+1!
=2)
s=s+a[i][j];
printf("%d",s);
}
17、求1-1/2+1/3-1/4+...+1/99-1/100的值。
#include
intmain()
{
inti;
doublesum,k=1;
for(i=1,sum=0;i<=100;i++)
{
sum+=k/i;
k*=-1;
}
printf("%lf\n",sum);
return0;
}
18编程计算1*2*3+3*4*5+5*6*7+...+99*100*101的值。
#include
voidmain()
{inti,sum=0;
for(i=1;i<=99;i=i+2)
sum=sum+i*(i+1)*(i+2);
printf("%d\n",sum);
}
19、编程计算1!
+2!
+3!
+...+10!
的值。
#include
voidmain()
{inti,j,sum1=1,sum=0;
for(i=1;i<=10;i++)
{
for(j=1;j<=i;j++)
sum1=sum1*j;
sum=sum+sum1;
}
printf("1!
+2!
+3!
+…+10!
=%ld\n",sum);
}
20、输入一串字符,逆序输出。
要求使用数组实现。
#include
#include
voidmain()
{inti,j,t,n;
chara[10];
printf("请输入字符串:
");
gets(a);
n=strlen(a);
for(i=0;i{
t=a[i];
a[i]=a[n-1-i];
a[n-1-i]=t;
}
for(j=0;jprintf("%c",a[j]);
printf("\n");
}
21、输入5个数,求其中的最小值并输出。
要求编写求最小值的函数。
#include
intmin(inta[],intn)
{
inti,j,t;
for(i=1;i<=n-1;i++)
{
for(j=0;j<=n-1-i;j++)
{
if(a[j]{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
}
}
voidmain()
{
inta[5],i;
for(i=0;i<5;i++)
scanf("%d",&a[i]);
min(a,5);
printf("%d\n",a[4]);
}
22、已知银行定期存款利率为r=2.25%,输入存款本金x、存款年数n,输出本利之和y=x(1+r)(1+r)...(1+r),共n个(1+r)
#include
voidmain()
{
floatx,y,r=0.0225;
inti,n;
printf("请输入存款本金x和存款年数n:
");
scanf("%f%d",&x,&n);
y=x;
for(i=1;i<=n;i++)
y=y*(1+r);
printf("%f\n",y);
}
23、编写程序,判断从键盘输入的字符中数字字符的个数、大写字母的个数、小写字母的个数及其它字符的个数,以*作为字符输入结束标志。
#include
voidmain()
{
charch;
intsz,dz,xz,qt;
sz=dz=xz=qt=0;
while((ch=getchar())!
='*')
{
if(ch>='0'&&ch<='9')
sz++;
elseif(ch>='A'&&ch<='Z')
dz++;
elseif(ch>='a'&&ch<='z')
xz++;
else
qt++;
}
printf("数字:
%d,大写字母:
%d,小写字母:
%d,其它字符:
%d\n",sz,dz,xz,qt);
}
24、求两个正整数的最大公约数
#include
voidmain()
{intm,n,m1,n1,t,k;
printf(“请输入两个正整数:
”);
scanf(“%d%d”,&m,&n);
if(m{t=m;
m=n;
n=t;
}
m1=m;
n1=n;
while((k=m1%n1)!
=0)
{m1=n1;
n1=k;
}
printf("%d和%d最大公约数是:
%d\n",m,n,n1);
}
25、输入一串字符,将其中的大写字母变成对应的小写字母并输出。
#include
voidmain()
{inti,n;
chara[20];
printf("请输入字符串:
");
gets(a);
n=strlen(a);
for(i=0;iif(a[i]>='A'&&a[i]<='Z')
a[i]=a[i]+32;
for(i=0;iprintf("%c",a[i]);
printf("\n");
}
26、从键盘输入一个字符串,再输入两个正整数m和n,输出字符串中从m开始,连续n个字符。
例如,输入abcdefg,2,3,输出bcd。
#include
voidmain()
{inti,m,n;
chara[20];
printf("请输入字符串:
");
gets(a);
n=strlen(a);
printf("请输入两个正整数:
");
scanf("%d%d",&m,&n);
for(i=m-1;iprintf("%c",a[i]);
printf("\n");
}
27、输入n的值,计算并输出1*1+2*2+3*3+4*4+5*5+...+n*n的值。
要求编写函数f求平方。
#include
voidmain()
{intf(intx);
intn,sum;
printf("请输n值:
");
scanf("%d",&n);
sum=f(n);
printf("%d\n",sum);
}
intf(intx)
{intj,z=0;
for(j=1;j<=x;j++)
z=z+j*j;
returnz;
}
28、打印所有的水仙花数。
所谓水仙花数是指一个三位数,其各位数字的立方和等于该数。
例如,153就是一个水仙花数,因为153=1*1*1+5*5*5+3*3*3。
#include
voidmain()
{inta,b,c,s;
for(a=1;a<=9;a++)
{
for(b=0;b<=9;b++)
{
for(c=0;c<=9;c++)
if(a*100+b*10+c==a*a*a+b*b*b*b+c*c*c)
{
s=a*100+b*10+c;
printf("%d\n",s);
}
}
}
}
29、编写程序,将用户输入的字符串中所有的字符a去掉,然后输出剩余的字符。
#include
voidmain()
{inti,j,n1;
chara[20];
printf("请输入字符串:
");
gets(a);
n1=strlen(a);
for(i=0;iif(a[i]!
='a')
printf("%c",a[i]);
printf("\n");
}
30、编写程序,将用户输入的字符串中所有的字符a用*代替,然后输出。
#include
voidmain()
{inti,n;
charb[20];
printf("请输入字符串:
");
gets(b);
n=strlen(b);
for(i=0;iif(b[i]=='a')
b[i]='*';
for(i=0;iprintf("%c",b[i]);
printf("\n");
}
31、编写程序,将一个一维数组的元素逆序存放并输出。
例如,原顺序为1,2,3,4,5,逆序后为5,4,3,2,1。
#include
voidmain()
{inti;
inta[5];
printf(“请输入5个数:
”);
for(i=0;i<5;i++)
scanf(“%d”,&a[i]);
for(i=0;i<2;i++)
{
t=a[i];
a[i]=a[4-i];
a[4-i]=t;
}
for(i=0;i<5;i++)
printf("%d",b[i]);
printf("\n");
}
32、起泡法(选择法)对十个数排序
#include
voidmain()
{
inti,j,t;
inta[10];
printf("请输入10个数:
\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(j=0;j<9;j++)
for(i=0;i<9-j;i++)
if(a[i]>a[i+1])
{
t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}
for(i=0;i<10;i++)
printf("%d",a[i]);
printf("\n");
}
33、编写程序,使用循环结构输出下列图形:
1
1 2 3
1 2 3 4 5
1 2 3 4 5 6 7
#include
voidmain()
{
introw=4;
inti,j;
for(i=0;i{
for(j=1;j<(i+1)*2;j++)
printf("%d",j);
printf("\n");
}
}
|