二级C语言复习资料数组

更新时间:2023-11-28 01:48:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

1.下列叙述中正确的是( )。答案:A

A)两个连续的双引号(\)是合法的字符串常量

B)两个连续的单引号(’’)是合法的字符常量

C)可以对字符串进行关系运算

D)空字符串不占用内存,其内存空间大小是0

2.以下数组定义中错误的是( )。

A)int x[2][3]={{1,2},{3,4},{5,6}};

B)int x[][3]={0};

C)int x[][3]={{1,2,3},{4,5,6}};

D)int x[2][3]={1,2,3,4,5,6};

3.下列定义数组的语句中,正确的是( )。答案:A

A)#define N 10 int x[N];

B)int N=10; int x[N];

C)int x[0..10];

D)int x[];

4.有以下程序 #include

main()

{ int b[3][3]={0,1,2,0,1,2,0,1,2},i,j,t=1; for(i=0; i<3; i++)

for(j=i;j<=i;j++) t+=b[i][b[j][i]]; printf(\}

程序运行后的输出结果是( )。

A)4

B)3

C)1

D)9

5.以下定义数组的语句中错误的是( )。答案:A

A)int num[2][4]={ {1,2},{3,4},{5,6} };

B)int num[][3]={ {1,2},3,4,5,6 };

C)int num[]={ 1,2,3,4,5,6 };

D)int num[][4]={1,2,3,4,5,6};

6.有以下程序 #include main()

{ int x[3][2]={0}, i;

for(i=0; i<3; i++) scanf(\

printf(\}

若运行时输入:2 4 6<回车>,则输出结果为( )。

A)2 0 4

B)2 0 0

C)2 4 0

D)2 4 6

7.下列选项中,能正确定义数组的语句是( )。答案:A

A)#define N 2008 int num[N];

B)int num[];

C)int N=2008; int num[N];

D)int num[0..2008];

8.有以下程序 #include main() {

int a[4][4]={{1,4,3,2},{8,6,5,7},{3,7,2,5},{4,8,6,1}}; int i, j, k, t; for (i=0; i<4; i++) for (j=0; j<3; j++) for (k=j+1; k<4; k++) if (a[j][i] > a[k][i]) {

t=a[j][i];

a[j][i] = a[k][i]; a[k][i] = t; } /* 按列排序 */ for(i=0; i<4; i++) printf(\}

程序运行后的输出结果是( )。

A)1, 6, 5, 7

B)8, 7, 3, 1

C)4, 7, 5, 2

D)1, 6, 2, 1

9.若要求定义具有10个int型元素的一维数组a,则以下定义语句中错误的是( )。答案:A

A)int n=10,a[n];

B)#define n 5int a [2*n];

C)int a[5+5];

D)#define N 10 int a[N]; 10.有以下程序 #include main() {

int i, t[][3]={9,8,7,6,5,4,3,2,1}; for(i=0;i<3;i++) printf(\}

程序执行后的输出结果是( )。

A)3 5 7

B)7 5 3

C)3 6 9

D)7 5 1

11.有以下程序

#include main() {

int a[4][4]={ {1,4,3,2},{8,6,5,7},{3,7,2,5},{4,8,6,1}}, i, k, t; for (i=0; i<3; i++) for (k=i+1; k<4; k++) if (a[i][i] < a[k][k])

{ t=a[i][i]; a[i][i]=a[k][k]; a[k][k]=t;} for (i=0; i<4; i++) printf(\}

程序运行后的输出结果是( )。答案:A

A)6,4,3,2

B)6,2,1,1

C)1,1,2,6

D)2,3,4,6

12.有以下程序 #include main() {

int s[12]={1,2,3,4,4,3,2,1,1,1,2,3},c[5]={0},i; for(i=0; i<12; i++) c[s[i]]++;

for(i=1; i<5; i++) printf(\printf(\}

程序的运行结果是( )。

A)4 3 3 2

B)2 3 4 4

C)1 2 3 4

D)1 1 2 3

13.以下错误的定义语句是( )。答案:A

A)int x[4][]= {{1,2,3},{1,2,3},{1,2,3},{1,2,3}};

B)int x[4][3]={{1,2,3},{1,2,3},{1,2,3},{1,2,3}};

C)int x[][3]={{0},{1},{1,2,3}};

D)int x[][3]={1,2,3,4};

14.有以下程序 #include main()

{ int i, t[][3]={9,8,7,6,5,4,3,2,1}; for(i=0;i<3;i++) printf(\}

程序执行后的输出结果是( )。

A)3 5 7

