C语言选择题(附答案) 下载本文

第一单元 C语言概述

一、选择题

1、C语言中主函数的个数为( A)个。 A)1

B)2

D)任意个

C)无穷个

2、以下关于C语言描述错误的是( D)。 A)一个C程序总是从main函数开始执行T B)每个语句和数据声明的最后必须有一个分号T C)C语言的注释符是以“/*”开始并以“*/”结束的 D)一个C程序可以包含多个main函数F 3、C 语言源程序文件后缀为( C )。 A).EXE

B).OBJ

C) .C

D).ASM

T

4、C语言是由( C )组成的。 A)子程序 B)主程序与子程序 5、C语言属于( B )语言 A)机器语言 B)汇编语言

第二单元 C语言基础

一、选择题

1、C语言中普通整型变量int在内存中占( B )字节。 A)1

B)2

C)3

D)4

C)高级语言

D)面向对象语言

C)函数 D)过程

2、下列不是C语言基本数据类型的是 ( A )。 A)字符型 B) 整型 C) 浮点型 D) 结构体

3、有关自增、自减运算,以下只有( D )是正确的。 A) ---f B) ++78 C) a—b++ D) d++

4、已知A=7.5,B=2,C=3.6,表达式(A>B && C>A) || (AB)的值是( A )。 A)0

B)10 C)1

1

D)5

5、若有x=1,y=2,z=3,则表达式(x

B)2

C)3

D)0

6、 判断char型变量ch是否为大写字母的正确表达式是( C )。 A) ‘A’<=ch<=‘Z’ B) (ch>=‘A’)&(ch<=‘Z’) C) (ch>=‘A’)&&(ch<=‘Z’) D) (‘A’<= ch)AND(‘Z’>= ch) 7、判断整型变量digit是否为数字的正确表达式是( C )。 A) ‘0’<=ch<=‘9’ B) (ch>=‘0’)&(ch<=‘9’) C) (ch>=‘0’)&&(ch<=‘9’) D) (‘0’<= ch)AND(‘9’>= ch) 8、 一个C程序的执行是从( A )。

A) 本程序的main函数开始,到main函数结柬

B)本程序文件的第一个函数开始,到本程序文件的最后一个函数结束 C)本程序的main函数开始,到本程序文件的最后一个函数结束 D)本程序文件的第一个函数开始,到本程序main函数结束 9、在以下标识符中,合法的是( C )

A)if B) 0xy C)_xy D)case

10、C语言中各种类型的数据其实决定了占用内存的字节数。float占( C )。 A)一字节 B)二字节 C)四字节 D)八字节 11、下列各选项中,( A )是有效的标识符。 A)ab B)3day C)day-3 12、以下叙述正确的是( C ) A) 在C程序中,每行只能写一条语句

B) 若a是实型变量,C程序中不允许a=10这种赋值。 C) 在C程序中,%是只能用于整数运算的运算符 D) 在C程序中,无论是整数还是实数,没有什么区别

13、有输入语句:scanf(―a=%d,b=%d,c=%d‖,&a,&b,&c);为使变量 a的值为1,b的值为3,c的值为2,则正确的数据输入方式是( B )。

A)132↙

B)1,3,2↙

D)#abc

C)a=1 b=3 c=2↙ D)a=1,b=3,c=2↙

14、设整型变量a为5,使b不为2的表达式是( C )。 A) b = a/2 B) b = 6-(--a) C) b=a%2 D) b=a>3?2:1

2

15、以下程序的输出结果是( D )。 int x=10,y=10;

printf(―%d %d\\n‖,x--,--y);

A) 10 10 B) 9 9 C) 9 10 D) 10 9 16、选出下列标识符中不是合法的标识符的是( D )。 A) hot_do B) cat1 C) _pri D) 2ab 17、设有如下定义: int x=10,y=3,z;

则语句printf(\的输出结果是( D )。 A) 1 B) 0 C) 4 D) 3

18、各种基本数据类型的存贮空间正确的长度排列为( C )。 A)int < char

A)char:a, b, c; B)char a; b; c; C)char a, b, c; D)char a, b, c。 20、转义字符“反斜杠线”的表示方法正确的是( B ) 。 A) \\ B) \\\\ C ) ?\\‘ D) ―\\‖ 21、若x=5,y=3 则y*=x+5; y的值为( D )。 A) 10 B) 20 C) 15 D) 30

22、能正确表示a和b同时为正或同时为负的逻辑表达式是( D ) A)(a>=0||b>=0)&&(a<0 ||b<0) B)(a>=0 && b>=0)&&(a<0 && b<0) C)(a+b>0) &&(a+b<=0) D) a*b>0 23、C语言中,合法的字符型常数是( D )。 A)?A‘ B)―A‖ C) 65 D) A 24、下列程序段的输出结果是( C )。 char c1,c2; c1=65; c2=65+32+1; printf(―%c,%c‖,c1,c2);

