|
|
一、选择题 1.有如下程序 main( ) { int a=2,b=-1,c=2; if(a<b) if(b<0) c=0; else c++; printf("%d\n",c); } 该程序的输出结果是( ) A) 0 B) 1 C) 2 D) 3
2.对do...while语句错误的描述是:( ) A)可构成多重循环结构 B)循环次数不可能为0 C)循环次数可能为0 D)先执行后判断
3.任何复杂的程序,都是由( )构成的。 A)分支结构、顺序结构、过程结构 B)循环结构、分支结构、过程结构 C)顺序结构、循环结构、分支结构 D)循环结构、分支结构
4.设有int x,y; 以下语句判断x和y是否相等,正确的说法是该语句( )。 if (x=y) printf(" x is equal to y."); A)语法错 B)不能判断x和y是否相等 C)编译出错 D)能判断x和y是否相等
5.C语言中规定,if语句的嵌套结构中,else总是( )配对。 A)与最近的if B)与第一个if C)与按缩进位置相同的if D)与最近的且尚未配对的if
6.以下有关switch语句的说法正确的是( )。 A)break语句是语句中必需的一部分 B)在switch 语句中可以根据需要使用或不使用break语句 C)break语句在switch 语句中不可以使用 D)在switch 语句中的每一个case都要使用break语句
7.当执行以下程序时,( )。 #include<stdio.h> void main() { int a; while(a=5) printf("%d ",a--); } A)循环体将执行5次 B)循环体将执行0次 C)循环体将执行无限次 D)系统会死机
8.以下if语句错误的是( )。 A)if (x<y) x++; y++; else x--; y--; B)if (x) x+=y; C)if (x<y); D)if (x!=y) scanf (" %d",&x) ; else x++;
9.以下说法错误的是( )。 A)do...while语句与while语句的区别仅是关键词“while”出现的位置不同 B)while语句是先进行循环条件判断,后执行循环体 C)do...while是先执行循环体,后进行循环条件判断 D)while、do...while和for语句的循环体都可以是空语句
二、填空题 1.有程序段: int i=0,a=1; while(i<9) { i++; ++a; } 其中,循环条件是___,循环控制变量是___,循环体是____,修改循环条件的语句是___,该循环条件将执行____次,结束循环时,i的值是___,a的值是___。
2.有程序段: int i=0,a=1; for(i=1;i<10;i++) { a++; } 其中,循环条件是___,循环控制变量是___,循环体是____,修改循环条件的语句是___,该循环条件将执行____次,结束循环时,i的值是___,a的值是___。
3.以下程序的输出结果是_______. #include <stdio.h> main() { int n=12345,d; while(n!=0){ d=n%10; printf("%d",d); n/=10;} }
4.以下程序判断输入的整数能否被3或7整除,请填空。 main() { int x,f=0; scanf( “%d”,&x ); if ( 1 ) ( 2 ) if(f==1) printf(“YES\n”); else printf(“NO\n”); }
三、程序阅读题 1.阅读以下程序,若输入60,写出程序运行结果。 #include<stdio.h> void main() { int x; scanf("%d ",&x); if (x>=60) printf("pass"); else printf("fail"); }
2.阅读以下程序,若输入5,写出程序运行结果。 #include <stdio.h> int main( ) { int i, n; double fact; scanf("%d", &n); fact=1; for(i=1;i<=n;i++) fact*=i; printf("%.0f\n", fact); }
四、程序设计题 1. 输入一个整数,输出它的绝对值 。 2. 编写程序,统计从键盘输入的一行字符的个数。 3. 编写程序,用穷举法输出100以内的素数。 4. 求1!-2!+3!-4! +……+49!-50!的和。 5. 输入10个字符,分别统计出其中空格或回车键、数字和其他字符的个数。 |
|
答案: |
1、选择题 (1) C (2) C (3) C (4) B (5) D (6) B (7) C (8) A (9) A 2、填空题 (1) i<9、 i 、i++;++a; 、i++; 、9、10 (2) i<10 、 i 、a++、i++、9、10、10 (3) 54321 (4) x%3==0 || x%7==0 、f=1
3.程序阅读题 (1)pass (2) 120
4、程序设计题 (1) 参考程序: #include <stdio.h> int main(void) { int number; printf("Enter a number: "); scanf("%d", &number); if(number < 0) { number = -number; } printf("The absolute value is %d.\n", number); return 0; } Enter a number: 10 The absolute value is 10. Enter a number: -300 The absolute value is 300.
(2) 参考程序: #include<stdio.h> void main() { int n=0; printf("input a string\n"); while(getchar()!='\n') n++; printf("%d",n); }
(3)参考程序: #include<stdio.h> void main() { int n,i; for(n=2; n<=100; n++) { for(i=2; i<n; i++) if(n%i==0) break; if(i>=n) printf("\t%d",n); } }
(4)参考程序: #include <stdio.h> main() { double sum = 0; double tmp = 1; int mul = 1; int i; for(i=1;i<=50;i++) { tmp *= i; sum += tmp*mul; mul *= -1; } printf("1!-2!+3!-4!+.....+49!-50! = %e",sum); }
(5)参考程序: /* 输入10个字符,分别统计出其中空格或回车、数字和其他字符的个数。*/ #include <stdio.h> int main(void) { int blank, digit, i, other; /* 定义3个变量分别存放统计结果 */ char ch; blank = digit = other = 0; /* 置存放统计结果的3个变量的初值为零 */ printf("Enter 10 characters: "); /* 输入提示 */ for(i = 1; i <= 10; i++){ /* 循环执行了10次 */ ch = getchar(); /* 输入一个字符 */ /* 在switch语句中灵活应用break */ switch (ch) { case ' ' : /* 语句段为空,请注意空格的表示 */ case '\n': blank ++; /* 2个常量表达式 ' ' 和 '\n' 共用该语句段 */ break; /* 跳出switch语句 */ case '0' : case '1' : case '2' : case '3' : case '4' : case '5' : case '6' : case '7' : case '8' : case '9' : digit ++; /* 10个常量表达式 '0' ~ '9' 共用该语句段*/ break; /* 跳出switch语句 */ default: other ++; /* 累加其他字符 */ break; /* 跳出switch语句 */ } } printf("blank=%d, digit=%d, other=%d\n", blank, digit, other); return 0; }
|
|