B)7 5 3

C)3 6 9

D)7 5 1

15.以下叙述中正确的是( )。答案:A

A)每个数组包含一组具有同一类型的变量,这些变量在内存中占有连续的存储单元

B)一条语句只能定义一个数组

C)数组说明符的一对方括号中只能使用整型常量,而不能使用表达式

D)在引用数组元素时,下标表达式可以使用浮点数

16.以下叙述中正确的是( )。

A)char c1, c2, *c3, c4[40];是合法的变量定义语句

B)数组下标的下限由数组中第一个非零元素的位置决定

C)数组下标的下限由数组中第一个被赋值元素的位置决定

D)数组下标的下限是1

17.以下叙述中正确的是( )。答案:A

A)语句int a[8] = {0}; 是合法的

B)语句 int a[] = {0};是不合法的,遗漏了数组的大小

C)语句 char a[2] = {\是合法的,定义了一个包含两个字符的数组

D)语句 char a[3]; a = \是合法的,因为数组有三个字符空间的容量,可以保存两个字符

18.以下叙述中正确的是( )。

A)在逻辑上,可以把二维数组看成是一个具有行和列的表格或矩阵

B)语句 int a[4][3] = {1,2,4,5}; 是错误的初始化形式

C)语句 int a[][3] = {1,2,4,5}; 是错误的初始化形式

D)语句 int a[4][3] = {{1,2}, {4,5}}; 是错误的初始化形式

19.有以下程序

#include main() {

int i, x[3][3] = { 1,2,3,4,5,6,7,8,9 }; for( i=0; i<3; i++ )

printf( \printf( \}

程序的输出结果是 ( )。答案:A

A)3 5 7

B)1 5 0

C)1 4 7

D)3 6 9

20.有以下程序 #include char fun( char *c ) {

if ( *c<=’Z’ && *c>=’A’) *c -= ’A’-’a’; return *c; } main() {

char s[81], *p=s; gets( s );

while( *p ) {

*p =fun( p ); putchar( *p ); p++; }

printf( \}

若运行时从键盘上输入OPEN THE DOOR<回车>,程序的输出结果是( )。

A)open the door

B)oPEN tHE dOOR

C)OPEN THE DOOR

D)Open The Door

21.设有定义: int x[2][3];

则以下关于二维数组x的叙述错误的是( )。答案:A

A)可以用x[0]=0;的形式为数组所有元素赋初值0

B)数组x可以看作是由x[0]和x[1]两个元素组成的一维数组

C)元素x[0]可看作是由3个整型元素组成的一维数组

D)x[0]和x[1]是数组名,分别代表一个地址常量

22.设有定义: char s[81]; int i=0;

以下不能将一行(不超过80个字符)带有空格的字符串正确读入的语句或语句组是( )。

A)scanf(\

B)while((s[i++]=getchar())!=’\\n’);s[i]=’\\0’;

C)gets(s);

D)do{ scanf(\\\n’); s[i]=’\\0’;

23.设有定义:

char p[]={’1’, ’2’,’3’},*q=p;

以下不能计算出一个char型数据所占字节数的表达式是( )。答案:A

A)sizeof(p)

B)sizeof(char)

C)sizeof(*q)

D)sizeof(p[0])

24.有以下程序 #include #include main()

{ char str[][20]={\printf(\}

程序运行后的输出结果是( )。

A)10,One*Dream!

B)9,One*Dream!

C)9,One*World

D)10,One*World

25.有以下程序

#include main()

{ char s[]=\int i, n=0;

for ( i=0; s[i]!=0; i++ )

if(s[i] >= ’0’ && s[i] <= ’9’) n++; printf(\}

程序运行后的输出结果是( )。答案:A

A)3

B)0

C)7

D)8

26.以下语句中存在语法错误的是( )。

A)char ss[6][20]; ss[1]= \

B)char ss[ ][20]={ \

C)char *ss[6]; ss[1]= \

D)char *ss[ ]={ \

27.下列语句组中,正确的是( )。答案:A

A)char *s;s=\

B)char s[7];s=\

C)char *s;s={\

D)char s[7];s={\

28.若有定义语句:

char s[10]=\则strlen(s)的值是( )。

A)7

B)8

C)9

D)10

29.有以下程序

#include #include main()

{ char p[20]={’a’, ’b’, ’c’, ’d’}, q[strcat(p, r); strcpy(p+strlen(q), q); printf(\}

程序运行后的输出结果是( )。答案:A

A)6

B)9

C)11

D)7

