编程题c.docx
《编程题c.docx》由会员分享,可在线阅读,更多相关《编程题c.docx(19页珍藏版)》请在冰豆网上搜索。
编程题c
编程题
1
(2)键盘输入10个实型数,求其倒数的和并输出.
参考答案
#include"stdio.h"
#include"math.h"
main()
{
inti;
floata,sum=0;
printf("Pleaseinput10number:
");
for(i=0;i<10;i++)
{
scanf("%f",&a);
sum+=1.0/a;
}
printf("Theresultis:
%f\n",sum);
}
2(3)键盘输入10个正实型数,求其方根的和并输出。
参考答案
#include"stdio.h"
#include"math.h"
main()
{
inti;
floata,sum=0;
printf("Pleaseinput10numberwhichareallgreatthan0:
");
for(i=0;i<10;i++)
{
scanf("%f",&a);
if(a<0)
continue;
sum+=sqrt(a);
}
printf("Theresultis:
%f\n",sum);
}
3(4)计算s=1-2!
+3!
-4!
+…-10!
的值并输出。
参考答案
#include"stdio.h"
#include"math.h"
main()
{
inti;
longsum=0,b=-1;
for(i=1;i<=10;i++)
{
b=-1*i*b;
sum+=b;
}
printf("Theresultis:
%f\n",sum);
}
4(5)编写一个程序,从键盘输入一个三位整数,将它们逆序输出。
例如输入127,输出721。
参考答案
#include"stdio.h"
main()
{
intnum,a,b,c;
printf("Pleaseinputthenumber:
");
scanf("%d",&num);
a=num/100;
b=(num-100*a)/10;
c=num-100*a-10*b;
a+=b*10+c*100;
printf("Theresultis%d\n",a);
}
5(7)打印出所有的“水仙花数”,所谓“水仙花数”是指一个3位数,其各位数字立方和等于该数本身。
例如:
153是一水仙花数,因为153=1^3+5^3+3^3.
参考答案
main()
{
inti,j,k,s;
for(s=100;s<=999;s++)
{
i=s/100;
j=s/10-10;
k=s-i*100-j*10;
if(i*i*i+j*j*j+k*k*k==s)
printf("s=%d\n",s);
else
continue;
}
}
6(8)编写一程序,对于给定的一个百分制成绩,输出相应的五分制成绩。
设:
90分以上为A,80~89分为B,70~79分为C,60~69分为D,60分以下为E。
参考答案
#include"stdio.h"
main(){
inta,b;
printf("Pleaseinputthescore:
");
scanf("%d",&a);
b=a/10;
switch(b){
case10:
case9:
printf("A!
\n");
break;
case8:
printf("B!
\n");
break;
case7:
printf("C!
\n");
break;
case6:
printf("D!
\n");
break;
default:
printf("E!
\n");
break;
}
}
7(9)计算s=1-1/3+1/5-1/7+…1/101的值并输出。
参考答案
main()
{
inti,f=1;
floatsum=0.0;
for(i=1;i<=101;i=i+2)
{sum=sum+1.0/i*f;
f=(-1)*f;
}
printf("sum=%f\n",sum);
}
8(11)输入一个正整数,要求以相反的顺序输出该数。
例如输入12345,输出位54321。
参考答案
main()
{intn;
printf("Pleaseentern:
");
scanf("%d",&n);
while(n>0)
{printf("%d",n%10);
n=n/10;
}}
9(21)在主函数中输入8个整数,调用函数对其进行排序(从小到大),排序方法不限,
最后在主函数中输出结果。
参考答案
#include"stdio.h"
voidmain()
{intnum[8],i;
voidtaxis(intp[],int);
printf("Input8integers:
\n");
for(i=0;i<8;i++)
scanf("%d",num+i);
taxis(num,8);
printf("Theresult:
\n");
for(i=0;i<8;i++)
printf("%d,",num[i]);
}
voidtaxis(intp[],intn)
{
inti,j;
intcode,temp;
for(i=0;i{
code=i;
for(j=i+1;jif(p[j]
code=j;
if(code!
=i)
{
temp=p[i];
p[i]=p[code];
p[code]=temp;
}
10(41)从键盘输入十个整数,用合并排序法对输入的数据按照从小到大的顺序进行排序,
将排序后的结果输出。
参考答案
#defineN16
#include"stdio.h"
merge(a,b,c,m)/*数组合并函数:
将长度为m的*/
inta[],b[],c[],m;/*数组a、b合并到c*/
{inti=0,j=0,k=0;
while(iif(a[i]>b[j])
c[k++]=b[j++];/*将a[i]、*b[j]中的小*/
elsec[k++]=a[i++];/*者存入c[k]*/
while(iwhile(j}
mergesort(w,n)/*数组排序函数:
对长度为n*/
intw[],n;/*的数组w排序*/
{inti,t,ra[N];
for(i=1;iif(i==n)
{if(n>2)/*递归调用结束条件*/
{mergesort(w,n/2);/*将数组w一分为二,递归调*/
mergesort(w+n/2,n/2);/*用mergesort*/
merge(w,w+n/2,ra,n/2);/*将排序后的两数组重新合并*/
for(i=0;iw[i]=ra[i];
}elseif(*w>*(w+1))
{t=*w;*w=*(w+1);*(w+1)=t;
}}
elseprintf("Error:
sizeofarrayisnotapowerof2/n");
}
main()
{inti;
staticintkey[N]={4,3,1,81,45,8,0,4,-9,26,7,4,2,9,1,-1};
mergesort(key,N);
for(i=0;iprintf("%d",key[i]);
printf("\n");
}
11(44)编写函数,采用递归方法将任一整数转换为二进制形式。
参考答案
turn(n,a,k)
intn,a[],k;
{if(n>0)
{a[k]=n%2;
turn(n/2,a,k-1);
}
elsereturn;
}
main()
{inti,n,a[16]={0};
printf("\nPleaseentern:
");
scanf("%d",&n);
turn(n,a,15);
for(i=0;i<16;i++)
printf("%d",a[i]);}
12(45)编写函数,采用递归方法在屏幕上显示如下杨辉三角形:
1
11
121
1331
14641
15101051
…… …… …… …… ……
参考答案
#include
main()
{inti,j,n=13;
printf("N=");
while(n>12)
scanf("%d",&n);/*最大输入值不能大于12*/
for(i=0;i<=n;i++)/*控制输出N行*/
{for(j=0;j<12-i;j++)
printf("");/*控制输出第i行前面的空格*/
for(j=1;j
printf("%6d",c(i,j));/*输出第i行的第j个值*/
printf("\n");
}
}
intc(x,y)/*求杨辉三角形中第x行第y列的值*/
intx,y;
{intz;
if((y==1)||(y==x+1))
return
(1);/*若为x行的第1或第x+1列,则输出1*/
else/*否则;其值为前一行中第y-1列与第y列值之和*/
z=c(x-1,y-1)+c(x-1,y);
return(z);
}
13(54)编制一个计算函数y=f(x)的值程序,其中:
14(70)任意输入一个偶数,请将它分解为两个素数之和。
参考答案
main()
{intj,k,n,m;
printf("Pleaseentern:
");
scanf("%d",&n);
for(j=2;j{for(k=2;kif(j%k==0)break;/*j能够被小于它的一个数整除就不是素数*/
if(k>=j)/*j是素数*/
{m=n-j;
for(k=2;kif(m%k==0)break;
if(k>=m)/*m也是素数,输出结果*/
{printf("%4d=%4d+%4d\n",n,j,m);
break;
}
}
}
}
15(90)编写程序,输入三角型的三条边长,求其面积。
注意:
对于不合理的边长输入要输出数据错误的提示信息。
参考答案
#include"math.h"
main()
{intflag=0;
floata,b,c,s;
do
{printf("Pleaseenterabc:
");
scanf("%f%f%f",&a,&b,&c);
if(a>b+c||b>a+c||c>a+b)
flag=1;
}while(flag);
s=(a+b+c)/2;
printf("S=%f",s=sqrt((s-a)*(s-b)*(s-c)));
}
16(95)输入n值,输出如图所示矩形。
******
******
******
******
******
******
n=6时的矩形
参考答案
分析:
打印此图形用两重循环实现。
图形要重复n行,故采用循环结构实现循环n次,循环体内部打印一行''*''号,把上述思路表示为:
for(i=1;i<=n;i++)
打印一行''*''号;
每行有n个''*''号,再采用循环结构实现n次循环,循环内部用格式输出语句打印一个''*''号,即:
for(j=1;j<=n;j++)
printf("*");
按照上述思路,实现打印矩形。
参考答案:
main()
{inti,j,n;
printf("\nPleaseEntern:
");
scanf("%d",&n);
for(i=1;i<=n;i++)
{for(j=1;j<=n;j++)
printf("*");
printf("\n");
}}
17(96)输入n值,输出如图所示平行四边形。
******
******
******
******
******
******
n=6时的平行四边形
参考答案
分析:
此题和上题的区别在于每行''*''的数量逐行减少,可以使用上题控制空格个数的思路来控制''*''号的个数,请注意每行''*''的个数都是奇数。
参考答案:
main()
{inti,j,n;
printf("\nPleaseEntern:
");
scanf("%d",&n);
for(i=1;i<=n;i++)
{for(j=1;j<=n-i;j++)
printf("");
for(j=1;j<=2*i-1;j++)
printf("*");
printf("\n");
}}
18(97)输入n值,输出如图所示高为n的等腰三角形。
*
***
*****
*******
*********
***********
n=6时的等腰三角形
参考答案
分析:
此题图形是第3题图形的垂直反转,在编程上我们可以变换一个思路。
对于图形中的第i行(1≤i≤n),共需要输出2n-i个字符,其中前面的i-1个字符为空格,后面的字符为''*''号。
按照这一思路可以编写出如下程序。
参考答案:
main()
{inti,j,n;
printf("\nPleaseEntern:
");
scanf("%d",&n);
for(i=1;i<=n;i++)/*重复输出图形的n行*/
{for(j=1;j<=2*n-i;j++)/*重复输出图形一行中的每个字符*/
if(j<=i-1)printf("");/*输出前面的空格*/
elseprintf("*");/*输出后面的*号*/
printf("\n");
}
}
19(108)编程求sum=1!
+2!
+3!
+……+20!
20(110)编写程序,求S=1/(1*2)+1/(2*3)+1/(3*4)+……前50项之和。
参考答案
#include"stdio.h"
main()
{
inti;
floatsum=0;
for(i=1;i<=50;i++)
{
sum+=1.0/(i*(i+1));
}
printf("sum=%f\n",sum);
}
21(117)统计在[1030-25830]之间有多少个数能同时被13和27整除。
参考答案
#include"stdio.h"
main()
{
inti,num=0;
for(i=1030;i<=25830;i++)
{
if((i%13==0)&&(i%27==0))
num++;
}
printf("num=%d\n",num);
}
22(121)统计在[30-15810]之间有多少个数能被23整除,而不能被37整除。
参考答案
#include"stdio.h"
main()
{
inti,num=0;
for(i=30;i<=15810;i++)
{
if((i%23==0)&&(i%37!
=0))
num++;
}
printf("num=%d\n",num);
}
23(122)统计在[210-15870]之间有多少个数能被19整除,而不能被21整除。
参考答案
#include"stdio.h"
main()
{
inti,num=0;
for(i=210;i<=15870;i++)
{
if((i%19==0)&&(i%21!
=0))
num++;
}
printf("num=%d\n",num);
}
24(133)求一维整型数组中零的个数。
要求:
主函数定义数组a[10]={-15,-22,13,44,-25,66,0,88,-39,10},
调用自定义函数求出零的个数,然后在主函数中输出结果。
参考答案
#include"stdio.h"
main()
{
inta[10]={-15,-22,13,44,-25,66,0,88,-39,10},n;
intnum(intx[10]);
n=num(a);
printf("Thenumberis%d\n",n);
}
intnum(intx[10])
{
inti,n=0;
for(i=0;i<=9;i++)
if(x[i]==0)
n++;
return(n);
}
25(137)统计数组中小于数组元素平均值的元素的个数。
要求:
主函数定义一维整型数组a[10]={12,34,56,78,90,9,87,65,43,21},
调用自定义函数统计小于数组元素平均值的元素的个数,并在主函数中输出结果
参考答案
#include"stdio.h"
main()
{
inta[10]={12,21,34,43,56,65,78,87,90,9},n;
intnum(inta[10]);
n=num(a);
printf("Thenumberis%d\n",n);
}
intnum(inta[10])
{
inti,n=0;
floataver,sum=0;
for(i=0;i<=9;i++)
sum+=a[i];
aver=sum/10;
for(i=0;i<=9;i++)
if(a[i]n++;
return(n);
}