A)a,B B)a,b C)A,b D)A,B 25、下列语句不具有赋值功能的是( C )

3

A)a*=b B)x=1 C)a+b D)a++

26、在C语言中,存储一个整型、字符型、双精度实型变量所需的字节( A )。 A)2、1、8 B)4、1、4 C)4、1、4 D)2、2、8 27、下列程序段输出结果是( B )。 int j=2 , i=1; j /= i*j; printf(―%d‖,j);

A)0 B)1 C)2 D)3 28、不是C语言提供的合法关键字是( D )。 A)switch B)char C)case D)this

29、在C语言中,要求参加运算的数必须时整数的运算符是( C )。 A)/ B)* C)% D) =

30、若已定义x和y为double类型,且x=1;则表达式y=x+3/2的值是( C )。 A)1 B)2 C)2.0 D)2.5

31、设a为整型变量,不能正确表达数学关系:1010&&a<15 D)!(a<=10)&&!(a>=15) 32、表达式“10!=9‖的值是( D )。

A)true B)非零值 C)0 D)1

33、设a,b为字符型变量,执行scanf(“a=%c,b=%c”,&a,&b)后使a为’A’,b为’B’,从键盘上的正确输入是( B )。

A) ’A’ ‘B’ B) ’A’,’B’ C)A=A,B=B D)a=A,b=B

34、设有单精度变量f,其值为13.8。执行语句“n=( (int)f )%3;”后,n的值是( B )。 A)4

B)1

C)4.333333

D)4.6

35、普通整形int能够处理的数据范围是( D ) A)-32767~32767 B)-32768~32768 C)-32767~32768 D)-32768~32767

36、若定义x为double型变量,则能正确输入x值的语句是。B A)scanf(―%f‖,x); B)scanf(―%f‖,&x);

4

C)scanf(―%lf‖,&x); D)scanf(―%5.1f‖,&x) 37、执行 x=(6*7%8+9)/5; 后,x的值为( B ) A)1 B)2 C)3 D)4 38、若有代数式3ae/bc,则不正确的c语言表达式是( B ) A)a/b/c*e*3 B)3*a*e/b/c C)3*a*e/b*c D)a*e/b/c*3

39、设有变量说明:float x = 4.0 , y = 4.0,下面使x为10.0的表达式是( D ) A)x -= y*2.5 B)x /= y+9 C)x *= y-6 D)x += y+2 40、以下能正确定义整型变量z、b、c并为其赋初值5的语句是( C ) A)int a=b=c=5; B)int a,c, c=5; C)a=5,b=5,c=5; D)a=b=c=5;

41、C语言中双精度浮点型变量double在内存中占(D )字节。 A)1

B)2

C)4

D)8

42、以下哪个数学函数的作用是求某数的平方根( A )。 A)sqrt()

B)fabs()

C)pow()

D)exp()

43、两次运行下面的程序,如果从键盘上分别输入6和3,则输出结果是(int x;

scanf(\

if(++x>5) printf(\else printf(\

A) 7和5 B) 6和3 C) 7和4 D)6和4 44、执行语句\后,x,a,b的值依次为( B )。 A)3, 3, 2 B)3,2,2 C)3,2,3 D)2,3,2 45、读出以下语句的输出结果是( D )。 int x=10,y=10;

printf(\%d\\n\

A) 10 10 B)9 9 C)9 10 D) 10 9 *

46、C语言中,合法的字符串型常数是( D )。

A)?A‘ B)\ C) ?abcd‘ D) abcd 47、为表示关系x≥y≥z,应使用C语言表达式( A )。

5

)。 C

A)(x>=y)&&(y>=z) B)(x>=y) AND (y>=z) C)(x>=y>=z) D) (x>=z)&(y>=z) 48、C语言的输入与输出操作是由( C )完成的。 A)输入语句 B)输出语句 C)输入与输出函数 D)输入与输出语句

49、设有int x=11 ;则表达式(x+1/3)的值是( C )。 A)11.3 B)11.333333 C)11 D)12

50、若已定义x和y为double类型,则表达式x = 1,y = x+3/2的值是( C ) A)1 B)2 C)2.0 D)2.5 二、判断题

( )1、 “A”是一个字符常量。 X

