C语言经典题目及答案答案在后面.docx
《C语言经典题目及答案答案在后面.docx》由会员分享,可在线阅读,更多相关《C语言经典题目及答案答案在后面.docx(10页珍藏版)》请在冰豆网上搜索。
C语言经典题目及答案答案在后面
程序设计题
1.有一函数:
x(x<1)
y=2x-1(1≤x<10)
3x-11(x≥10)
写一程序,输入x,输出y值。
2.百钱买百鸡:
一百元钱买一百只鸡,公鸡5元一只,母鸡3元一只,小鸡一元3只,求出所有购买方案。
3.将一元钱全兑换成一分、两分、五分的硬币,求所有兑换方法及方法总数。
1
+
1+2
+
1+2+3
+
……
+
1+2+3+……+100
1*2
1*2*3
1*2*3*……*100
4.求下列算式的值。
5.勾股数是指满足i2+j2=k2的整数i,j,k。
编程求1~100之间的勾股数,并打印出结果,且要求没有重复。
6.求Sn=2+22+222+…+222…2(n个2)之值,其中n由键盘输入。
7.打印出所有的“水仙花数”,所谓“水仙花数”是指一个3位数,其各位数字立方和等于该数本身。
如:
153=13+53+33
8.用数组来求Fibonacci数列问题(求前20个数)。
数列如下:
1,1,2,3,5,8,13……
9.用起泡法对10个数由小到大排序。
10.将一个二维数组行和列互换,存到另一个二维数组中。
11.打印“魔方阵”,所谓魔方阵是指这样的方阵,它的每一行、每一列和对角线之和均相等。
要求打印出由1~n2的奇数构成的魔方阵。
12.求具有abcd=(ab+cd)2性质的四位数。
如:
3025=(30+25)2
13.写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果,两个整数由键盘输入。
14.输入两个3行4列的矩阵a、b,求出它们的和c,并输出c矩阵。
15.编程求满足表达式PEAR-ARA=PEA的所有数字组合P、E、A、R,并打印出来。
16.一球从100m高度自由落下,每次落地后反跳回原高度的一半,再落下。
求它在第10次落地时共经过多少米?
第10次反弹多高?
17.打印一个九九乘法表。
18.一块长宽高分别为15厘米、10厘米和5厘米的砖块放在地上(如图),蚂蚁要从M点出发,经过BC爬到A点。
求K点在BC上的哪个位置才能通过最短的路径达到A点?
最短路径为多少?
(要求精确度不要太高,取0.1即可)
提示:
AK+MK=√102+k2+√52+(15-K)2
A
BC
K M
程序设计题源代码
1、略
2、main()
{
intx,y,z,n=0;
for(x=1;x<=19;x++)
for(z=99;z>0;z=z-3)
{y=100-x-z;
if(y>0&&100==5*x+3*y+z/3)
{printf("[%d,%d,%d]\t",x,y,z);n++;}
}
printf("\nn=%d\n",n);
}
3、main()
{
intx,y,z,n=0;
for(x=0;x<=20;x++)
for(y=0;y<=(100-5*x)/2;y++)
{z=100-5*x-2*y;
printf("[%d,%d,%d]\t",x,y,z);
n++;}
printf("n=%d\n",n);
}
4、main()
{
intsum1=0,i;
doublesum=0,sum2=1;
for(i=1;i<=100;i++)
{sum1=sum1+i;
sum2=sum2*i;
sum=sum+(sum1/sum2);
}
printf("sum=%f\n",sum);
}
5、main()
{inti,j,k,n=0;
for(i=1;i<=99;i++)
for(j=i;j<=99;j++)
for(k=j+1;k<=99;k++)
if(i*i+j*j==k*k)
{printf("%3d%3d%3d\t",i,j,k);
n++;break;}
printf("\n%d\n",n);
}
6、main()
{inta=2,n,count=1,sn=0,tn=0;
printf("pleaseinputn(n<6):
");
scanf("%d",&n);
for(;count<=n;count++)
{tn=tn+a;
sn=sn+tn;
a=a*10;}
printf("2+22+222+...=%d\n",sn);
}
7、main()
{inti,j,k,n;
for(n=100;n<1000;n++)
{i=n/100;j=n/10-i*10;k=n%10;
if(n==i*i*i+j*j*j+k*k*k)
printf("%4d\t",n);
}
printf("\n");
}
8、main()
{inti;
intf[20]={1,1}; /*求数列中前20个数*/
for(i=2;i<20;i++)
f[i]=f[i-1]+f[i-2];
for(i=0;i<20;i++)
{if(i%5==0)printf("\n");
printf("%12d",f[i]);
}
}
9、main()
{inta[11];
inti,j,t;
printf("pleaseinput10numbers:
\n");
for(i=1;i<11;i++)
scanf("%d",&a[i]);
printf("\n");
for(j=1;j<=9;j++)
for(i=1;i<=10-j;i++)
if(a[i]>a[i+1])
{t=a[i];a[i]=a[i+1];a[i+1]=t;}
printf("thesortednumbers:
\n");
for(i=1;i<11;i++)
printf(" %d",a[i]);
}
10、main()
{inta[2][3]={{1,2,3},{4,5,6}};
intb[3][2],i,j;
printf("arraya:
\n");
for(i=0;i<=1;i++)
{for(j=0;j<=2;j++)
{printf("%5d",a[i][j]);b[j][i]=a[i][j];}
printf("\n");}
printf("arrayb:
\n");
for(i=0;i<=2;i++)
{for(j=0;j<=1;j++)
printf("%5d",b[i][j]);
printf("\n");}
}
816
357
492
11、打印“魔方阵”。
所谓魔方阵是指这样的方阵,它的每一行、每一列和对角线之和均相等。
例如,三阶魔方阵为
要求打印出由1~n2的奇数构成的魔方阵。
解:
魔方阵中各数的排列规律如下:
⑴所构成的n阶魔方阵,n必须为奇数;
⑵将“1”放在第一行最中间一列;
⑶从“2”开始直到n×n止,每个数存放的行比前一个数的行数减1,列数加1;
⑷如果上一数行数为1,则令下一数行数为n;
⑸如果上一数列数为n,则令下一数列数为1,行数减1;
⑹如果按上面的规定确定的位置上已有数,或上一数是第1行第n列时,则把下一数放在上一数的下面,即列数不变,行数加1。
按此方法可得任何阶的魔方阵。
程序如下:
main()
{inta[20][20],i,j,k,p,m,n;
p=1;
while(p==1)
{printf("entern(n=1~19):
");
scanf("%d",&n);
if((n!
=0)&&(n<=19)&&(n%2!
=0))p=0;
elseif(n%2==0)
printf("Error!
Pleaseenteraoddnumber!
\n");
elseif(n>19)printf("Error!
Toobig!
\n");
}
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
a[i][j]=0;
j=n/2+1;
a[1][j]=1;
for(k=2;k<=n*n;k++)
{i=i-1; j=j+1;
if((i<1)&&(j>n))
{i=i+2;j=j-1;}
else{if(i<1)i=n;
if(j>n)j=1;}
if(a[i][j]==0)a[i][j]=k;
else{i=i+2;j=j-1;a[i][j]=k;}
}
for(i=1;i<=n;i++)
{for(j=1;j<=n;j++)
printf("%4d",a[i][j]);
printf("\n");}
}
12、main()
{intn,a,b;
printf("\nTherearefollowingnumberwith4digitssatisfiedcondition\n");
for(n=1000;n<10000;n++)
{a=n/100;
b=n%100;
if((a+b)*(a+b)==n)
printf("%d ",n);
}
}
13、intdivisor(inta,intb)
{intmax,i,t;
if(a
elset=b;
for(i=1;i<=t;i++)
if(a%i==0&&b%i==0)
max=i;
returnmax;
}
intmultiple(inta,intb)
{intmin;
min=a*b/divisor(a,b);
returnmin;}
main()
{inta,b,max,min;
printf("inputa,b:
");
scanf("%d%d",&a,&b);
max=divisor(a,b);
min=multiple(a,b);
printf("max=%-5d,min=%-5d",max,min);
}
14、main()
{inti,j,a[3][4],b[3][4],c[3][4];
for(i=0;i<=2;i++)
for(j=0;j<=3;j++)
scanf("%d",&a[i][j]);
for(i=0;i<=2;i++)
for(j=0;j<=3;j++)
{scanf("%d",&b[i][j]);
c[i][j]=a[i][j]+b[i][j];}
for(i=0;i<=2;i++)
{for(j=0;j<=3;j++)
printf("%4d",c[i][j]);
printf("\n");
}
}
15、main()
{intp,e,a,r,b,j,c;
for(p=1;p<=9;p++)
for(e=0;e<=9;e++)
for(a=1;a<=9;a++)
for(r=0;r<=9;r++)
{b=1000*p+100*e+10*a+r;
j=100*a+10*r+a;
c=100*p+10*e+a;
if(b-j==c)
{printf("P=%d,E=%d,A=%d,R=%d\n",p,e,a,r);
printf("%d-%d=%d\n",b,j,c);}
}
}
16、main()
{ floats=100,h=s/2;
intn;
for(n=2;n<=10;n++)
{ s=s+2*h;
h=h/2; }
printf("s=%fm,\t",s);
printf("h=%fm\n",h);
}
17、main()
{ inti,j;
printf("%4c",2);
for(i=1;i<=9;i++)
printf("%4d",i);
printf("\n");
for(i=1;i<=9;i++)
{printf("%4d",i);
for(j=1;j<=i;j++)
printf("%4d",i*j);
printf("\n");}
}
18、#include
main()
{ floatm=5+15+10,k,s,n,a,b;
for(k=0;k<=15;k=k+0.1)
{ a=15-k;
s=sqrt(100+k*k)+sqrt(25+a*a);
if(s<=m)
{m=s;n=k;}}
printf("BK=%4.1f,",n);
printf("S(min)=%4.1f\n",m);
}