30.以下选项中正确的语句组是( )。

]=\A)char *s; s=\

B)char *s; s={\

C)char s[10]; s=\

D)char s[]; s=\

31.若有定义语句:

char *s1=\

以下选项中,能够输出\的语句是( )。答案:A

A)if (strcmp(s1,s2)!=0) puts(s1);

B)if (strcmp(s1,s2)!=0) puts(s2);

C)if (strcmp(s1,s2)==1) puts(s1);

D)if ( strcmp(s1,s2)==0) puts(s1);

32.有以下程序(strcat函数用以连接两个字符串) #include #include main() {

char a[20]=\strcat(a,b); printf(\}

程序运行后的输出结果是( )。

A)ABCDIJK

B)ABCDE\\0FG\\0IJK

C)IJK

D)EFGIJK

33.以下选项中正确的语句组是( )。答案:A

A)char *s; s=\

B)char *s; s={\

C)char s[10]; s=\

D)char s[]; s=\

34.若有以下定义和语句 #include

char s1[10]= \printf(\则输出结果是( )。

A)5 5

B)10 5

C)10 7

D)5 8

35.以下能正确定义字符串的语句是( )。答案:A

A)char str[]=\

B)char str=\

C)char str=’’;

D)char str[]={’\\064’};

36.以下关于字符串的叙述中正确的是( )。

A)空串比空格打头的字符串小

B)两个字符串中的字符个数相同时才能进行字符串大小的比较

C)可以用关系运算符对字符串的大小进行比较

D)C语言中有字符串类型的常量和变量

37.若要求从键盘读入含有空格字符的字符串,应使用函数( )。答案:A

A)gets()

B)getc()

C)getchar()

D)scanf()

38.有以下程序 #include main()

{ char s[]=\s+=2;

printf(\}

执行后的结果是( )。

A)程序出错

B)输出字符c的ASCII码

C)输出字符c

D)输出字符a的ASCII码

39.以下正确的字符串常量是( )。答案:A

A)\

B)’abc’

C)Olympic Games

D)\

40.下列选项中,能够满足\只要字符串s1等于字符串s2,则执行ST\要求的是( )。

A)if(strcmp(s2,s1)==0) ST;

B)if(s1==s2) ST;

C)if(strcpy(s1,s2)==1) ST;

D)if(s1-s2==0) ST;

41.有以下程序

#include int fun(char p[][10]) { int n=0,i;

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

if(p[i][0]== ’T’) n++; return n; }

main()

{ char str[][10]={\printf(\}

程序执行后的输出结果是( )。答案:A

A)2

B)1

C)3

D)0

42.有以下程序 #include

void fun(char *t , char *s) { while(*t!=0) t++;

while( (*t++ = *s++ )!=0 ) ; } main()

{ char ss[10]=\fun(ss, aa); printf(\}

程序的运行结果是( )。

A)accbbxxyy,bbxxyy

B)acc,bbxxyy

C)accxxyy,bbxxyy

D)accxyy,bbxxyy

43.若有以下程序 #include main()

{ int i,j=0;

char a[]=\for (i=0; a[i]; i++)

if (a[i] != ’ ’) a[j++]=a[i]; a[j]=’\\0’

printf(\}

则程序的输出结果是( )。答案:A

A)Howareyou!

B)Howareyou

C)Hay!

D)How are you!

44.若有以下程序 #include main()

{ char a[20], b[ ]=\for (i=0; i<7; i++) scanf(\gets(a); printf(\}

执行时若输入: (其中表示回车符) Fig flower is red. 则输出结果是( )。

A)wer is red.Fig flo is blue.

B)wer is red.Fig flo

C)wer is red.The sky is blue.

D)Fig flower is red.The sky is blue.

45.若有以下程序 #include

main()

{ char w[20], a[5][10]={\int p[6][2]={{0,1},{1,5},{0,0},{0,2},{1,4},{4,4}}, i; for (i=0; i<6; i++) w[i]=a[ p[i][0] ][p[i][1] ]; puts(w); }

则程序的输出结果是( )。答案:A

A)black

B)ababj

C)ckbdl

D)catis

46.若有以下程序 #include main()

{ int i, j=0;

char a[]=\for ( i=0; a[i]; i++ )

if (a[i] == ’’) b[j++]=a[i+1]; b[j]=’\\0’; printf(\}

则程序的输出结果是( )。

A)ay

B)Howareyou

C)Hay!

D)Howareyou!

47.若有以下程序 #include main()