( )2.、在程序运行过程中其值可以改变的量称为变量。 V ( )3、在C语言中,变量可以先使用再定义。 X ( )4、在C语言中,所有算术运算符的优先级都相同。 X ( )5、程序中若要使用数学函数就必须包含头文件‖math.h‖。 V ( )6、程序中若要使用printf()函数就必须引用头文件‖stdio.h‖。 V ( )7、在标准C中,“=”是判断两个数是否相等。 X

( )8、在标准C中,使用所有输入输出函数必须包含“stdio.h”文件。 X ( )9、在C语言中输出数据时可以指定数据的精度,即小数点后保留几位。 V ( )10、C语言中的基本数据类型有字符型、整型和浮点型。 V ( )11、所有的C语言程序都必须有一个名为main的主函数。 V ( )12、/ 运算符要求运算数必须是整数。 ( )13、Int, #a15 , char都是合法的标识符。

X

X

( )14、'b'和\是不同的两种常量。 V

( )15、C语言本身没有输入输出语句,要实现输入输出必须调用相应的输入输出函数。 V

6

第三单元 算法

一、判断题

( )1、 算法简而言之就是基于某种计算机语言,利用数据结构来解决具体问题的思路和方法。 V

( )2、 描述算法的图形化方法之一就是程序流程图。V

( )3、 描述算法可以用自然语言、传统流程图、N-S流程图来描述。V ( )4、 算法要有一定的逻辑性和健壮性。V ( )5、 算法的特点之一是无穷性。X

一、选择题

1、下列标识符中合法的标识符是( A )

A) int2 B) if C) 2two D) a#b 2、选出下列标识符中不是合法的标识符的是( B ) A) hot_do B) cat@113 C) INT D) _2ab 3.、以下选项中属于C语言的数据类型是( B )

A) 字符串型 B) 双精度型 C) 逻辑型 D) 布尔型 4、设有如下定义: int x=10,y=3, z;

则语句printf(\的输出结果是( D ) A) 3 B) 0 C) 4 D) 1

5、设整型变量n的值为2,执行语句\;\后,n的值是( B ) A) 0 B) 4 C) - 4 D) 2 二、判断题

( )1、结构化程序设计的三种结构是顺序结构、选择结构和循环结构。V ( )2、可以用printf(\语句输出一个十六进制整数。X

( )3、可以用scanf(\语句从键盘接收一个八进制整数给变量da。X ( )4、语句scanf(\是正确的。X

( )5、 如果a是一维字符数组名,则语句scanf(\是正确的。X

7

第四单元 顺序结构

第五单元 选择结构

一、选择题

1、有以下程序段 int a; if (3&&2)

a=1;

else

a = 2;

执行后a=( A )。

A)1 B)2 C)3 D)0 2、表达式:10!=9的值是( D )。 A) true B) 非零值 C) 0 D) 1

3、设int x=1,y=1;表达式(!x++ || y--)的值是_( B )。 A)0 B) 1 C) 2 D)-1

4、设整型变量s, c1,c2的值均为2,则执行语句(s=(c1= =c2))后,s的值为:( A)0 B)1 C)2 D)3

5、设整型变量a,b的值分别为1,0,那么a && b的结果是( A )。 A)0 B)1 C)2 D)都不对

6、设整型变量a,b的值分别为1,0,那么a || b的结果是( B )。 A)0 B)1 C)2 D)都不对

7、设整型变量a,b的值分别为1,0,那么a != b的结果是( B )。 A)0 B)1 C)2 D)都不对

8、设整型变量a,b的值分别为1,0,那么a || (b++)的结果是( B )。 A)0 B)1 C)2 D)都不对

9、设整型变量a,b的值分别为1,0,那么a && (++b)的结果是( B )。A)0 B)1 C)2 D)都不对

10、设整型变量a,b的值分别为1,2,那么表达式 a>b?a+b:a-b的结果是( D A)1 B)2 C)3 D)-1 11、下边程序段 int a=2,b=3,c=4;

8

)。)。 B if(c=a+b) printf(―OK!‖) else printf(―NO!‖); 输出结果是( A )。

A)OK! B)NO C)程序错误 D)以上都不对

12、设整型变量a,b的值分别为1,0,那么a= =b 的结果是( A )。 A)0 B)1 C)2 D)都不对

13、设整型变量a,b的值分别为1,0,那么!(a = = b)的结果是( B )。 A)0 B)1 C)2 D)都不对

14、设整型变量a,b的值分别为1,2,那么!a && b的结果是( A )。 A)0 B)1 C)2 D)都不对 15、设x为非零,则下列描述错误的是( D )。 A)!(x = = 0) B)x != 0 C)3*x != 0 D)x>0 16、下列表达式的值中哪个表示为逻辑假( C )。 A)1 B)3 C)0 D)-1

