switch(i%5)
{ case 5: printf(\ case 3: printf(\ case 1: printf(\ default: printf(\ } }
解答:1 1 2 3 1 3 4 程序填空题
1. 阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选一个正确答案。
【程序说明】求 1 + 2/3 + 3/5 + 4/7 + 5/9 + … 的前20项之和。 运行示例:
sum = 11.239837
【程序】
#include
{ int i, b = 1;
double s; (1) ;
for(i = 1; i <= 20; i++){ s = s + (2) ; (3) }
printf( (4) , s); }
【供选择的答案】 (1) A、√s = 0 B、s = 1 C、s = -1 D、s = 2 (2) A、i/b B、double(i)/double(b)
C、i/2*i-1 √D、(double)i/(double)b
(3) A、; B、b = 2 * i – 1;
C、b = 1.0 * b; √D、b = b + 2;
(4) A、\ B、\
√C、\ D、\
2. 【程序说明】求 2/1 + 3/2 + 5/3 + 8/5 + ? 的前10项之和。(该序列从第2项起,每一项的分子是前一项分子与分母的和,分母是前一项的分子) 【程序】
#include
{ int i, a = 1, b = 1, t; (1) ;
for(i = 1; i <= 10; i++){ t = a; (2) ; b = t; y = (3) ;
}
printf(\}
(1) A、int y = 0 B、int y √C、double y = 0 D、double y (2) A、a = b B、b = a + b √C、a = a + b D、b = a (3) √A、y + 1.0*a/b B、y + a/b C、a/b D、1.0*a/b 3. 输入的一个小写字母,将字母循环后移5个位置后输出,如‘a‘变成‘f‘, ?w‘变成‘b‘。 #include
c=getchar();
if(____________) 解答:c>=?a?&&c
if (c>='v' && c<='z')
____________ 解答:c=c+5-26; putchar(c); }
4. 输入m、n(要求输入数均大于0),输出它们的最大公约数。 #include
while(scanf(\ 解答:m<=0 || n<=0 for( ________; n%k!=0||m%k!=0; k--); 解答:k=m>n?n:m printf(\}
5. 输入,程序中用变量i统计大于零的整数个数,用变量j统计小于零的整数个数。 #include
{ _______ n,i,j; 解答:int
printf(\输入非零的整数(输入零结束程序)\ i=j=0;
scanf(\
while_______ 解答:(n!=0) { if(n>0)
i=______; 解答:i+1 if(n<0)
j=______; 解答:j+1
______; 解答:scanf(\ }
printf(\ }
6. 斐波哪契数列中的头两个数是0和1,从第三个数开始,每个数等于前两个数的和,即:0,1,1,2,3,5,8,13,21,...等。下面这个程序就是求斐波哪契数列的前20个数。
#include
f1=0;f2=______; 解答:1 printf(\
for(i=3;i<=20;______) 解答:i++ {
f=______; 解答:f1+f2 printf(\ f1=f2;
f2=______; 解答:f } }
7. 【程序说明】根据下式计算s的值,要求精确到最后一项的绝对值小于10–6。
s?1?1?1?1??
357#include
{ int flag = 1, t = 1; (1) ;
while( 2) ){ item = flag * 1.0 / t; s = s + item; (3) ; t = t + 2; }
printf ( \}
(1) √A、double item = 2, s = 0; B、double item = 0, s = 0; C、double item = 1, s = 1; D、double item = 3, s = 1; (2) A、item < 1E-6 B、item >= 1E-6 C、fabs (item) < 1E-6 √D、fabs (item) >= 1E-6 (3) A、flag = -1 B、s = -s √C、flag = -flag; D、t = -t
8. [程序功能] 输入 100个数,求它们的和并输出。 #include
{ float x,sum; int i=0;
; 解答:sum=0
printf(\ while(i<100) { scanf(\
sum+=x; i++; }
; 解答:printf(“sum=%f\\n”,sum) }
mn
9. 以下程序的功能是: 输出{ 2,3 | m>=1,n>=1}中由小到大排列的前32项数,并
且每行8个数。(如 2,3,4,8,9,16,27,32 )
#include\ void main() { long m2,n3; int k;
m2=2;n3=3;k=0; while(k<32)
{ if ( ) 解答:m2 { printf(\ ; 解答:n3*=3 } k++; if ( ) printf(\解答:k%8==0 } } 10. 【程序说明】 输出1~1000之间所有满足各位数字的立方和等于它本身的数。 【程序】 #include { int digit, k, m, s; for (k=1; k<=1000; k++){ (1) while(m!=0){ digit=m; s=s+digit*digit*digit; (2) ; } if( (3) ) printf(\%d \, s); } } (1) A、s=0; √B、m=k; s=0; C、m=k; D、k=m; s=0; (2) √A、m=m/10 B、m=m C、m=m D、m=k/10 (3) A、m!=s B、m==s C、k!=s √D、k==s 11. [程序功能]输入20个整数,输出其中最小数。 #include { int i,x,min; scanf(―%d‖,&x); ________; 解答:min=x for(i=2;i<=N;i++) { scanf(―%d‖,&x); ________; 解答: if(min>x) min=x } printf(―%d\\n‖,min); } 12. 输入1 个正整数 n, 计算并输出 s 的前n项的和。 s = 1/2 -2/3 + 3/4 - 4/5 + ??(-1)n-1 n/(n+1) #include { int k, flag=1, n; float s=0; scanf(\ for (k=1 ; k<=n; k++){ s=s+ (1) ; ( 2) ; } printf(\} (1) A、1.0*k/(k+1)* flag √B、flag*n/(n+1) C、- k/(k+1) (2) A、flag= -1 B、s= -s C、flag= -flag 13. [程序说明]输入x、n后输出下列算式的值。 234nx?x?x?x?...?(?1)n?1x 2!3!4!n![程序] #include { float s,t,x; int i,n; scanf(\ (1) for(i=1;i<=n;i++) { (2) s+=t; } (3) ; } (1)A、 s=0; t=0; √B、 s=0; t=-1; C、 s=x; t=1; D、 s=x; t=-1; (2)√A、 t=-t*x/i; B、 t=pow(-x,i)/i; C、 t=-pow(x,i)/i; D、 t=t*x/i; (3)√A、 printf(\ B、 printf(\ C、 printf(\ D、 printf(\ D、1.0*k/(k+1) D、k= -k √