{ char a[20], b[ ]=\for (i=0; i<10; i++) scanf(\a[i]=’\\0’ gets(b);

printf(\}

执行时若输入:

Fig flower is red. <回车> 则输出结果是( )。答案:A

A)Fig flower is red.

B)Fig flower is red.is blue.

C)Fig floweris red.

D)Fig floweris

48.以下选项中,能正确进行字符串赋值的是( )。

A)char *s = \

B)char s[5] = { ’A’, ’B’, ’C’, ’D’, ’E’ };

C)char s[4][5] = { \

D)char *s ; gets( s );

49.以下fun函数的功能是将形参s所指字符串内容颠倒过来 void fun( char *s ) { int i, j, k;

for( i=0, j=strlen(s) __________ ; i

}

在横线处应填入的内容是( )。答案:A

A)-1

B)+1

C)+0

D),k=0

50.有以下程序 #include #include void fun ( char *s ) {

char a[10];

strcpy( a,\s = a; } main() {

char *p=\fun( p );

printf(\}

程序运行后的输出结果是(此处□代表空格) A)PROGRAM

B)STRING□□□□

C)STRING□□□

D)STRING

)。

(51.有以下程序

#include main()

{ char c[2][5]={\int i, j, s=0;

for( i=0; i<2; i++ ) p[i]=c[i];

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

for( j=0; p[i][j]>0 ; j+=2 ) s=10*s+p[i][j]-’0’ printf(\}

程序运行后的输出结果是( )。答案:A

A)6385

B)9824

C)6982

D)9284

52.下面选项中的程序段,没有编译错误的是( )。

A)char* sp, s[10]; sp = \

B)char* sp, s[10]; s = \

C)char str1[10] = \

D)char mark[]; mark = \

53.以下叙述中正确的是( )。答案:A

A)下面的语句用赋初值方式来定义字符串,其中,’\\0’是必须的 char str1[] = {’s’, ’t’, ’r’, ’1’, ’\\0’};

B)有定义语句: char str1[] = \,数组str1将包含4个元素

C)字符串常量\的类型是:字符串数据类型

D)字符数组的每个元素可存放一个字符,并且最后一个元素必须是’\\0’字符

54.以下叙述中正确的是( )。

A)字符串数组,是指数组中的每个元素都是一个存放字符串的一维数组

B)char ca[3][5] = {\是不合语法的

C)char ca[ ][5] = {\是不合语法的

D)char *ca[3] = {\是不合语法的

55.以下叙述中正确的是( )。答案:A

A)C语言本身没有提供对字符串进行整体操作的运算符

B)函数调用strlen(s);会返回字符串s实际占用内存的大小(以字节为单位)

C)两个字符串可以用关系运算符进行大小比较

D)当拼接两个字符串时,结果字符串占用的内存空间是两个原串占用空间的和

56.以下叙述中正确的是( )。

A)不能用字符串常量对字符数组名进行整体赋值操作

B)字符串常量\会被隐含处理成一个无名字符型数组,它有5个元素

C)char str[7] = \在语法上是合法的,运行也是安全的

D)char *str; str = \与char str[]; str = \效果是一样的

57.以下叙述中正确的是( )。答案:A

A)对于字符串常量 \,系统已自动在最后加入了’\\0’字符,表示串结尾

B)语句 char str[10] = \和 char str[10] = {\并不等价

C)对于一维字符数组,不能使用字符串常量来赋初值

D)在语句char str[] = \中,数组str的大小等于字符串的长度

58.设有定义

char str[] = \则语句

printf(\的输出结果是( )。

A)6 5

B)6 6

C)5 5

D)5 6

59.在32位编译器上,设有定义

char *str1 = \, 则以下语句

printf(\的输出结果是( )。答案:A

A)4 5

B)5 5

C)6 6

D)5 6

60.设有定义语句:

char *aa[2]={ \则以下叙述正确的是( )。

A)aa[0]存放了字符串\的首地址

B)aa数组的两个元素只能存放含有4个字符的一维数组的首地址

C)aa数组的值分别是字符串\和\

D)aa是指针变量,它指向含有两个元素的字符型数组

61.有以下程序

#include main()

{ char c[2][5]={ \int i, j,s=0;

for( i=0; i<2; i++ ) p[i]=c[i]; for( i=0; i<2; i++ )

for( j=0; p[i][j]>0 && p[i][j]<=’9’; j+=2 ) s = 10*s + p[i][j] - ’0’ printf( \}

程序的输出结果是( )。答案:A

A)6385

B)69825

C)63825

本文来源:https://www.bwwdw.com/article/hj4t.html

Top