17、设整型变量a,b的值分别为6,2,那么a%b != 0的结果是( A )。 A)0 B)1 C)2 D)3 18、下列属于分支结构的是( B )。

A)while B)switch C)for D)以上都不是

19、设整型变量a,b的值分别为1,0,那么a || (++b)的结果是( B )。 A)0 B)1 C)2 D)都不对

20、设整型变量a,b的值分别为1,0,那么a&&(b++)的结果是( A )。 A)0 B)1 C)2 D)都不对 二、判断题

( )1、在分支结构switch中,case后面跟的一定是常量。 V ( )2、逻辑运算符优先级高于关系运算符的优先级。 X ( )3、关系运算符中,= = 的优先级要高于 >= 的优先级。 X ( )4、关系运算符中,> 的优先级要高于 >= 的优先级。 X ( )5、在条件表达式中,-3代表为真。 V ( )6、在条件表达式中,非0代表为真。

V

( )7、条件运算符 ?: 是2目运算符。 X

9

( )8、在switch语句中,有没有break的情况都是相同的。 X ( )9、判断a,b两个数是否相等,用 a = b。 X ( )10、判断a,b两个数是否相等,用 a = = b。 V

第六单元 for循环结构

一、选择题

1、对下边for循环,循环体体执行次数是( B )。 for ( i = 1; i <= 10; i = i + 2 )

;

A) 6

B) 5

C) 4 D) 7

2、对下边for循环,循环体执行次数是( C )。 for ( i = 5; i > 1; i -- )

;

A) 6

B) 5

C) 4

D) 7

3、下边循环执行完后,a为( C )。 for ( a= 1;a< 5; a++ ) a = 2 * a; A) 5

B) 4 C) 7 D) 8

4、下边循环执行完后,s为( A )。//无法确定 for ( a= 1; a< 5; a++ )

for ( b= s = 0; b< a; b++, s = s +a)

;

A) 6

B) 4

C) 7

D) 无答案

7、下边程序段输出结果是( A )。

int i , a= 0;

for ( i = 0; i < 10; i++ )

a++, i++;

printf(\

A)5 B)6 C)9 D)10

10

8、以下for循环的次数为( D )。 for(x = 0,y = 0; (y=123) && (x<4) ; x++)

;

A)不循环 B)无限次 C)3 D)4 9、从循环体内某一层跳出,继续执行循环外的语句是:( A )。 A) break语句 B)return语句 C)continue语句 D)空语句

11、循环语句 for (x=0,y=0; (y!=123)|| (x<4);x++) ;的循环执行次数为( C )。 A)无限次 B)不循环 C)4次 D)3次

12、设i,j,k均为int型变量,k初值为0,执行完下面的for循环后,k的值为( A for (i=0,j=10; i<=j; i++,j--) k=i+j;

A)10 B)9 C)8 D)7 13、以下程序段的循环次数是( C )。 for (i=2 ; i=0 ; )

printf(―%d‖ , i--) ;

A)无限次 B)0次 C)1次 D)2次 14、下边程序段循环执行的次数是( B )。 int a= 0, j = 10; for ( ; j > 3; j-- ) {

a++;

if ( a> 3) break ; }

A) 3 B、4 C、5 D)6

18、for循环中,能省略的表达式有( D )。

A)表达式1 B)表达式2 C)表达式3 D)3个都可以 A)3次 B)2次 C)6次 D)9次 20、下面循环体被执行的次数是( 2 )。 for(i=0;i<3;i++)

11

)。

21、定义变量int i=-1; 则以下不是无限循环的是: ( C )。 A. for (i=0; i=1; i++) ; B. for ( i=0; ; i--) ; C. for ( ; i>-10; i--) ; D. for ( ; i<0 ; ) ; 22、定义变量int i=2; 则以下是无限循环的是: ( D )。 A. for (i=0;i==1;i++) ; B. for (i=0; i<0 ; ) --i;

C. for ( ; i>10; i++) ; D. for ( ; i ; ++i ) ;

23、以下for循环语句,循环体的执行次数是: ( A )。/*该题经验证是3次,不知道怎么回事 ,自己取研究*/

for( i=1; i<=5; i+=2 ) ;

A. 4 B. 5 C. 6 D. 7 24、以下for循环语句,循环体的执行次数是: ( A )。 for( i=5; i>1; i-- ) ;

A. 4 B. 5 C. 3 D. 2 25、下面的循环体执行完后,a的值是: ( A )。 for( a=2; a<8; a++) a*=2 ;4

A. 10 B.9 C. 12 D. 11

二、判断题

( )1、continue语句只能用于循环语句中。 V

( )2、在for循环中允许使用嵌套循环,但只能是嵌套while循环。X ( )3、break语句只能用于循环语句中。 X ( )4、for循环可能一次都不执行。 V

