1、编程题c 编程题1(2) 键盘输入10个实型数,求其倒数的和并输出.参考答案#include stdio.h#include math.hmain()int i;float a,sum=0;printf(Please input 10 number:);for(i=0;i10;i+)scanf(%f,&a);sum += 1.0/a;printf(The result is:%fn,sum);2(3) 键盘输入10个正实型数,求其方根的和并输出。参考答案#include stdio.h#include math.hmain()int i;float a,sum=0;printf(Please
2、input 10 number which are all great than 0:);for(i=0;i10;i+)scanf(%f,&a);if(a 0)continue;sum += sqrt(a);printf(The result is:%fn,sum);3(4) 计算 s=1-2!+3!-4!+-10!的值并输出。参考答案#include stdio.h#include math.hmain()int i;long sum=0,b=-1;for(i=1; i=10; i+)b = -1*i*b;sum += b;printf(The result is:%fn,sum);4(5)
3、 编写一个程序,从键盘输入一个三位整数,将它们逆序输出。例如输入127,输出721。参考答案#include stdio.hmain()int num,a,b,c;printf(Please input the number:);scanf(%d,&num);a=num/100;b=(num-100*a)/10;c=num-100*a-10*b;a += b*10+c*100;printf(The result is%dn,a);5(7) 打印出所有的“水仙花数”,所谓“水仙花数”是指一个3位数,其各位数字立方和等于该数本身。例如:153是一水仙花数,因为153=13+53+33.参考答案ma
4、in()int i,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=%dn,s);else continue;6(8)编写一程序,对于给定的一个百分制成绩,输出相应的五分制成绩。设:90分以上为A,8089分为B,7079分为C,6069分为D,60分以下为E。参考答案#includestdio.hmain()int a,b;printf(Please input the score:);scanf(%d,&a);b=a/10;switch(b)case 10:
5、case 9: printf(A!n);break;case 8: printf(B!n);break;case 7: printf(C!n);break;case 6: printf(D!n);break;default: printf(E!n);break;7(9) 计算 s=1-1/3 + 1/5- 1/7+1/101 的值并输出。参考答案main()int i,f=1;float sum=0.0;for(i=1;i0) printf(%d,n%10);n=n/10;9(21)在主函数中输入8个整数,调用函数对其进行排序(从小到大),排序方法不限,最后在主函数中输出结果。参考答案#inc
6、lude stdio.hvoid main() int num8,i;void taxis(int p, int);printf(Input 8 integers:n);for(i=0;i8;i+)scanf(%d,num+i);taxis(num,8);printf(The result:n);for(i=0;i8;i+)printf(%d,numi);void taxis(int p,int n)int i,j;int code,temp;for(i=0;in-1;i+)code=i;for(j=i+1;jn;j+)if(pjpcode)code=j;if(code!=i)temp=pi;
7、pi=pcode;pcode=temp;10(41) 从键盘输入十个整数,用合并排序法对输入的数据按照从小到大的顺序进行排序,将排序后的结果输出。 参考答案 #define N 16 #include stdio.h merge(a,b,c,m) /* 数组合并函数:将长度为m的*/ int a,b,c,m; /* 数组a、b合并到c */ int i=0,j=0,k=0; while(im&jbj) ck+=bj+; /* 将ai、*bj中的小 */else ck+=ai+; /* 者存入ck */while(im) ck+=ai+; /* 将a或b中剩余的数 */while(jm) ck+
8、=bj+; /* 存入c */mergesort(w,n) /* 数组排序函数: 对长度为n */int w,n; /* 的数组w排序 */ int i,t,raN; for(i=1;i2) /* 递归调用结束条件 */ mergesort (w,n/2); /* 将数组w一分为二,递归调 */mergesort (w+n/2,n/2); /* 用mergesort */merge( w,w+n/2,ra,n/2 ); /* 将排序后的两数组重新合并 */for(i=0;i*(w+1) t=*w; *w=*(w+1); *(w+1)=t; else printf(Error:size of a
9、rray is not a power of 2/n);main( ) int i;static int keyN=4,3,1,81,45,8,0,4,-9,26,7,4,2,9,1,-1;mergesort(key,N);for(i=0;i0) ak=n%2;turn(n/2,a,k-1);else return;main() int i,n,a16=0;printf(nPlease enter n:);scanf(%d,&n);turn(n,a,15);for(i=0;i16;i+)printf(%d,ai);12(45) 编写函数,采用递归方法在屏幕上显示如下杨辉三角形: 1 1 1 1
10、 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 参考答案#include main( ) int i,j,n=13;printf(N=);while( n12 )scanf(%d, &n); /* 最大输入值不能大于12 */for(i=0;i=n;i+) /* 控制输出N行 */ for(j=0;j12-i;j+)printf( ); /* 控制输出第i行前面的空格 */for(j=1;ji+2;j+)printf(%6d, c(i,j); /* 输出第i行的第j个值 */printf(n); int c(x,y) /* 求杨辉三角形中第x行第y列的值 */int
11、x, y; int z;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( ) int j,k,n,m;printf(Please enter n:);scanf(%d,&n);for(j=2;jn;j+) /* 穷举法分解n为两个素数j和m之和 */ for(k=2;k=j
12、) /* j是素数 */ m=n-j;for(k=2;k=m) /* m也是素数,输出结果 */ printf(%4d = %4d + %4dn,n,j,m);break;15(90) 编写程序,输入三角型的三条边长,求其面积。注意:对于不合理的边长输入要输出数据错误的提示信息。参考答案#include math.hmain() int flag=0;float a,b,c,s;do printf(Please enter a b c:);scanf(%f%f%f,&a,&b,&c);if(ab+c | ba+c | ca+b)flag=1;while(flag);s=(a+b+c)/2;pr
13、intf(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() int i,j,n;printf(nPlease Enter n:);scanf(%d,&n);for(i=1;i=n
14、;i+) for(j=1;j=n;j+)printf(*);printf(n); 17(96) 输入n值,输出如图所示平行四边形。* * * * * *n=6时的平行四边形参考答案分析:此题和上题的区别在于每行*的数量逐行减少,可以使用上题控制空格个数的思路来控制*号的个数,请注意每行*的个数都是奇数。参考答案:main( ) int i,j,n;printf(nPlease Enter n:);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
15、) 输入n值,输出如图所示高为n的等腰三角形。*n=6时的等腰三角形参考答案分析:此题图形是第3题图形的垂直反转,在编程上我们可以变换一个思路。对于图形中的第i行(1in),共需要输出2n-i个字符,其中前面的i-1个字符为空格,后面的字符为*号。按照这一思路可以编写出如下程序。参考答案:main( ) int i,j,n;printf(nPlease Enter n:);scanf(%d, &n);for( i=1;i=n;i+ ) /* 重复输出图形的n行 */ for( j=1;j=2*n-i;j+ ) /* 重复输出图形一行中的每个字符 */if(j=i-1) printf( ); /
16、* 输出前面的空格 */else printf(*); /* 输出后面的*号 */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()int i;float sum = 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.hmain()i
17、nt i, 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.hmain()int i, 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 s
18、tdio.hmain()int i, num = 0;for(i=210;i=15870;i+)if(i%19=0) &(i%21!= 0)num +; printf(num = %d n, num);24(133) 求一维整型数组中零的个数。要求:主函数定义数组a10 =-15,-22,13,44,-25, 66, 0, 88, -39,10,调用自定义函数求出零的个数,然后在主函数中输出结果。参考答案#includestdio.hmain()int a10=-15,-22,13,44,-25,66,0,88,-39,10,n;int num(int x10);n=num(a);printf
19、(The number is %dn,n);int num(int x10)int i,n=0;for(i=0;i=9;i+)if(xi=0)n+;return(n);25(137) 统计数组中小于数组元素平均值的元素的个数。要求:主函数定义一维整型数组a10 =12,34,56,78,90,9,87,65,43,21, 调用自定义函数统计小于数组元素平均值的元素的个数,并在主函数中输出结果 参考答案#includestdio.hmain()int a10=12,21,34,43,56,65,78,87,90,9,n;int num(int a10);n=num(a);printf(The number is %dn,n);int num(int a10)int i,n=0;float aver,sum=0;for(i=0;i=9;i+)sum+=ai;aver=sum/10;for(i=0;i=9;i+)if(aiAVER)n+;return(n);
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1