数组
一、选择题
1、假定int 类型变量占用两个字节,其有定义:int x[10]={0,2,4};,则数组X在内存中所占字节数是(B)。
A 3
B 6
C 10
D 20
2、执行下面的程序段后,变量k 中的值为(A)。
int k=3, s[2];
s[0]=k; k=s[1]*10;
A 不定值
B 33
C 30
D 10
3、设有数组定义: char array [ ]="China"; 则数组array 所占的空间为(C)。
A 4 个字节
B 5 个字节
C 6 个字节有0/的结束标志
D 7 个字节
4、下列描述中不正确的是 C
A 字符型数组中可以存放字符串
B 可以对字符型数组进行整体输入、输出
C 可以对整型数组进行整体输入、输出
D 不能在赋值语句中通过赋值运算符"="对字符型数组进行整体赋值
5、给出以下定义
char x[ ]="abcdefg";
char y[ ]={'a','b','c','d','e','f','g'};
则正确的叙述为 C
A 数组X 和数组Y 等价
B 数组x 和数组Y 的长度相同
C 数组X 的长度大于数组Y 的长度
D 数组X 的长度小于数组Y 的长度
6、下述对C 语言字符数组的描术中错误的是 C
A 字符数组可以存放字符串
B 字符数组中的字符串可以整体输入、输出
C 可以在赋值语句中通过赋值运算符"="对字符数组整体赋值
D 不可以用关系运算符对字符数组中的字符串进行比较
7、定义如下变量和数组
int i;
int x[3][3]={1,2,3,4,5,6,7,8,9};
则下面语句的输出结果是 C
for(i=0;i<3;i++) printf("%d",x[i][2-i]);
A 1 5 9
B 1 4 7
C 3 5 7
D 3 6 9
8、以下一维数组a 的正确定义是(D)
A int a(10);
B float n=10,a[n];
C int n;scanf("%d",&n);float a[n];
D #define size 10; long a[size];
9、合法的数组定义是 D
A int a[]="string";
B int a[5]={0,1,2,3,4,5};
C vhst s="string";
D char a[]={0,1,2,3,4,5};
10、以下关于数组的描述正确的是C
A 数组的大小是固定的,但可以有不同的类型的数组元素;
B 数组的大小是可变的,但所有数组元素的类型必须相同;
C 数组的大小是固定的,但所有数组元素的类型必须相同;
D 数组的大小是可变的,但可以有不同的类型的数组元素;
11、在定义int a[10];之后,对a 的引用正确的是 A
A a[9]
C a(6)
D a[10]
12、以下对一维数组a 进行不正确初始化的是 A
A int a[10]=(0,0,0,0);
B int a[10]={};
C int a[]={0};
D int a[10]={10*2};
13、以下对二维数组a 进行正确初始化的是 B
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}};
14、以下对字符数组进行不正确初始化的是 A
A static char word[]='cool\0';
B static char word[]={‘c’,’o’,’o’,’l’};
C static char word[]={“cool\0”};
D static char word[]=”cool\0”;
15、在定义int a[5][4];之后,对数组元素的引用正确的是 C
A a[2][4]
B a[5][0]
C a[0][0]
16、下列选项中,能正确定义数组的语句是 D
A int num[0..2008];
B int num[];
C int N=2008;
int num[N];
D #define N 2008
int num[N];
17、有以下程序
#include
main()
{int b [3][3]={O,1,2,0,1,2,O,1,2},i,j,t=1;
for(i=0;i<3;i++)
for(j=i;j<=1;j++) t+=b[i][b[j][i]];
printf("%d ",t);
}
程序运行后的输出结果是 C
A 1
B 3
C 2
D 9
18、在C 语言中,能实现字符串连接的函数是( A )
A strcat()
B strcmp()
C strcpy()
D strlen()
19、在C 语言中,定义数组int a[7]={3,4,5,6,7,8,9},则a[5]的值为( D )。
A 9
B 6
C 7
D 8
20、在C 语言中,定义int a[12]={1,2,3,4,5,6,7,8,9,10,11,12},i=5,则下列选项中不能正确引用数组元素的是(A )。
A a[2*i-12]
B a[2*i-2]
C a[12-i]
D a[2*i]
21、在C 语言中,有以下定义:char b[10]={'h','n','s','p','k','s'};,则语句printf("%c\n",b[1]); 的结果为(B )。
A h
B n
C s
D p
22、在C 语言中,定义char a[]={'a','b','l','l','o'},已知字符'b'的ASCII 码
为98,
则printf("%d\n",a[0]); 的值为(A )。
A 97
B a
C 98
D b
23、在C 语言中,定义数组int a[12]={1,2,3,4,5,6,7,8,9,10,11,12},则a[3]的
值为(B)
A 3
B 4
C 5
D 6
24. (分值:2.1 分)在C 语言中,有以下程序main(){int
p[8]={11,12,13,14,15,16,17,18},i=0,j=0;while(i<5) {if(p[i]%2) j+=p[i];
i++;}printf("%d\n",j);}程序运行后的输出结果是( A)
A 39
B 45
C 56
D 60
25、在C 语言中,若有定义:int y=3,x[7]={1,2,3,4,5,6,7},则表达式y+=x[2]的值为( A )。
A 6
B 5
C 8
D 9
26、在C 语言中,若有定义:int y=5,x[7]={1,2,3,4,5,6,7},则表达式y+=x[6]的值为(D )。
A 9
B 10
C 11
D 12
27、在执行int a[][3]={1,2,3,4,5,6};语句后,a[1][0]的值是 C
A 1
B 2
C 4
D 5
28、在执行char str[10]=”china\0”;strlen(str)的结果是 B
A 5
B 6
C 7
D 9
29、在C 语言中,引用数组元素时,其数组下标的数据类型允许是 B
A 整型常量
B 整型表达式或整型常量
C 实型常量
D 任何类型的表达式
30、若二维数组a 有m 列,则在a[i][j]前的元素个数是()
A j*m+i
B i*m+j
C i*m+j-1
D i*m+j+1
31、以下程序给数组所有的元素输入数据,空处应填入()main()
{ int a[10],i=0;
while(i<10) scanf(“%d”,____C________);
}
A &a[i]
B a[i++]
C &a[i++]
D &a[++i]
32、有字符数组a[80],b[80],则正确的输出语句是 D
A puts(a,b);
B printf(“%s,%s”,a[],b[]);
C putchar(a,b);
D puts(a);puts(b);
33、以下能正确定义字符串的语句是 D
A char str[]={'\064'};
B char str="\x43";
C char str=";
D char str[]="\0";
34、以下数组定义中正确的是 D
A int x[][3]={0};
B int x[2][3]={{1,2},{3,4},{5,6}};
C nt x[][3]={{1,2,3},{4,5,6}};
D int x[2][3]={1,2,3,4,5,6};
35、要说明一个有10 个int 元素的数组,应当选择语句 A
A int a[10]
B int a[2,5]
C int a[ ]
D int *a[10]
36、已知:int a[10];则对a 数组元素引用正确的是 D
A a[10]
B a[3.5]
C a(5)
D a[10-10]
37、对二维数组的正确说明是 C
A int a[][]={1,2,3,4,5,6};
B int a[2][]={1,2,3,4,5,6};
C int a[][3]={1,2,3,4,5,6};
D int a[2,3]={1,2,3,4,5,6};
38、已有定义:char a[]="xyz",b[]={'x','y','z'};,以下叙述中正确的是
( C)。
A 数组a 和b 的长度相同
B a 数组长度小于b 数组长度
C a 数组长度大于b 数组长度
D 上述说法都不对
39、以下能正确定义一维数组的选项是 B
A int a[5]={0,1,2,3,4,5};
B char a[]={0,1,2,3,4,5};
C char a={''A'',''B'',''C''};
D int a[5]="0123";
40、若有以下说明: int a[12]={1,2,3,4,5,6,7,8,9,10,11,12}; char c='a',d,g; 则数值为4的表达式是 D
A a[g-c]
B a[4]
C a['d'-'c']
D a['d'-c]
41、合法的数组定义是 B
A int a[]="string";
B int a[5]={0,1,2,3,4,5};
C char s="string";
D char a[]={0,1,2,3,4,5};
42、以下能对二维数组c进行正确的初始化的语句是B
A int c[3][]={{3},{3},{4}};
B int c[][3]={{3},{3},{4}};
C int c[3][2]={{3},{3},{4},{5}};
D int c[][3]={{3},{},{3}};
43、阅读下列程序段,则程序段实现的功能是 C
#include "stdio.h"
main()
{
int k[10];
int j;
for(j=0;j<10;j++)
scanf("%d",&k[j]);
for(j=9;j>=0;j--)
printf("%d,",k[j]);
}
A 输入10个数据的顺序输入并输出
B 输入10个数据的逆序存放
C 输入10个数据的逆序输出
D 以上叙述均错误
44、以下对一维数组a的定义中正确的是( C)
A. char a(10);
B. int a[0..100];
C. int a[5];
D. int k=10;int a[k];
45、阅读如下程序段,则程序在先后输入love和china后,输出结果是()(来源二级C)
#include
#include
main()
{ char a[30],b[30];
int k;
gets(a);
gets(b);
k=strcmp(a,b);
if(k>0)puts(a);
else if(k<0)puts(b);}
A)love
B)chinaA
C)lovechina
D)没有输出结果
46、以下程序执行后的输出结果是(A)。
A. 2
B. 3
C.
4 D. 5
#include "string.h"
main( )
{char *p[10]={ "abc","aabdfg","dcdbe","abbd","cd"};
printf("%d\n",strlen(p[4])); 不包括\0
}
47、若有定义:
char a[10],*b=a;,则不能给数组a输入字符串”This is a book”的语句是( B )。
A. gets(a)
B. scanf("%s",a)
C. gets(&a
[0]); D. gets(b)
48、以下对一维数组c进行正确的定义初始化的语句是 D
A)int c[10]=0;
B)int c[10]={0}*10;
C)int c[1]={0,0,0,0,0,0,0};
D)int c[10]={0};
49、不能把字符串:Hello!赋给数组b的语句 B
A char b[10]={'H','e','l','l','o','!'};
B char b[10];b="Hello!";
C char b[10];strcpy(b,"Hello!");
D char b[10]="Hello!";
50、若有以下语句,则正确的描述是(B)(注:来源二级C)char a[]="toyou";
char b[]={′t′,′o′,′y′,′o′,′u′};
A a数组和b数组的长度相同
B a数组长度小于b数组长度
C a数组长度大于b数组长度
D a数组等价于b数组
51、已知:char a[15],b[15]={"I love china"};则在程序中能将字符串I love china赋给数组a的正确语句是(D)
A a="I love china";
B strcpy(b,a);
C a=b;
D strcpy(a,b);
52、下列说法正确的是( B ) .
A. 数组如果没有初始化,也没有被赋值,则每个元素的默认值为0
B. 在给数组初始化时,可以只给其中几个元素赋初值
C. 数值型数组不能使用赋值语句整体赋值,但字符型数组可以使用赋值语句整体赋一个字符串
D. 用一个字符型数组来存放字符串时,可以存放与数组长度等数目的有效字符
53、设有如下字符数组定义,则合法的函数调用是( A )
char a[]={ “I am a student” },b[]={“tec her”};
A strcmp(a,b);
B strcpy(a,b[0]);
C strcpy(a[7],b);
D strcat(a[7],b);
54、判断字符串s1 是否大于字符串s2,应当使用(D )。
(A) if( s1>s2 )
(B) if( strcmp(s1,s2))
(C) if(strcmp(s2,s1)>0)
(D) if(strcmp(s1,s2)>0)
55、有语句char str1[10],str2[10]={"china"};则能将字符串china 赋给数组str1的正确语句是____D____。(注:来源二级C)
A str1={"china"};
B strcpy(str1,str2);
C str1=str2;
D strcpy(str2,str1);
56、合法的数组定义 C
A int a[]={“string”};
B int a[5]={0,1,2,3,4,5};
C char a[]= “string”;
D char a[5]={0,1,2,3,4,5};
57. 若二维数组a 有m 列,则计算任一元素a[i][j]在数组中位置的公式为()(假设a[0][0]位于数组的第一个位置上D。
(A) i*m+j
(B) j*m+i
(C) i*m+j-1
(D) i*m+j+1
58. 有两个字符数组a、b,则以下正确的输入语句是( B )。
(A) gets(a,b);
(B) scanf(“%s%s”,a,b);
(C) scanf(“%s%s”,&a,&b);
(D) gets(“a”),gets(“b”);
59. 以下对二维数组a 进行正确初始化的语句是( B)。
(A) inta[2][ ]={{1,0,1},{5,2,3}};
(B) inta[ ][3]={{1,2,3},{4,5,6}};
(C) inta[2][4]={{1,2,3},{4,5},{6}};
(D) inta[ ][3]={{1,0,1},{ },{1,1}};
60. 若有说明:intx[3][4]; 则对a 数组元素的正确引用是(C )。
(A) x[2][4]
(B) x[1,3]
(C) x[4-2][0]
(D) x[0][4]
二、填空题
1、以下程序运行后的输出结果是 24 。
main()
{ int p[7]={11,13,14,15,16,17,18};
int i=0,j=0;
while(i<7 && p[i]%2==1) j+=p[i++];
printf("%d\n",j);
2、以下程序从终端读入数据到数组中,统计其中正数的个数,并计算它们之和。
请填空。
main()
{ int i,a[20],sun,count;
sun=count=0;
for(i=0;i<20;i++) scanf("%d",&a[i] );
fro(i=0;i<20;i++)
{ if(a[i]>0)
{ count++;
sum+= _____a[i]____;
}
}
printf("sum=%d,count=%d\n",sum,count);
}
3、以下程序运行后的输出结果是 13715
main()
{ int i,n[]={0,0,0,0,0};
for(i=1;i<=4;i++)
{ n[i]=n[i-1]*2+1;
printf("%d ",n[i]);
}
4、以下程序的输出结果是 abc 。
main()
{ char s[]="abcdef";
s[3]= ''\0'';
printf("%s\n",s);
}
5、若有定义语句:char s[100],d[100]; int j=0, i=0;,且s 中已赋字符串,请填 s[i++]
空以实现字符串拷贝。(注:不得使用逗号表达式)
while(s[i]){ d[j]=;j++;}
d[j]=0;
6、下列程序段的输出结果是 Hello
main()
{ c har b[]=”Hello,you”;
b[5]=0;
printf(“%s \n”, b );
}
7、下面程序的输出是 12
main()
{ int arr[10],i,k=0;