( )5、break语句是结束本层循环。 V ( )6、break语句是结束本次循环。 X ( )7、continue语句是结束本层循环。 X ( )8、continue语句是结束本次循环。 V

( ) 9、在循环过程中,使用break语句和continue语句的作用是一样的。 X

( )10、for( ; ; )这写书写for循环是合法的,即for三个表达式都是可以省略的。 V

三、程序阅读

12

1、以下程序运行完后的输出数据是:__aaaaaaaaa__ main() {

int a=10 ; for( ; a ; ) {

a--; if(a==0) break; printf(\ } }

2、以下程序运行完后a的值是: __1__ main() {

int i, a=0 ; for(i=0; i<10; i++) i++; a++; printf(\ }

3、 以下程序运行完后a的值是: __5__ main() {

int i, a=0 ; for(i=0; i<10; i++) a++, i++;

printf(\ }

4、以下程序运行完后的结果是:_#*#*_ main() {

13

int k;

for (k=1;k<5;k++) {

if(k%2!=0) printf(\ else printf(\ } }

5、以下程序运行完后s的值是: _1.0__ main() { int n ; float s=1.0; for(n=10;n>1;n--) s=s+1/n; printf(\ }

第七单元 while与do-while循环

一、选择题

1、break语句的正确的用法是( C )。

A)无论在任何情况下,都中断程序的执行,退出程序。 B)在多重循环中,只能退出最靠近的那一层循环语句。 C)跳出多重循环。 D)只能修改控制变量。

2、int i=0; while( i++ < 5); 循环结束后i的值是( C )。 A)6 B)7 C)5 D)8

3、语句while ( E ); 括号中的表达式E等价于( D )。 A)E==0 B)E!=1 C)E!=0 D)E==1

14

4、 int i=1; while( --i ) ; 循环次数是( B )。 A)无限次 B)0 C)2 D)1 7、do-while语句的循环体( B )。

A)可能一次都不执行 B)至少要执行一次 C)由循环条件决定循环次数 D)B C均正确

8、对下面的while语句,循环体执行次数是( A )次。 a=30; while ( a--) ;

A)30 B)31 C)39 D)都不对 9、在C语言中,下列说法中正确的是( B )。 A)不能使用\… while\的循环。

B)\的循环必须使用break语句退出循环。 C)\的循环中,当条件为0时将结束循环。 D) \的循环中,当条件为非0时将结束循环。 10、下面的循环执行完后,循环次数是( B )次。 while( k=10 )

k--;

A)9 B)10 C)11 D)无穷次 二、判断题

( )1、while 适合控制循环次数不确定的循环。(V)

( )2、无论循环条件是否满足,do ... while循环的循环体至少执行一次。(V) ( )3、while( 'a' ) ;是一个死循环。(V)

( )4、在实际编程中,do-while循环完全可以用for循环替换。(V) ( )5、continue;语句和break;语句有同样的作用。(X)

第八单元 数组

一、选择题

1、下列描述中不正确的是( A )。 A) 字符型数组中可能存放字符串。

15

B) 可以对字符型数组进行整体输入、输出。 C) 字符串函数声明在包ctype.h中。 D) 字符串的结束符是‘\\0‘。

2、定义如下变量和数组: int i ; int x[6] ={1,2,3,4,5,6};

则语句for(i=0;i<3;i++) printf(\\的输出结果是( D )。 A) 1 2 3 B)1 3 5 C)2 4 6 D)6 5 4 3、以下对二维数组a进行正确初始化的是( D )。

A) int a[2][3]={{1,2},{3,4},{5,6}}; B) int a[ ][3]={1,2,3,4,5,6}; C)int a[2][ ]={1,2,3,4,5,6}; D) int a[2][ ]={{1,2},{3,4}}; 4、下列程序的输出结果是( A )。 char a[]=\strcpy( str , strcat( a, b ) ); printf( \

A)xyabcAB B)abcABz C)ABabcz D)abcdABCD 5、不能把字符串:Hello!赋给数组b的语句是( B )。 A)char b[10]={'H','e','l','l','o','!'}; B)char b[5] =\C)char b[10]; strcpy(b,\)char b[10]=\6、下列对数组定义不正确的语句是( A )。

A)int m[5]; B)char b[]={‘h’,’e’}; C)int a[10]={1,6,8,4}; D)char p[]; 7、以下对二维数组 a的正确定义是( A ) A)int a[3][] ; B)float a(3,4) ; C)double a[2][4]; D)float a(3)(4) ; 8、给出以下定义: char x[ ]="abcdefg";

char y[ ]={'a','b','c','d','e','f','g'}; 以下正确的叙述是( D )。

