c语言编程题答案.docx
《c语言编程题答案.docx》由会员分享,可在线阅读,更多相关《c语言编程题答案.docx(16页珍藏版)》请在冰豆网上搜索。
c语言编程题答案
第三章;
1.编写一个程序,从键盘输入一个三位整数,将它们逆序输出。
例如输入127,输出721。
voidmain()
{intn,a,b,c,t;
scanf("%d",&n);
if(n>=100&&n<1000)
{a=n/100;
b=n/10%10;
c=n%10;
t=c*100+b*10+a;
if(c!
=0)
printf("%d",t);
if(c==0)
printf("0%d",t);
}
}
方法二:
voidmain()
{
intn,x1,x2,x3,y;
scanf("%3d",&n);
x1=n/100;
x2=n/10%10;
x3=n%10;
y=x3*100+x2*10+x1;
printf("y=%d",y);
}
第四章:
打印出所有的“水仙花数”,所谓“水仙花数”是指一个3位数,其各位数字立方和等于该
数本身。
例如:
153是一水仙花数,因为153=1^3+5^3+3^3.
#include"stdio.h"
voidmain()
{intn,i,a,b,c,t;
for(i=100;i<1000;i++)
{n=i;
a=n/100;
b=n/10%10;
c=n%10;
t=a*a*a+b*b*b+c*c*c;
if(t==n)
printf("%d",n);
}
}
方法二:
voidmain()
{
inti,x,y,z;
printf("所有的水仙花为:
n");
for(i=100;i<1000;i++)
{x=i/100;y=i/10%10;z=i%10;
if(i==x*x*x+y*y*y+z*z*z)
printf("%5d",i);
}
}
21编写一程序,对于给定的一个百分制成绩,输出相应的五分制成绩。
设:
90分以上为A,80~89分为B,70~79分为C,60~69分为D,60分以下为E。
#include"stdio.h"
voidmain()
{floatscore;
scanf("%f",&score);
if(score>100||score<0)
printf("\ninputerror!
");
if(score>=90)
printf("A");
if(score>=80&&score<=89)
printf("B");
if(score>=70&&score<=79)
printf("C");
if(score>=60&&score<=69)
printf("D");
if(score<60)
printf("E");
}
第五章:
26键盘输入10个实型数,求其倒数的和并输出.
#include"stdio.h"
voidmain()
{floata[10],t;
doubles=0.0;
inti;
for(i=0;i<10;i++)
{scanf("%f",&a[i]);
t=1/a[i];
s=s+t;}
printf("%f",s);
}
方法二:
#include
main()
{floata[10],s=0.0;
inti;
for(i=0;i<10;i++)
{
scanf("%f",&a[i]);
a[i]=1.0/a[i];}
for(i=0;i<10;i++)
s+=a[i];
printf("%f",s);
}
27键盘输入10个正实型数,求其方根的和并输出。
#include"stdio.h"
#include"math.h"
voidmain()
{floata[10],t,s=0.0;
inti;
for(i=0;i<=9;i++)
{scanf("%f",&a[i]);
t=sqrt(a[i]);
s=s+t;}
printf("%f",s);
}
方法二:
#include
#include
main()
{
floata[10];
inti;
floats=0.0,t;
for(i=0;i<10;i++)
{
scanf("%f",&a[i]);
t=sqrt(a[i]);
}
for(i=0;i<10;i++)
s+=t;
printf("%f",s);
}
28计算s=1-2!
+3!
-4!
+…-10!
的值并输出
#include"stdio.h"
voidmain()
{intt,i,j,a;
longs=0;
for(i=1;i<=10;i++)
{t=1;
for(j=1;j<=i;j++)
t=t*j;
if(i%2==0)
a=-1*t;
else
a=t;
s=s+a;}
printf("%ld",s);
}
29计算s=1-1/3+1/5-1/7+…1/101的值并输出。
#include"stdio.h"
voidmain()
{inti;
floatt,s=0.0;
for(i=1;i<=101;i+=2)
{t=1.0/i;
if(i/2%2!
=0)
t=-1*t;
s+=t;}
printf("%f",s);
}
方法二:
#include"math.h"
#include"stdio.h"
main()
{
longi=1;doubles=0.0,m;
for(;i<=51;i++)
{m=(double)1.0/(2*i-1);
if(i%2==0)m=-m;
s+=m;
}
printf("s=%lf",s);
}
30输入一个正整数,要求以相反的顺序输出该数。
例如输入12345,输出位54321。
#include"stdio.h"
voidmain()
{longn;
scanf("%ld",&n);
while(n)
{printf("%ld",n%10);
n=n/10;
}
}
31任意输入一个偶数,请将它分解为两个素数之和。
intisP(intm)
{inti;
for(i=2;iif(m%i==0)return0;return1;}
main()
{intnum,i,j;i=0;j=0;printf("num=");
scanf("%d",&num);
for(i=2;i<=num/2;i++)
{j=num-i;if(isP(i)&&isP(j))
{printf("num=%d+%d",i,j);
printf("\n");
}
}
}
32编写程序,输入三角型的三条边长,求其面积。
注意:
对于不合理的边长输入要输出数据错误的提示信息。
#include"stdio.h"
#include"math.h"
voidmain()
{floata,b,c,t;
doubles;
scanf("%f%f%f",&a,&b,&c);
if(a+b>c&&a+c>b&&b+c>a)
{t=(a+b+c)/2.0;
s=sqrt(t*(t-a)*(t-c)*(t-b));
printf("%f",s);}
else
printf("error");
}
33输入n值,输出如图所示矩形。
******
******
******
******
******
******
n=6时的矩形
按照上述思路,实现打印矩形。
voidmain()
{intn,i,j;
scanf("%d",&n);
for(i=1;i<=n;i++)
{for(j=1;j<=n;j++)
printf("*");
printf("\n");
}
}
34.编写程序:
求S=1/(1*2)+1/(2*3)+1/(3*4)+……前50项之和。
#include
#include
main()
{
longi=1;doubles=0.0,m;
for(;i<51;i++)
{
m=(double)1.0/(i*(i+1));
s+=m;
}
printf("s=%lf",s);
}
35统计在[1030-25830]之间有多少个数能同时被13和27整除。
#include"stdio.h"
voidmain()
{inti,j=0;
for(i=1030;i<=25830;i++)
if(i%13==0&&i%27==0)
j++;
printf("%d",j);
}
第六章:
22在主函数中输入8个整数,调用函数对其进行排序(从小到大),排序方法不限,
最后在主函数中输出结果。
#include"stdio.h"
inta[8],i,j,n,t,b[8];
intfun(intn)
{for(i=0;i<=7;i++)
for(j=i+1;j<=7;j++)
if(a[i]>a[j])
{t=a[i];a[i]=a[j];a[j]=t;}
return(a[n]);
}
voidmain()
{for(i=0;i<=7;i++)
scanf("%d",&a[i]);
for(n=0;n<=7;n++)
b[n]=fun(n);
for(n=0;n<=7;n++)
printf("%d",b[n]);
}
23编写函数,采用递归方法将任一整数转换为二进制形式。
法二:
#defineN10000000000
#include"stdio.h"
voidmain()
{intj=1,a[10],m;
longn,t,i;
scanf("%ld",&n);
for(i=2;i<=N;i=i*2)
{a[0]=n%2;
t=n/i;
a[j]=t%2;
j++;
if(t==1)
break;
}
for(m=j-1;m>=0;m--)
printf("%d",a[m]);
}
法二:
#include
voidchange(intn);
voidmain()
{intn;
printf("pleaseinputainteger:
");
scanf("%d",&n);
change(n);
}
voidchange(intn)
{
if(n==1||n==0)
printf("%d",n);
else{change(n/2);
printf("%d",n%2);
}
}
24编写函数,采用递归方法在屏幕上显示如下杨辉三角形:
1
11
121
1331
14641
15101051
…… …… …… …… ……
#include"stdio.h"
voidmain()
{inta[6][6],i,j;
for(i=0;i<=5;i++)
for(j=0;j<=5;j++)
if(j==0||j==i)
a[i][j]=1;
for(i=2;i<=5;i++)
for(j=1;j<=i-1;j++)
a[i][j]=a[i-1][j]+a[i-1][j-1];
for(i=0;i<=5;i++)
{for(j=0;j<=i;j++)
printf("%d",a[i][j]);
printf("\n");}
}
第七章:
9从键盘输入十个整数,用合并排序法对输入的数据按照从小到大的顺序进行排序,
将排序后的结果输出。
#include"stdio.h"
voidmain()
{inta[10],i,j,t;
for(i=0;i<=9;i++)
scanf("%d",&a[i]);
for(i=0;i<=9;i++)
for(j=i+1;j<=9;j++)
if(a[i]>a[j])
{t=a[i];a[i]=a[j];a[j]=t;}
for(i=0;i<=9;i++)
printf("%d",a[i]);
}
10求一维整型数组中零的个数。
要求:
主函数定义数组a[10]={-15,-22,13,44,-25,66,0,88,-39,10},
调用自定义函数求出零的个数,然后在主函数中输出结果。
#include"stdio.h"
inta[10]={-15,-22,13,44,0,66,-25,88,-39,10},i,y,j=0,t;
intfun(intt)
{
for(i=0;i<=9;i++)
if(a[i]==t)
j++;
return(j);}
voidmain()
{
y=fun(0);
printf("%d",y);
}
方法二:
#include
voidmain()
{
inti,a[10],count=0;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
printf("\n");
for(i=0;i<10;i++)
{if(a[i]==0)
count++;
}
printf("count=%d\n",count);
}
11统计数组中小于数组元素平均值的元素的个数。
要求:
主函数定义一维整型数组a[10]={12,34,56,78,90,9,87,65,43,21},
调用自定义函数统计小于数组元素平均值的元素的个数,并在主函数中输出结果
#include"stdio.h"
inta[10]={12,34,56,78,90,9,87,65,43,21},i,s=0,y,j=0;
floatt;
intfun(floatt)
{
for(i=0;i<=9;i++)
if(a[i]j++;
return(j);}
voidmain()
{for(i=0;i<=9;i++)
s=s+a[i];
t=s/10.0;
y=fun(t);
printf("%d",y);
}