C语言编程答案大题.docx
《C语言编程答案大题.docx》由会员分享,可在线阅读,更多相关《C语言编程答案大题.docx(26页珍藏版)》请在冰豆网上搜索。
C语言编程答案大题
1.有一函数:
当x<0时,y=-1;当x=0时,y=0;当x>0时,y=1。
编一程序,输入x的值,输出y的值。
#include
intmain()
{
intx,y;
scanf("%d",&x);
if(x>=0)
if(x>0)y=1;
elsey=0;
elsey=-1;
printf("x=%d,y=%d\n",x,y);
return0;
}
2.输入三个实数,将这三个数按由大到小的顺序排列,并输出这三个数。
#include
intmain()
{inta,b,c,t;
scanf("%d,%d,%d",&a,&b,&c);
if(a
{
t=a;
a=b;
b=t;
}
if(a{
t=a;
a=c;
c=t;
}
if(b{
t=b;
b=c;
c=t;
}
printf("%d,%d,%d\n",a,b,c);
return0;
}
3.有三个整数a,b,c,由键盘输入,输出其中最大者。
#include
intmain()
{inta,b,c,max;
printf("请输入a,b,c\n");
scanf("%d,%d,%d",&a,&b,&c);
max=a;
if(max
max=b;
if(maxmax=c;
printf("最大的数为%d\n",max);
return0;
}
4.编程求圆面积、圆周长。
要求圆半径由键盘输入,输出时要求有文字说明,取小数点后两位数字。
#include
#definepi3.1416
main()
{
floatr,l,s;
printf("请输入半径:
\n");
scanf("%f",&r);
l=2*pi*r;
s=pi*r*r;
printf("l=%7.2f\ns=%7.2f\n",l,s);
}
5.有分段函数:
当x<-10时,y=|x|+5;当-10≤x≤10时,y=4x-8;当x>10时,y=sqrt(x)。
编一程序,输入x的值,输出y的值。
#include
#include
intmain()
{
intx,y;
scanf("%d",&x);
if(x<-10)
y=abs(x)+5;
elseif(x<=10)
y=4*x-8;
elsey=sqrt(x);
printf("x=%d,y=%d\n",x,y);
return0;
}
6.编写程序,判断某一年是否是闰年。
(闰年的条件是:
能被4整除,但是不能被100整除,或者可以被400整除。
)
#include
intmain()
{intyear,leap;
printf("enteryear:
");
scanf("%d",&year);
if(year%4==0)
if(year%100==0)
if(year%400==0)
leap=1;
else
leap=0;
else
leap=1;
else
leap=0;
if(leap)
printf("%dis",year);
else
printf("%disnot",year);
printf("aleapyear.\n");
return0;
}
7.输入一个华氏温度,要求输出摄氏温度,输出时要求有文字说明,取小数点后两位数字。
公式为c=5/9(f-32)
#include
intmain()
{
floatc,f;
printf("请输入一个华氏温度:
");
scanf("%f",&f);
c=(5.0/9.0)*(f-32);
printf("摄氏温度为:
%5.2f\n",c);
return0;
}
8.有一函数:
当x<1时,y=|x|;当1<=x<10时,y=2x-1;当x>=10时,y=3x+11。
编一程序,输入x的值,输出y的值。
#include
#include
voidmain()
{
intx,y;
printf("输入x:
");
scanf("%d",&x);
if(x<1)
y=abs(x);
elseif(x<10)
y=2*x-1;
else
y=3*x+11;
printf("x=%3d,y=%d\n",x,y);
}
9.输入三个实数,将这三个数按由小到大的顺序排列,并输出这三个数。
#include
voidmain()
{
inta,b,c,t;
scanf("%d,%d,%d",&a,&b,&c);
if(a>b)
{t=a;a=b;b=t;}
if(a>c)
{t=a;a=c;c=t;}
if(b>c)
{t=b;b=c;c=t;}
printf("%d,%d,%d\n",a,b,c);
}
10.输入一个字符,判断它是否是小写字母,如果是,将它转换成大写字母;如果不是,不转换。
然后输出最后得到的字符。
#include
voidmain()
{
charch;
scanf("%c",&ch);
ch=(ch>='A'&&ch<='Z')?
(ch+32):
ch;
printf("%c\n",ch);
}
11.编程求圆柱体积,圆柱表面积。
要求圆半径,圆柱高由键盘输入,输出时要求有文字说明,取小数点后两位数字。
#include
voidmain()
{
floatr,h,v,s;
floatpi=3.1415926;
printf("表输入圆半径r、圆柱高h:
");
scanf("%f%f",&r,&h);
v=pi*r*r*h;
s=2*pi*r*r+2*pi*r*h;
printf("圆柱体积为:
v=%6.2f\n",v);
printf("圆柱表面积为:
s=%6.2f\n",s);
}
12.有分段函数:
当x<-5时,y=x+10;当-5≤x≤5时,y=x^2;当x>5时,y=2x-10.
编一程序,输入x的值,输出y的值。
#include
intmain()
{
intx,y;
scanf("%d",&x);
if(x<-5)
y=x+10;
elseif(x<=5)
y=x^2;
elsey=2*x-10;
printf("x=%d,y=%d\n",x,y);
return0;
}
13.有三个整数a,b,c,由键盘输入,输出其中最小者。
#include
intmain()
{inta,b,c,max;
printf("请输入a,b,c\n");
scanf("%d,%d,%d",&a,&b,&c);
max=a;
if(max>b)
max=b;
if(max>c)
max=c;
printf("最小的数为%d\n",max);
return0;
}
14.输入一个字符,判断它是否是大写字母,如果是,将它转换成小写字母;如果不是,不转换。
然后输出最后得到的字符。
#include
voidmain()
{
charch;
scanf("%c",&ch);
ch=(ch>='A'&&ch<='Z')?
(ch+32):
ch;
printf("%c\n",ch);
}
15.输入三角形的三边长,求三角形面积。
求三角形面积的公式为
area=sqrt(s(s-a)(s-b)(s-c)),其中s=(a+b+c)/2
#include
#include
voidmain()
{
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));
printf("三角形面积area=%f\n",area);
}
16.编程求2!
+4!
+6!
+8!
+10!
的值,并输出结果。
#include
intmain()
{
intn=1,sum=0,j,m=1,i;
for(i=1;i<=5;i++){
m=1;
for(j=1;j<=2*i;j++)
m=m*j;
sum=sum+m;
}
printf("sum=%d\n",sum);
return0;
}
17.猴子吃桃问题。
猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。
第二天早上又将剩下的桃子吃掉一半,又多吃一个。
以后每天早上都吃了前一天剩下的一半零一个。
到第10天早上想吃时就剩一个桃子了。
求第一天共摘了多少个桃子。
#include
intmain()
{
intday,x1,x2;
day=9;
x2=1;
while(day>0)
{x1=(x2+1)*2;
x2=x1;
day--;
}
printf("total=%d\n",x1);
return0;
}
18.输出所有的“水仙花数”,所谓“水仙花数”是指一个3位数,其各位数字立方和等于该数本身。
#include
voidmain()
{
inti,j,k,n;
printf("narcissusnumbersare");
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("%5d",n);
}
printf("\n");
}
19.编程求1~100之间的所有素数,并输出结果。
#include
#include
intmain()
{
intn,m=0,k,i;
for(n=1;n<=100;n=n+2)
{k=sqrt(n);
for(i=2;i<=k;i++)
if(n%i==0)break;
if(i>=k+1)
{printf("%d",n);
m=m+1;
}
if(m%10==0)printf("\n");
}
printf("\n");
return0;
}
20.编程求1!
+3!
+5!
+7!
+9!
的值,并输出结果。
#include
intmain()
{
intn=1,sum=0,j,m=1,i;
for(i=1;i<=5;i++){
m=1;
for(j=1;j<=2*i-1;j++)
m=m*j;
sum=sum+m;
}
printf("sum=%d\n",sum);
return0;
}
21.用pi/4≈1-1/3+1/5-1/7+...公式求pi的近似值,直到某一项的绝对值小于10的-6次方为止。
#include
#include
intmain()
{intsign=1;doublepi=0,n=1,term=1;
while(fabs(term)>=1e-6)
{pi=pi+term;
n=n+2;
sign=-sign;
term=sign/n;
}
pi=pi*4;
printf("pi=%10.8f\n",pi);
return0;
}
22.一个球从100m高度自由落下,每次落地后又反跳回原高度的一半,再落下,再反弹。
求它在第10次落地时共经过多少米?
#include
intmain()
{
inti;
doublem=100,sum=0;
for(i=0;i<10;i++){
sum=sum+m;
m=m/2;
}
printf("%f\n",sum);
return0;
}
23.输入两个正整数m和n,求其最大公约数和最小公倍数。
#include
#include
voidmain()
{
intp,r,n,m,temp;
printf("请输入n和m:
");
scanf("%d,%d",&n,&m);
if(n{
temp=n;
n=m;
m=temp;
}
p=n*m;
while(m!
=0)
{
r=n%m;
n=m;
m=r;
}
printf("最大公约数:
%d\n",n);
printf("最小公倍数:
%d\n",p/n);
}
24.利用循环,编程求1!
+2!
+3!
+…+10!
的值,并输出结果。
#include
intmain()
{
intn=1,sum=0,j,m=1,i;
for(i=1;i<=10;i++){
m=1;
for(j=1;j<=i;j++)
m=m*j;
sum=sum+m;
}
printf("sum=%d\n",sum);
return0;
}
25.有一分数序列:
2/1,3/2,5/3,8/5,13/8,21/13......,求出这个数列前20项之和。
#include
intmain()
{
inti,n=20;
doublea=2,b=1,s=0,t;
for(i=1;i<=n;i++)
{
s=s+a/b;
t=a,
a=a+b,b=t;
}
printf("sum=%16.10f\n",s);
return0;
}
26.求Fibonacci数列前40个数。
这个数列有以下特点:
第1和第2个数为1,从第3个数开始,该数是其前面两个数之和。
#include
intmain()
{intf1=1,f2=1,f3;inti;
printf("%12d\n%12d\n",f1,f2);
for(i=1;i<=38;i++)
{f3=f1+f2;
printf("%12d\n",f3);
f1=f2;
f2=f3;
}
return0;
}
27.一个数如果恰好等于它的因子之和,这个数就称为完数。
例如,6的因子为1、2、3,而6=1+2+3,因此6是完数。
编程求1000以内所有完数。
#include
intmain()
{
intm,s,i;
for(m=2;m<1000;m++)
{s=0;
for(i=1;iif((m%i)==0)s=s+i;
if(s==m)
{printf("%d,itsfactorsare",m);
for(i=1;iif(m%i==0)printf("%d",i);
printf("\n");
}
}
return0;
}
28.求S=a+aa+aaa+...+aa...a(n个a)之值。
其中a是一个数字,n代表a的位数。
例如:
2+22+222+2222+22222(此时n为5),n由键盘输入。
#include
intmain()
{
inta,sn=0,tn=0,k,i=1,n;
printf("a,n=:
");
scanf("%d,%d",&a,&n);
while(i<=n)
{
tn=tn+a;
sn=sn+tn;
a=a*10;
++i;
}
printf("a+aa+aaa+...=%d\n",sn);
return0;
}
29.编程求100~200之间的所有素数,并输出结果。
#include
#include
intmain()
{
intn,m=0,k,i;
for(n=101;n<=200;n=n+2)
{k=sqrt(n);
for(i=2;i<=k;i++)
if(n%i==0)break;
if(i>=k+1)
{printf("%d",n);
m=m+1;
}
if(m%10==0)printf("\n");
}
printf("\n");
return0;
}
30.输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数。
#include
voidmain()
{
charc;
intletters=0,space=0,digit=0,other=0;
printf("\n");
while((c=getchar())!
='\n')
{
if(c>='a'&&c<'z'||c>='A'&&c<='Z')
letters++;
elseif(c=='')
space++;
elseif(c>='0'&&c<='9')
digit++;
else
other++;
}
printf("字母=%d\n空格=%d\n数字=%d\n其他字符=%d\n",letters,space,digit,other);
}
x31.将一个数组中的值按逆序重新存放。
例如,原来顺序为8,6,4,3,2,0。
要求改为0,2,3,4,6,8。
#include
#defineN6
voidmain()
{
inta[N],i,temp;
printf("enterarraya:
\n");
for(i=0;iscanf("%d",&a[i]);
printf("arraya:
\n");
for(i=0;iprintf("%4d",a[i]);
for(i=0;i{
temp=a[i];
a[i]=a[N-i-1];
a[N-i-1]=temp;
}
printf("\nNow,arraya:
\n");
for(i=0;iprintf("%d",a[i]);
printf("\n");
}
32.编写一个函数,求数列1+1/2+1/3+1/4+1/5+...1/n,利用主函数调用这个函数并输出结果。
#include
main()
{
floati=1,sum=0,n;
printf("inputanumbern:
");
scanf("%f",&n);
while(i<=n)
{
sum+=1.0/i;
i=i+1;
}
printf("%f\n",sum);
}
33.将一个二维数组inta[3][4]的行和列的元素互换,存到另外一个二维数组中。
#include
voidmain()
{
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");
}
}
34.利用循环输出以下图形
*****
****
***
**
*
#include
intmain()
{
inti,j,m;
for(i=1;i<=5;i++)
{
m=i;
for(m=1;m
printf("");
for(j=0;j<=5-i;j++)
printf("*");
printf("\n");
}
return0;
}
35.用冒泡排序法对输入的10个数进行降序排序,并存入数组中。
#include
intmain()
{
inta[10];
inti,j,t;
printf("input10numbers:
\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
printf("\n");
for(j=0;j<9;j++)
for(i=0;i<9-j;i++)
if(a[i]{t=a[i];a[i]=a[i+1];a[i+1]=t;}
printf("thesortednumbers:
\n");
for(i=0;i<10;i++)
printf("%d",a[i]);
printf("\n");
return0;
}
36.有一个3乘4的矩阵,要求编程序求出其中值最大的那个元素的值,以及其所在的行号和列号。
#include
voidmain()
{
inti,j,row=0,colum=0,max;
inta[3][4]={{1,2,3,4},{9,8,7,6},{-10,10,-5,2}};
max=a[0][0];
for(i=0;i<=2;i++)
for(j=0;j<=3;j++)
if(a[i][j]>max)
{
max=a[i][j];
row=i;
colum=j;
}
printf("max=%d,row=%d,colum=%d\n",max,row,colum);
}
37.用冒泡排序法对输入的10个数进行升序排序,并存入数组中。
#include
intmain()
{
inta[10];
inti,j,t;
printf("input10numbers:
\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);