A)数组x和数组y等价 B)数组x和数组y长度相等

C)数组x的长度大于数组y的长度,因为还存储了一个结束符

16

D)数组x的长度小于数组y的长度,因为还存储了一个结束符 9、在int b[ ][3]={{1},{3,2},{4,5,6},{0}};中b[2][2]的值是( C )。 A)0 B)5 C)6 D)2 10、下列初始化正确的是( A )。

A)char s1[ ]="abcd" ; B)char s2[3]="zxy";

C)char * p=1000 ; D) char s4[2][3]={{"xyz"},{"mnp"}} ;

11、设有定义:char s[12]="string";则printf ("%d\\n",strlen(s));的输出是( A A)6 B)7 C)11 D)12

12、函数调用strcat(strcpy(str1,str2),str3)的功能是( A )。

A)将字符串str2复制到字符串str1中后再将字符串str3连接到字符串str1之后 B)将字符串str1复制到字符串str2中后再连接到字符串str3之后 C)将字符串str1复制到字符串str2中后再复制到字符串str3之后

D) 将字符串str2连接到字符串str1中后再将字符串str1复制到字符串str3中 13、使用随机函数需要包含的头文件有( D )。 A) #include B) #include C) #include D) A和B

14、若有说明int a[3][4]={0};下列叙述正确的是( D )。 A)只有元素a[0][0]可得到初值0 B)此说明语句不正确

C)数组a中各元素都可得到初值,但其值不一定为0 D)数组a中每个元素均可得到初值0

15、执行下面的程序段后,变量k的值为( C )。

int k=3,s[2]; s[0]=k; k=s[0]*10;

A)不定值 B)33 C)30 D)10 16、以下定义数组的语句中正确的是( D )。 A) int a(10) B) char str[] ;

C) int n=5; int a[4][n];

17

。 )

D) #define N 10 char str[N];

17、定义如下变量和数组: int k;

int a[3][3]={9,8,7,6,5,4,3,2,1}; 则下列语句的输出结果是( B )。 for(k=0;k<3;k++) printf(―%d‖,a[k][k]);

A) 7 5 3 B) 9 5 1 C) 9 6 3 D)7 4 1 18、下列描述正确的是( D )。

A)两个字符串所包含的字符个数相同时,才能比较字符串 B)字符个数多的字符串比字符个数少的字符串大 C)字符串“STOP”与“STOP ”相等 D)字符串“That‖与字符串“ThaT”不相等

19、若二维数组a有n 行n列,则副对角线元素是( )。(假设a[0][0]位于数组的第一个位置上,且i∈[0,n))

A)a[i][i] B)a[i][n-i] C)a[n-i][i] D)a[i][n-1-i] 20、对以下说明语句的正确理解是( B )。 int a[10]={6,7,8,9,10};

A)将5个初值依次赋给a[1]至a[5]。 B)将5个初值依次赋给a[0]至a[4]。 C)将5个初值依次赋给a[6]至a[10]。

D)因为数组长度与初值的个数不相同,所以此语句不正确 21、判断字符串a和b是否相等,应使用( D )。

A)if(a= =b) B) if(a=b) C)if(strcpy(a,b)) D) if(strcmp(a,b)= =0) 22、判断字符串s1的长度是否大于字符串s2的长度,应使用(C )。 A)if(s1>s2) B)if(strcmp(s1,s2)) C)if(strlen(s1)>strlen(s2)) D)if(strcat(s1)>strcat(s2)) 23、下列程序段的运行结果( B )。 char c[15]={'a','b','\\0','c','\\0'}; printf(―%s‖,c);

18

A)'a','b' B) ab C) abc D) a ,b *24、假设有两个字符数组a,b,则以下正确的输入语句是( C )。 A)puts(a,b); B) scanf(―%s%s‖,a,b); C)scanf(―%s%s‖,&a,&b); D)gets(―a‖);gets(―b‖);

25、若有说明int a[][3]={1,2,3,4,5,6,7,8,9};则a数组行数的大小为( B )。 A) 2 B) 3 C)4 D)无确定值

26. 若有定义double x[3][5]; 则x数组中行标的下限为( D ),列标的上限为( )。

A)1 3 B) 3 5 C)0 5 D)0 4 27、 若有说明a[3][4];则数组a中的各元素( B )。

A) 可在程序的运行阶段得到初始值0 B) 可在程序的编译阶段得到初始值0 C) 不能得到确定的初始值

D) 可在程序的编译或运行阶段得到初始值 28、若有下列程序段 char x[80]; scanf(―%s‖,x); printf(“%s”,x);

