判断题
1-1
在for(表达式1;表达式2;表达式3)中,如果表达式2为空,表示循环条件默认为真。
TRUE //可将for的第二个表达式的判断移至循环体内,借助break来结束循环。
1-2
for语句循环体可能一次也不执行。
TRUE//可能不满足循环条件
1-3
continue 只能用于循环体中。
TRUE
1-4
continue 不是结束本次循环,而是终止整个循环的执行。
FALSE
1-5
在多层循环中, 一个break语句只向外跳一层。
TRUE
1-6
运行包含以下代码段的程序将可能进入死循环。
1. int i = 1; 2. while(i>0){ i++; printf("%d ",i); }
FALSE //数据的溢出现象
1-7
do-while循环的while后的分号可以省略。
FALSE
1-8
do-while循环至少要执行一次循环语句。
TRUE
1-9
以下两个程序段等价,其功能是计算 s=1+2+...+10。
1. /* 程序段A*/ 2. s = 0; 3. i = 1; 4. while(i <= 10){ 5. s = s + i; 6. i++; 7. } 8. /* 程序段B */ 9. s = 0; 10. i = 1; 11. while(1){ 12. if(i > 10){ 13. break; 14. } 15. s = s + i; 16. i++; 17. }
TRUE
1-10
C语言的三种循环不可以互相嵌套。
FALSE
单选题
BAADC,ACCCB
程序填空题
1-1
计算并输出一个非零整数序列(序列非空)中偶数的平均值。所有输入数据用空格隔开,用0结束输入。输出数据保留2位小数。
1. #include <stdio.h> 2. int main() 3. { 4. int number; 5. int sum,n; 6. double average; 7. n = 0; 8. sum = 0; 9. scanf("%d",&number); 10. 11. while(number != 0){ 12. if(number%2 == 0){ 13. sum += number; 14. n ++; 15. } 16. scanf("%d",&number); 17. } 18. average = sum*1.0/n; 19. printf("%.2lf\n",average); 20. return 0; 21. }
number != 0
scanf("%d",&number)
average = sum*1.0/n
1-2
求100-999之间的水仙花数之和(水仙花数 是指一个三位数的各位数字的立方和是这个数本身,如:153=1^3+5^3+3^3)。。
1. #include <stdio.h> 2. int main() 3. { 4. int d1,d2,d3; 5. int n; 6. int sum; 7. sum = 0; 8. for( 9. d1=1; d1<=9; d1++){ 10. for(d2=0; d2<=9; d2++){ 11. for(d3=0; d3<=9; d3++){ 12. n = d1*100 + d2*10 + d3; 13. if(n == d1*d1*d1 + d2*d2*d2 + d3*d3*d3){ 14. sum += n; 15. } 16. } 17. } 18. } 19. printf("%d\n",sum); 20. return 0; 21. }
d1=1; d1<=9; d1++
d2=0; d2<=9; d2++
n == d1*d1*d1 + d2*d2*d2 + d3*d3*d3
1-3
用数组来求fibonacci数列问题,打印前20项数列,每行打印4个数。
1. #include<stdio.h> 2. int main() 3. { 4. int i; 5. int f[20]={1,1}; 6. for (i=2;i<20;i++) 7. f[i]=f[i-1]+f[i-2]; 8. for (int i=0;i<20;i++) 9. {if((i+1)%4==0)printf("\n"); 10. printf("%d ",f[i]); 11. } 12. return 0; 13. }
f[i-1]+f[i-2]
int i=0
(i+1)%4==0
1-4
输入正整数n,计算s = 1/1! + 1/2! + 1/3! + ……+ 1/n!的值。
1. #include <stdio.h> 2. int main( void) 3. { 4. int j, k, n; 5. double f, s; 6. 7. scanf("%d", &n); 8. s=0.0; 9. for (k=1; k<=n; k++){ 10. f=1.0; 11. for(j=1; j<=k; j++) 12. f=f*j; 13. s=s+1.0/f; 14. } 15. printf("sum=%f\n", s); 16. return 0; 17. }
s=0.0
f=1.0
j<=k
f=f*j
1-5
语句填空:下列 for循环语句将输出: 0 1 2 0 1 2 0 1 2
for( i=1; i<=9; i++ ) printf("%2d", (i-1)%3);
(i-1)%3
编程题
1-1
本题要求你写个程序把给定的符号打印成沙漏的形状。例如给定17个“*”,要求按下列格式打印
1. ***** 2. *** 3. * 4. *** 5. *****
所谓“沙漏形状”,是指每行输出奇数个符号;各行符号中心对齐;相邻两行符号数差2;符号数先从大到小顺序递减到1,再从小到大顺序递增;首尾符号数相等。
给定任意N个符号,不一定能正好组成一个沙漏。要求打印出的沙漏能用掉尽可能多的符号。