C语言程序设计题库及答案
1、计算下面公式的值。T=1/1!+1/2!+1/3!+……+1/m! 当m=5时的结果(按四舍五入保留3位小数)。(注:所有变量用float数据类型定义!)答案:1.717 #include
void main() { float jc(float x);
float m,t=0,i;
printf(\ scanf(\ for(i=1;i<=m;i++) t=t+1/jc(i); printf(\}
2、程序填空:用*号输出字母C的图案。 #include \#include \main() {
_printf(\_ printf(\printf(\ printf(\ getch(); } 3、8232和9678,它们的个、十、百、千各位数字之和是15的倍数,8+2+3+2=15,9+6+7+8=30。编写程序,求四位数的所有奇数中,这样的数(各位数字之和是15的倍数)的总和。(注:所有变量用long数据类型定义!) 答案:1533459 #include
long s=0; if(x%2!=0) {
while(x>0) {
s=s+x; x=x/10; }
if(s==0) return 1; else return 0; }
else return 0; }
void main() {
long f(long x); long i,sum=0;
for(i=1000;i<=9999;i++) if(f(i))
sum=sum+i;
printf(\}
4、下面程序的功能是:计算并输出700以内的最大的10个能被13或者17整除的自然数之和。请改正程序中的错误,并运行,最后给出程序运行的正确结果。(注:只有一处错误!) 答案:6591
#include
int total=0, mc=1, k=700; //改为:int total=0,mc=0,k=700; int pm[10],count=0;
while( (k>=2) && mc<=10 ) {
if ((k==0) || (k==0)) {
pm[mc] = k; mc++; } k--; }
for( k=1;k<=10;k++ ) total += pm[k-1]; printf(\ }
5、求x = 1+1/5+1/7+1/9+…的近似值,直到最后一项的绝对值小于10-5为止。 #include
#include
输出:6.058
6、计算如下公式的A20值。 A1=1, A2=1/(1+A1), A3=1/(1+A2), A4=1/(1+A3), ......(按四舍五入保留10位小数)。答案:0.6180339850 (1)可用递归:
1 n=1 F(n)= 1/(1+f(n-1)) n>1
#include
double a; if(n==1) a=1;
else a=1.0/(1+f(n-1)); return a; }
void main() {
double f(double n);
printf(\}
(2)不用递归: #include
double i,c,a=1,b=1,x; for(i=1;i<20;i++)
{
c=a; a=b; b=c+b; }
x=a/b;
printf(\}
7、求[10,1600]之间能被7整除的奇数之和。答案:90965 (1)用函数可写成: #include
if(x%2!=0) return 1; else return 0; }
int f(int x) {
if(jx(x))
if(x%7==0) return 1; else return 0; else return 0; }
void main() {
int jx(int x); int f(int x); int i,s=0;
for(i=10;i<=1600;i++) if(f(i)) s=s+i; printf(\}
(2)不用函数可写成: #include
int jx(int x); int f(int x); int i,s=0;
for(i=10;i<=1600;i++)
if(i%2!=0 && i%7==0) s=s+i; printf(\}
8、函数mystrlen(char *s)的功能是求字符串s的长度。请填空。 int mystrlen(char *s) {int num=0;
while(*s++!='\\0' ) {_ num++_;} return (num); }
9、[100,500]之间同时满足除以7余5,除以5余3,除以3余1的整数之和。答案:1042 #include
int i,sum=0;
for(i=100;i<=500;i++) { if(i%7==5 && i%5==3 && i%3==1) sum=sum+i; }
printf(\}
10、求[100,999]之间所有的素数的个数。答案:143 #include void main() { int sushu(int x); int i,num=0; for(i=100;i<=999;i++) if(sushu(i)) num++; printf(\} 11、编写程序,求满足下列条件的所有四位数ABCD的个数,该四位数是8的倍数,且A+B=B+C,即第1位数加上第2位数等于第2位数加上第3位数。答案:110 #include