从键盘上输入字符串“zhang san”,则输出结果为( A )。 A)zhang B) zhangsan C) zhang san D)san

29、在C语言中,引用数组元素时,其数组下标的数据类型允许为( A ) A) 整型常量 B) 整型表达式 C) 整型常量或整型表达式 D) 任何类型的表达式 30、设有如下形式的字符数组定义: char str[]=‖welcome‖;

则执行下列语句后的输出结果( B )。

printf(―%d\\n‖,strlen(strcpy(str,“Hello”)));/*该题没有进行强制转换*/ A) 7 B) 5 C) 8 D)9

31、若有int a[3][5]={2,2},{2,6},{2,6,2}},则数组a共有( C )个元素。 A)8 B)5 C)3 D)15

19

32、设有如下定义:int a[100];则数组下标区间为:( A )。 A) 0~99 B) 1~99 C) 0~100 D)1~100

33、若有定义:int a[3][4],则对数组a中某元素的正确引用是( B )。 A)a[2][4] B)a[1][3] C)a(5) D)a[10-10] 34、以下对一维整型数组a的正确说明是( D )。 A)int a(10) ; B)int n=10,a[n]; C) int n; D)#define SIZE 10

scanf(―%d‖,&n); int a[SIZE]; nt a[n];

35、若要使用字符函数,需要引入的头文件是( A)。 A)string.h B)ctype.h C)stdlib.h D)stdio.h

二、判断题

( )1、在定义一维数组时,可以将该数组的长度省略 V ( )2、数组的下标从0开始。 V ( )3、数组的下标从1开始。 X ( )4、数组名代表数组的首地址。 V ( )5、在C语言中,数组元素在内存中的存放顺序是按顺序存放的。V ( )6、字符数组可以存放字符串。 V ( )7、字符串函数strupr(str),可将串中大写字母变成小写字母。 X ( )8、字符串函数strrev(str) ,可将str串字符颠倒过来。 V ( )9、字符串的结束符不是‘\\0‘ 。 X ( )10、可如此定义a数组:float a[3]={12.5,‘z‘,‖school‖}; X

( )11、数组边定义边赋值时,大括号内数据项的数目可以大于或等于数组的长度。 X

( )12、数组边定义边赋值时,大括号内数据项的数目可以小于或等于数组的长度。 V

( )13、字符串函数strcat(str1,str2)的作用是将字符串str2连接在字符串str1后。 V

20

( )14、定义字符型一维数组char a[80];可用gets(a[0])给a[0]赋值。X ( )15、数组定义 int a[10]; 也可以写成 int a(10);。 X

三、程序阅读题

1、下面程序的输出结果是___6 5_______。 main ( ) {

char ch[7]={\ int i;

for (i=0;ch[i]>='0'&&ch[i]<='9';i++) printf(\ \ }

2、下面程序执行后,s1=___15.0_____,s2=___2.7______。 float b[]={0.5,1.6,2.7,3.8,4.9,5,6.1,6.2,7.3,8.4},s1,s2; int i;

for(i=0,s1=s2=0 ; i<9 ; i++ ) { }

3、将程序补充完整,实现功能:输出斐氏数列的前20项,菲波纳契额数列具有这样的性质:F(0)=1 F(1)=2 F(N)=F(N-1)+F(N-2)

#include \void main() { int i;

if ( i%2 ) s1 += ( int ) b[i]; if( i%3 ) s2 += b[i] – (int) b[i];

long f[20]={1,2}; for(i=2 ; i<20 ; i++)

f[i] = f[i-2] + f[i-1]; for(i=0 ; i<20 ; i++)

printf(\

21

}

4、将程序补充完整,实现功能:输入2个字符串,判断两个串是否相同,相同输出yes,不同输出no。

#include \#include \void main() { char x[80],y[80]; gets(x); gets(y);

if(strcmp(x,y)==0) puts(\ else

puts(\

}

5、 设有以下代码: #include \void main() {

int a[3][3],s=0; int i,j; for(i=0;i<3;i++) for(j=0;j<3;j++) scanf(\for(i=0;i<3;i++) for(j=0;j

假设键盘上输入的9个数据为:1

2 3 4 22

5 6 7 8 9 ,

上面程序的输出结果是_______19____。

第九单元 指针

一、选择题

1、以下定义正确的是( C)。 A)int x; float *p=x; B)int x; int *p=x; C)int x; int *p=&x; D)int x; float *p=&x; 2、以下定义正确的是( D)。 A)float x; float *p=x; B)float x; int *p=x; C)float x; int *p=&x; D)float x; float *p=&x; 3、以下定义正确的是( A )。 A)float x[10]; float *p=x; B)float x[10]; int *p=x; C)float x[10]; int *p=&x; D)float x[10]; float *p=&x; 4、以下定义正确的是( B )。 A)int x[10]; float *p=x; B)int x[10]; int *p=x; C)int x[10]; int *p=&x; D)int x[10]; float *p=&x; 5、设有以下变量定义 int x; float y; double z;

