1.构成C语言源程序的基本单位是____
A. 子程序 B.过程 C.文本 D.函数 D
2. 在一个C程序中,main()函数___ A.必须出现在所有函数之前 B.可以在任可地方出现
C.必须出现在所有函数之后 D.以上都不对 B
3.以下描述正确的是____
A.最简单的C源程序可以不包括任何内容。 B.编译程序对C源程序编译时不检查语法。 C.C程序中没有输入输出语句。
D.在C程序中,至少必须有一个main()函数。 D
4.C语言是一种_____化程序设计语言 结构
5.下面不正确的字符串常量是____ A.‟AB‟ B.”ab‟ab” C.”a” D.”“ A
6.下面四个选项中均是合法的整型常量的是:______ A. 340,025,-11 B.02,0x,03f
C.-0X2A,985.768,4d2 D.0X15,0X2,-760x A
7.设有定义:int a=10;则表达式a+=a*=a的值是:____ A.10 B.100 C.1000 D.200 D
8.设有如下定义:int a=1,b=2,c=3,d=4,x=2,y=2;则表达式(x=a>b)&&(y=c>d)运算后,y的值为_______ A. 1 B.2
C.3 D. 4 B
9.能正确表示逻辑关系“a大于等于10或小于等于0”的C语言表达式是____ A.a>=10 or a<=0 B.a>=0 | a<=10 C.a>=10 && a<=10 D.a>=10 || a<=0 D
10.设m是int型变量,则表达式(m=2*3,m+4),m*3的值是______ 18
11.以下程序段执行后z的值是____ int x,y,z;
x=1;y=2; z=1.0/y*x 答:0
12.以下程序段的输出结果是____ main()
{ char m; m=‟B‟+32; printf(“%c\\n”,m); }
则输出的结果是:_____ b
13. 表达式7/3*(int)3.14/(int)(1.2*(5+2.3))的数据类型为_____,表达式的值为_____ 整型 0
14.计算下列表达式的值: 设int a=3,b=4,c=5;float k=3.6; (1)a/b*c 0 (2)a*b%c 2
(3)k/a+2*b 9.20000 (4) (int)(k+6/a*b) 11 (5) sizeof(a) 2 or 4 (6)a+=a*=a+b 42 (7) c%b-a/2 0 (8) !(a*b-12) 1 (9)(a*b-2)==c+3 0 (10)c>b>a
0 , 2, 9.200000, 11, 2, 42 ,2, 1, 0, 0 15.若有以下语句组,则输出结果是____
int x=0; if(x++<0) printf(“%d”,- -x);printf(“%d”,x++); A.-1 B.1 C.-1 -1
D.-1 0
答:B
16.以下程序的输出结果是:___ main() {
int x=3,y=0,z=0;
if(x=y+z) printf(“****”);else printf(“####”); }
A.有语法错误不能通过编译 B.输出 ****
C.通过编译,但不能通过连接 D.输出#### 答案D
17.以下程序的运行结果是:____ main()
{ int x=1,y=1; switch (x) {
case 1:switch(y) {
case 0:printf(“y is 0.\\n”); break; case 1: printf(y is 1.\\n”); break;
default:printf(“y is unknown.\\n”); break; }
case 2:printf(“I do this.\\n”); } }
答案: y is 1
I do this
18.C语言中,while与do—while语句的主要区别是____ A.do—while 的循环体至少无条件执行一次。 B.do-while允许从外部跳到循环体内。 C.while循环体至少无条件执行一次。
D.while的循环控制条件比do-while的严格。 答案:A
19.以下说法正确的是____
A.C语言中不能使用do-while语句构成的循环
B.do-while语句构成的循环必须用break语句才能退出。
C.do-while语句构成的循环,当while后圆括号内的表达式的值为非零时结束循环。 D.do-while语句构成的循环,当while后圆括号内的表达式值为零时结束循环。 答案D
20.下面关于for 语句的正确描述为:( ) A.for语句只能用于循环次数已经确定的情况 B.for语句是先执行循环体语句,再判断表达式 C.在for语句中,不能用break语句跳出循环体。
D.在for语句的循环体语句中,可以包含多条语句,但必须用大括号括起来。 答案:D
21对于for(表达式1;;表达式3)可以理解为_____ p84 A.for(表达式1;0;表达式3) B.for(表达式1; 1;表达式3)
C.for(表达式1;表达式1;表达式3) D.for(表达式1;表达式3;表达式3) 答案 B
22.以下程序执行后,输出“#”号的个数是:_____ main()
{ int i,j;
for(i=1;i<5;i++) for (j=2;j<=i;j++) printf(“#”); } A.0 B.4 C.6 D.7 答案:C
23.设i,j,k均为int型变量,则执行完下面的for语句后,k的值为____ for(i=0,j=10; i<=j; i++,j--) k=i+j; A.9 B.10 C.11 D.12 答案B
24以下程序输出的结果是:_____ main() {
int i;
for(i=0;i<3;i++) switch(i) {
case 1: printf(“%d”,i); case 2: printf(“%d”,i); default:printf(“%d”,i); } }
答案:011122
25.请填入一个整数,使以下程序段输出 10个整数。 for(i=0; i<=___; printf(“%d\\n”,i+=2)); 答案:18
26编程序 打印所有的水仙花数。所谓水仙花数是指一个3位数,其各位数字的立方和等于
该数。如:153是一个水仙花数,因为153=1*1*1+5*5*5+3*3*3。 (参考教材P92) 27.打印出以下图案: * *** ***** *******
(参考教材 p95)
28.以下描述正确的是____
A.return语句是函数中不可缺少的语句 B.函数中不可以有多条return 语句
C.函数中,return 后面一定要有表达式。 D.函数返回值一定要通过return语句返回。 答案D
29.一个函数返回值的类型取决于____ A.定义函数时指定或缺省的函数类型 B.调用该函数时临时指定
C.调用该函数的主调函数的类型 D.return语句中表达式的类型 答案A
30.以下叙述正确的是____
A.一个源程序中只能有一条文件包含命令。 B.预处理命令都必须以“#”开头
C.预处理命令必须定义在程序的头部。 D.以下是正确的宏定义:#define IBM-PC 答案:B
31.以下程序的输出结果是____ #include “stdio.h” int fun(int a ,int b) {
return a+b; }
void main() {
int x=2,y=5,z=8,r; r=fun(fun(x,y),z); printf(“%d”,r); }
A.12 B.13 C.14 D.15 答案:D
32.以下程序的输出结果是____
#include return (f(n-1)+f(n-2)); else return 2; } void main() { printf(“%d\\n”,f(3)); } A.4 B.6 C.2 D.8 答案:A 33.以下程序的输出结果是:_____ void main() { int a ,b,c; a=10;b=25;c=f(a,b); printf(“%d/%d=%d”,b,a,c); } f(int m,int n) {return (n/m);} 答案:25/10=2 1)以下符合C语言语法的实型常量是() A) 1.2E0.5 B) 3.14.159E C) .5E-3 D) E15 答案:C 2)给出以下定义: char x[]=\"abcdefg\"; char y[]={'a','b','c','d','e','f','g'}; 则正确的叙述为( ) A)数组X和数组Y等价 B)数组X的长度大于数组Y的长度 C)数组x和数组Y的长度相同 D)数组X的长度小于数组Y的长度 答案:B 3)不能把字符串:Hello!赋给数组b的语句是 () A)char b[10]={'H','e','l','l','o','!'}; B)char b[10];strcpy(b,\"Hello!\"); C)char b[10]=\"Hello!\"; D)char b[10];b=\"Hello!\"; 答案:D 4) 若有以下说明: int a[12]={1,2,3,4,5,6,7,8,9,10,11,12}; char c='a',d,g; 则数值为4的表达式是 () A) a[g-c] B) a[4] C) a['d'-'c'] D) a['d'-c] 答案:D 5) 设有定义:int a,*pa=&a;以下scanf语句中能正确为变量a读入数据的是( ) scanf(“%d”,pa) ; scanf(“%d”,a) ; scanf(“%d”,&pa); scanf(“%d”,*pa); 6) 若有以下函数调用语句 fun(a+b,(x,y),fun(n+k,d,(a,b))); 在此函数调用语句中实参的个数是 ( ) A)3 B)4 C)5 D)6 7) 有以下程序 void fun (int a,int b,int c) {a=456;b=567;c=678;} main() { int x=10,y=20,z=30; fun (x,y,z); printf(\"%d,%d.%d\} 输出结果是( ) A)30,20,10 B)10,20,30 C)456,567,678 D)678,567,456 8) 定义如下变题和数组: int i; int x[3][3]={1,2,3,4,5,6,7,8,9}; 则下面语句的输出结果是: ( ) for(i=0;i<3;i++) printf(\"%d\A) 1 5 9 B) 1 4 7 C) 3 5 7 D) 3 6 9 9) 以下程序运行后,输出结果是 ( ) int d=1; fun(int p) { int d=5; d+=p++; printf(\"%d\",d); } main() { int a=3; fun(a); d+=a++; printf(\"%d\\n\",d); } A)84 B)99 C)95 D)44 10)下面程序的输出是( ) A) 3 B) 4 C) 6 D) 9 fun3(int x) {static int a=3; a+=x; return(a); } main() { int k=2, m=1, n; n=fun3(k); n=fun3(m); printf(\"%d\\n\ 11) 当调用函数时,实参是一个数组名,则向函数传送的是 ( ) A) 数组的长度 B) 数组每一个元素的地址 C) 数组的首地址 D) 数组每个元素中的值 12) 以下程序 void sort(int a[],int n) { int i,j,t;