1、 1 一、单项选择题( 25 道小题,共 50 分) 1、以下说法中正确的是( C)( 2 分) A、 C语言程序总是从第一个的函数开始执行 B、在 C语言程序中 ,要调用的函数必须在 main()函数中定义 C、 C 语言程序总是从 main()函数开始执行 D、 C 语言程序中的 main()函数必须放在程序的开始部分 2、一个算法应该具有确定性等五个特性,下面对另外 4 个特性的描述中错误的是( B)( 2 分) A、有零个或多个输入 B、有零个或多个输出 C、有穷性 D、可行性 3、以下选项中 ,不合法常量的是 ( B)( 2 分) A、 1.234e04 B、 1.234e0.4 C
2、、 1.234e+4 D、 1.234e0 4、 C 语言中最简单的数据类型包括( B)( 2 分) A、整型、实型、逻辑型 B、整型、实型、字符型 C、整型、字符型、逻辑型 D、整型、实型、逻辑型、字符型 5、能正确表示逻辑关系: 10 =a =0的 C 语言表达式是 (D)( 2 分) A、 10=a=0 B、 a=0 and a=0|a=0则值为 3 的表达式是 ( A )。 .( 2 分) A、 p+=2,*(p+) B、 p+=2,*+p C、 p+=3,*p+ D、 p+=2,+*p 24、 设有说明语句 struct stu int a; float b;stutype;,则叙述
3、 不 正确的是( D )( 2 分) A、 struct 是结构体类型的关键字。 B、 struct stu 是用户定义的结构体类型。 C、 stutype 是用户定义的结构体变量名。 D、 a 和 b 都是结构体变量。 25、下列关于文件指针的描述中, 错误 的是( D )( 2 分) 3 A、文件指针是由文件类型 FILE 定义的。 B、文件指针是指向内存某个单元的地址值。 C、文件指针是用来对文件操作的标识。 D、文件指针在一个程序中只能有 一个。 26、以下叙述中正确的是( B)( 2 分) A、 C 语言的源程序不必通过编译就可以直接运行 B、 C 语言中的每条可执行语句最终都将被转
4、换成二进制的机器指令 C、 C 源程序经编译形成的二进制代码可以直接运行 D、 C 语言中的函数不可以单独进行编译 27、以下叙述中正确的是 ( C)( 2 分) A、用 C 语言实现的算法必须要有输入和输出操作 B、用 C 语言实现的算法可以没有输出但必须要有输入 C、用 C 程序实现的算法可以没有输入但必须要有输出 D、用 C 程序实现的算法可以既没有输入也没有输出 28、 C 语言 中 , 下列字符常量合法的是( A)( 2 分) A、 t B、 “A“ C、 65 D、 A 29、下列关于赋值运算符的表述中,错误的是( B)( 2 分) A、赋值运算符优先级高于逗号运算符 B、赋值运算
5、符的结合性是从左至右 C、赋值运算符是双目运算符 D、赋值运算符可在表达式中连用 30、设 a 和 b 均为 double 型变量,且 a=5.5、 b=2.5,则表达式 (int)a+b/b 的值是( D)( 2分) A、 6.500000 B、 6 C、 5.500000 D、 6.000000 31、以下不是关键字的是( C)( 2 分) A、 continue B、 char C、 If D、 default 32、设 x,y 为浮点型变量,合法赋值语句是( A)( 2 分) A、 x=8+y; B、 (float)3 ; C、 y=(x%2)/10 ; D、 *x=10; 33、已定
6、义 ch 为字符型变量,以下赋值语句中错误的是( B)( 2 分) A、 ch=; B、 ch=62+3; C、 ch= ; D、 ch=xaa; 34、已知 i、 j、 k 为 int 型变量,若从键盘输入: 1, 2, 3回车,使 i 的值为 1、 j 的值为 2、 k 的值为 3,以下选项中正确的输入语句是( C)( 2 分) A、 scanf(“%2d%2d%2d“, B、 scanf(“%d %d %d“, C、 scanf(“%d,%d,%d“, D、 scanf(“i=%d,j=%d,k=%d“, 35、为了避免在嵌套的条件语句 if else 中产生二义性, c 语言规定: e
7、lse 子句总是与( B )配对。 ( 2 分) A、缩排位置相同的 ifB、其之前最近的 if C、其之后最近的 if D、同一行上的 if 36、能正确表示当 x 的取值在 1, 100和 200, 300范围内为真,否则为假的表达式是 ( C)。( 2 分) A、 (x=1)j-) if (j%3) j-; -j;-j;printf( %d ,j); 的执行结果是 ( A )。 ( 2 分 A、 7 4B、 4 7 C、 5 6D、 1 3 40、以下描述正确的是 ( C )。( 2 分) A、由于 do-while 循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句。
8、B、 do-while 循环由 do 开始,用 while 结束,在 while(表达式)后面不能写分号。 C、在 do-while 循环体中,一定要有能使 while 后面表达式的值变成零(假)的操作。D、 do-while 循环中,根据情况可以省略 while 41、以下正确的定义语句是 ( D )。( 2 分) A、 int a14=1,2,3,4,5; B、 float x3=1,2,3; C、 long b23=1,1,2,1,2,3; D、 double y3=0; 42、下 面描述正确的是 ( D )。 ( 2 分) A、字符串所包含的字符个数相同时,才能比较字符串 B、字符个数
9、多的字符串比字符个数少的字符串大 C、字符串 “stop “与 “stop“相等 D、字符串 That小于字符串 “The“ 43、在 C 语言中,引用数组元素时,其数组下标的数据类型允许是 ( C )。( 2 分) A、整型常量 B、整型表达式 C、整型常量或整型表达式 D、任何类型的表达式 44、若有说明: int a3=1,2,3,4,5,6,7;则 a 数组第一维的大小是 ( B )。( 2 分) A、 2B、 3 C、 4D、无确定值 45、已知 int f(int);和 int g(int);是函数 f 和 g 的原形。下列语句中,将函数 f 作为函数参数的有( A )。 ( 2
10、分) A、 f(3); B、 p=f(3); C、 g(f(3); D、 f(g(3); 46、函数调用结束后,形式参数 (C )。( 2 分) A、继续占用相同大小的内存 B、占用的内存减小 C、释放内存 D、不确定 47、已知: int a,*p=则下列函数调用中错误的是( D )。( 2 分) Ascanf(“%d“, C、 printf(“%d“,a); D、 printf(“%d“,p); 48、枚举类型首元素默认值和两个相邻元素之间默认的差值分别是( C )( 2 分) A、 1, 0 B、 1, 1 C、 0, 1D、 0, 0 49、语句 fseek(fp,100L,2);的功
11、能是( B )( 2 分) A、将 fp 所指向文件的位置指针移至距文件首 100 个字节。 B、将 fp 所指向文件的位置指针移至距文件尾 100 个字节。 C、将 fp 所指向文件的位置指针移至距当前位置指针的文件首方向 100 个字 节。 D 、将fp 所指向文件的位置指针移至距当前位置 指针的文件尾方向 100 个字节。 50、以下叙述错误的是( D)( 2 分) 5 A、一个 C 程序总是从 main 函数开始执行的; B、 C 程序书写格式自由,一行内可以写几个语句,一个语句可以分写在多行上; C、每个语句和数据定义的最后必须有一个分号; D、 C 语言本身有输入输出语句。 51、
12、若有以下类型说明语句: char w; int x; float y; double z;则表达式 w*x+z-y 的结果类型是( D)( 2 分) A、 float B、 char C、 int D、 double 52、下面不正确的字符串常量是( A)( 2 分) A、 abc B、 “1212“ C、 “0“ D、 “ “ 53、已知各变量的类型说明如下: int k,a,b=1; unsigned long w=5;则以下不符合 C 语言语法的表达式是( A)( 2 分) A、 k=b+2=w B、 w+= -2 C、 k=(a=2,b=3,a+b) D、 a+=a-=(b=4)*(a
13、=3) 54、执行下列语句 int x=10,y=3;printf(“%dn“,y=x/y);后的输出是( C)( 2 分) A、 0 B、 1 C、 3 D、 不确定的值 55 、 若 执 行 以 下 程 序 段 : int a=0, b=0, c=0;c=(a-=a-5), (a=b, b+3); printf( %d,%d,%dn ,a, b, c); 其输出结果是( B)( 2 分) A、 0,0,-10 B、 0,0,5 C、 -10,3,-10 D、 3,3,-10 56、已知 i、 j、 k 为 int 型变量,若从 键盘输入: 1, 2, 3回车,使 i 的值为 1、 j 的值
14、为 2、 k 的值为 3,以下选项中正确的输入语句是( C)( 2 分) A、 scanf(“%2d%2d%2d“, B、 scanf(“%d %d %d“, C、 scanf(“%d,%d,%d“, D、 scanf(“i=%d,j=%d,k=%d“, 57、以下错误的 if 语句是 ( C )。( 2 分) A、 if(xy) z=x; B、 if(x=y) z=0; C、 if(x!=y) printf(“%d“,x) else printf(“%d“,y); D、 if(x=1) | (x=1 | x=1 I=1) printf( %d ,I-);的循环执 行次数是 ( B )。( 2
15、 分) A、无限次 B、 0 次 C、 1 次 D、 2 次 82、程序 int i,sum; for(i=1;ib)B、 if (strcmp(a,b) C、 if (strcmp(b,a)0)D、 if (strcmp(a,b)0) 86、若已定义 char s240=“china“,“English“;则在下面表达式中能表示字符 E的地址的是 ( B )。 ( 2 分) A、 printf( %d ,*-p);的输出结果是 ( C )。( 2 分) A、非法 B、 a4的地址 C、 5 D、 3 89、 C 语言结构体类型变量在程序执行期间( A)( 2 分) A、所有成员一直驻留在内存
16、中。 B、只有一个成员驻留在内存中。 C、部分成员驻留在内存中。 D、没有成员驻留在内存中。 90、下列正确定义一个文件指针 pm 的语句是( C )( 2 分) A、 FILE pm;B、 file *pm; C、 FILE *pm;D、 file pm; 91、以下叙述中正确的是( B)( 2 分) A、 C 语言的 源程序不必通过编译就可以直接运行 B、 C 语言中的每条可执行语句最终都将被转换成二进制的机器指令 C、 C 源程序经编译形成的二进制代码可以直接运行 D、 C 语言中的函数不可以单独进行编译 92、结构化程序由三种基本结构组成 , 由这三种基本结构组成的算法( A)( 2
17、分) A、可以完成任何复杂的任务 8 B、只能完成部分复杂的任务 C、只能完成符合结构化的任务 D、只能完成一些简单的任务 93、以下正确的叙述是( D)( 2 分) A、 在 C 程序中,每行中只能写一条语句 B、 若 a 是实型变量, C 程序中允许赋值 a=10,因此实型变量中允许存放整型数 C、 在 C 程序中,无论是整数还是实数,都能被准确无误地表示 D、 在 C 程序中, %是只能用于整数运算的运算符 94、以下叙述中正确的是( C)( 2 分) A、在 C 程序中,无论是整数还是实数,只要在允许的范围内都能准确无误的表示。 B、C 程序由主函数组成 C、 C 程序由函数组成 D、
18、 C 程序由函数和过程组成 95、设 x、 y、 z 和 k 都是 int 型变量 ,则执行表达式 x=(y=4,z=16,k=32)后 ,x的值为 ( C)( 2 分) A、 4 B、 16 C、 32 D、 52 96、能正确表示逻辑关系: 10 =a =0的 C 语言表达式是 ( D )( 2 分) A、 10=a=0 B、 a=0 and a=0|a=0 char c=a; scanf(“%d%c%d“, printf(“%d,%c,%dn“,m,c,n); 若从键盘上输入: 10A10,则输出结果是( A)( 2 分) A、 10,A,10 B、 10,a,10 C、 10,a,0
19、D、 10,A,0 10 121、执行下列语句 int x=10,y=10;printf(“%d %dn“,x-,-y); 后的输出是( D)( 2 分) A、 10 10 B、 9 9 C、 9 10 D、 10 9 122、下列表达式中, ( C )不满足当 x 的值为偶数时值为真,为奇数时值为假的要求。 A、 x%2=0 B、 !x%2!=0 C、 (x/2*2-x)=0 D、 !(x%2) 123、已知 :int n,i=1,j=2;执行语句 n=ij?i+:j+;则 i 和 j 的值是 ( C )。 ( 2分) A、 1, 3 B、 1, 2 C、 2, 2 D、 2, 3 124、
20、执行语句 for(I=1;I+4; );后变量 I 的值是 ( C )。( 2 分) A、 3 B、 4 C、 5 D、不定 125、 a 和 b为 int 型变量,则执行 a=1;b=10;do b- =a;a+; while (b-0);后 b 的值为 ( C )。 ( 2 分) A、 9B、 -2 C、 -1D、 8 126、有程序段 char a3,b =“China“; a=b; printf(“%s“,a); 则 ( C )。 ( 2 分) A、运行后将输出 China B、运行后将输出 Ch C、编译出错 D、运行后将输出 Chi 127、不能正确为字符数组输入数据的是 ( A
21、)。 ( 2 分) A、 char s5; scanf(“%s“, B、 char s5; scanf(“%s“, s); C、 char s5; scanf(“%s“, D、 char s5; gets(s); 128、程序段 char s=“141141abct“;printf (“%dn“,strlen(s);的输出结果是( A )。( 2 分) A、 9 B、 12 C、 13D、 14 129、已知 :char s20=“programming“,*ps=s;则不能引用 字母 o 的表达式是 ( A )。 ( 2 分) A、 ps+2 B、 s2 C、 ps2 D、 ps+=2,*p
22、s 130 下列关于文件打开方式 w和 a的描述中,错误的是( D )( 2 分) A、它们都可以向文件写入数据。 B、以 w方式打开的文件从头写入数据。 C、以 a方式打开的文件从尾写入数据。 D、它们都不清除原文件内容。 131、 C 语言程序的注释是( A)( 2 分) A、由 “/*“开头, “*/“结尾 B、由 “/*“开头, “/*“结尾 C、由 “/“开头 D、 由 “/*“或 “/“开头 133、若有以下类型说明语句: char w; int x; float y; double z;则表达式 w*x+z-y 的结果类型是( D)( 2 分) A、 float B、 char
23、C、 int D、 double 134、以下选项中属于 C 语言的数据类型是( C)( 2 分) A、 复数型 B、 逻辑型 C、 双精度型 D、 集合型 135、若已定义 x 和 y 为 double 类型,则表达式 x=1, y=x+3/2 的值是 ( c)( 2 分) A、 1 B、 2 C、 2.0 D、 2.5 137 、对于程序段 int a,b=1,c=2; a=b+c,a+b,c+3; c=(c)?a+:b-; printf(“c=%d/n“,(a+b,c); 正确的说法是 ( A )。( 2 分) A、无错误 B、第三句有错误 C、第四句有错误 D、第五句有错误 138、对于条件表达式 (k)?(i+):(i-)来说,其中的表达式 k 等价于 ( C )。( 2 分) A、 k=0 B、 k=C、 k!=0D、 k!=1 139、以下描述正确的是 ( C )。( 2 分)