z = sizeof( x ) + sizeof ( y ) + sizeof ( z ) ;/*我觉得答案是12,大家多研究下*/ 则z的值为( )。

A)8 B)4 C)6 D)10

23

二、判断题

( )1、数组名代表数组的首地址。 正确

( )2、指针的类型必须跟其所指向的变量的数据或数据结构类型一致。正确 ( )3、指针可以不操作数组。 错误 ( )4、空指针的值为NULL。 正确 ( )5、指针不能实现对数据的间接访问。 错误

第十一单元 函数

一、选择题

1、以下不正确的说法是( D )。

A)在不同函数中可以使用相同名字的变量 B)形式参数是局部变量

C)在函数内定义的变量只在本函数范围内有定义 D)在某函数内定义的变量可在其余函数中通用 2、以下正确的函数定义是( C )。

A)double fun(int x , int y) B)double fun(int x ; int y) C)double fun(int x , int y) ; D)double fun(int x,y) 3、以下正确的函数定义是( C )。

A)double fun(int x, int y) B)double fun(int x,y)

{ z=x+y ; return z ; } { int z ; return z ;}

C)fun (x,y) D)double fun (int x, int y) { int x, y ; double z ;

{ double z ;

z=x+y ; return z ; } return z ; }

4、若调用一个函数,且此函数中没有return语句,则正确的说法是( D )。 A)该函数没有返回值

B)该函数返回若干个系统默认值 C)能返回一个用户所希望的函数值 D)返回一个不确定的值 5、已知一个函数的定义如下:

double fun(int x, double y)

24

{ …… }

则该函数正确的函数原型声明为( C )。

A)double fun (int x,double y) B)fun (int x,double y) C)double fun (int x ,double y ); D)fun(x,y) ; 6、包含标准库函数scanf()声明的头文件是( A )。 A)stdio.h B)stdlib.h C)math.h D)time.h

7、C语言规定,函数返回值的类型是由 决定的。A

A)return语句中的表达式类型 B)调用该函数时的主调函数类型 C)调用该函数时由系统临时 D)在定义函数时所指定的函数返回类型 8、若在某程序中定义了多个函数,则以下说法中正确的是( C )。 A)C语言程序总是从第一个的数开始执行

B)在C语言程序中,要调用的函数必须在main()函数中定义 C)C语言程序总是从main()函数开始执行

D)C语言程序中的main()函数必须放在程序的开始部分 9、一个C语言程序是由( D )构成。

A)语句 B)行号 C)数据 D)函数 10、设有某函数fun,定义如下:

int fun(int x, int y) {

…….. }

以下fun函数的调用,正确的是( B )。

A)fun(3 , 4.2) B)fun(3 , 4) C)int a; D)int a; a = fun(3 , 4) a = fun(3 , 4.2) 二、判断题

( )1、在不同函数中可以使用相同名字的变量。 正确 ( )2、全局变量的作用域是整个程序。 错误 ( )3、局部变量的作用域是整个程序。 错误

( )4、函数在做调用时,实际参数必须与形式参数一致,包括数量和数据类型。

正确

25

( )5、函数的返回值必须与函数定义时的返回类型一致。 正确 1、以下程序运行后的结果是:___6,6_______ int fun() { } main() { }

2、以下程序运行结果是:___B______

void fun(); char c = ‘a‘; void main() { }

void fun() {

c -= 32;

26

三、程序阅读

int x = 1; int y = 1; x += 2; y += 2; return x+y;

int a,b; a = fun(); b = fun();

printf(―%d,%d‖,a,b);

char c; myfun( c ); printf(―%c\\n‖,c+1);

}

3、下面程序执行过程中若输入23、45,运行结果是:___68_______

void fun(); int a,b; main() { }

void fun() { }

4、以下函数的功能为通过自定义函数求两个数之间的最大值,请填空完成该程序。

int fun(int a, int b) { } main() { }

5、以下自定义函数的功能是找出所有三位数中不能被12整除的数,并统计其个数,请填空完成该程序。

void fun() {

scanf(―%d,%d‖,&a,&b); fun();

printf(―%d‖,a+b);

if (a

int a,b,max;

scanf(―%d,%d‖,&a,&b); max=fun(a,b); printf(―max=%d‖,max);

int i;

27

for( i=100; i<=999; i++)

if( i!=0 ) printf(―%d‖,i);

}

void main() { fun();

}

28