第四部分数组
4. 1选择题
1.以下关于数组的描述正确的是(C )。
A.数组的大小是固泄的,但可以有不同的类型的数组元素
B.数组的大小是可变的,但所有数组元素的类型必须相同
C.数组的大小是固泄的,所有数组元素的类型必须相同
D.数组的大小是可变的,可以有不同的类型的数组元素
2.以下对一维整型数组a的正确说明是(d ) o
A.int a(10) ;    B・ int n=10, a[n];
C.int n;    D. #define SIZE 10
scanf (z/%d?z, &n) ;    int a [SIZE];
int a[n];
3.C语言中,引用数组元素时,其数组下标的数据类型允许是(c )。
A.整型常量
B.整型表达式
C.整型常量或整型表达式
D.任何类型的表达式
4.以下对一维数组m进行正确初始化的是(c )。
A.int m[10] = (0, 0, 0, 0) ;    B. int m[10Z = { };
C. int m[ ] = {0};    D. int m[10] = {10*2};
5.若有左义:int bb[8]“则以下表达式中不能代表数组元bb[l]的地址的是(c
A.&bb[O]+l    B. &bb[l]    C. &bb[O]卄    D. bb+1
6.假定int类型变量占用两个字节,其有定义:int x[10] = {0, 2,4};,则数组x在内 存中所占字节数是(d )0
A.3    B. 6    C. 10    D. 20
7.若有以下说明:
int a[12] = {l> 2, 3, 4, 5, 6, 7, 8, 9,10, 11, 12};
char c二'a', d, g;
则数值为4的表达式是(d )
A. aFg-c]    B・ a[4]    C.    D. a['d' -c]
8.以下程序段给数组所有的元素输入数据,请选择正确答案填入G )。 #include<stdio. h>
mainO
{
int a[10], i=0;
while(i<10) scanf    );
I
I
I
}
A. a+(i++)    B. &a[i+l.    C. a+i
9.执行下面的程序段后,变量k中的值为(a )o
int k=3t s[2];
s[O]=k;    k=s[l]*10;
A.不立值    B. 33    C. 30
10.以下程序的输出结果是(c ) mainO
{
int i, a[10];
for(i=9;i>=0;i--)    a[i]=10-i;
printf (/,%d%d%d/,, a[2], a[5], a⑻);
}
A. 258    B. 741    C. 852
11・以下程序运行后,输出结果是(d )° mainO
{
int n[5] = {0, 0, 0}, i, k=2;
for (i=0 ;i<k; i++) n [i] =n[i]+l;
printf (z,%d\nz\ n[k]);
}
A.不确楚的值 B・2    C. 1
12・下程序运行后,输岀结果是(b )。
mainO
{
int y=18, i=0, j, a[8];
do
{    a[i:=y%2; i++;
y=y/2;
} whe(y>=l);
for(j=i-l;j>=0;j--) printf(“%d", a[j]); printf ("\n");
}
A. 10000    B. 10010    C. 00110
D. &a[++i]
D. 10
D. 369
D. 0
D. 10100
13.以下程序运行后,输出结果是(e)
mainO
{
int a[10], al[ ] = {1, 3, 6, 9,10}, a2[ ]={2,4,7,&15},i=0f j=O,k;
for (k=0:k<4;k++)
if(al Ci]<a2[j])    a[k]=al[i++];
else    a[k]=a2[j++];
for (k0;k<4;k++)    printf C%d", a[k]);
A. 1234    B. 1324    C. 2413
14.以下程序运行后,输出结果是(b)° mainO
D. 4321

int i, k, a[10], p[3];
k5;
for (i=0;i<10;i++)    a[i]=i;
for (i=0;i<3;i++)    p[i]=a[i*(i+l)];
for (i=0;i<3;i++) k+p[i]*2;
printf(”%d\n", k);
}
A. 20    B. 21    C. 22    D. 23
15.以下程序运行后输出结果是(d
main()
{
int nL3], i, j, k;
for(i=0;i<3;i++)
n[i]=0;
k=2;
for (i=0;i<k;i++)
for (j=O;j<k;j++)
n[j]=n[i]+l;
printf (”%d\n: n[l]) ;    }
A. 2    B・ 1    C. 0    D. 3
16.下列程序的主要功能是输入10个整数存入数组/再输入一个整数x,在数组&中査 xo到则输出x10个整数中的序号(从1开始):不到则输岀0。程序缺少的是(b ) o
mainO
int i, a[10L x, flag=0;
for(i=0;i<10;i++)
scanf (z,%dz\ &a[i]);
scanf (,z%d/z, &x);
for(i=0;i<10;i++) 辻      {flag=i+l; break;}
printf ("%d\n: flag);
}
A. x!=a[i]    B. ! (x-a[ij)    C. x~a[il    D. !x~a[i]
17.若说明:int a[2] [31;则对a数组元素的正确引用是(c ) °
A. a(l,2)    B. a[l,3]    C. a[l>2][!l]    D. a[2][0]
18.若有定义:int b[3] [4]={0}:则下述正确的是(b ) o
A.此宦义语句不正确
B.没有元素可得初值0
C.数组b中各元素均为0
D.数组b中各元素可得初值但值不一立为0
19.若有以下数组泄义,其中不正确的是(d ) o
A.
int
a⑵⑶;
B
int
b[][3]={0, lf2, 3};
C.
int
c [100] [100X0};
D.
int
d[3] [] = {{!, 2}, {1,2, 3}, {1,2, 3,4}};

20.若有以下的左义:int t[5] [41;能正确引用t数组的表达式是(c )。
A. t[2][4] B. t[5] [0]    C. t[0][0]    D. t[0,0]
21.在定义 int m[ ][3]={1, 2, 3, 4, 5, 6};后,m[l][O]的值是(a )°
A. 4    B・ 1    C. 2    D・ 5
22.在左义int n[5] [6]后第10个元素是(c)°
A. n[2][5]    B. n[2][4]    C. n[l][3]    D. n[l][4]
23.若二维数组cm列,则计算任一元素c[i][j]在数组中的位置的公式为(d )。 (假设cEO] [0]位于数组的第一个位置)
A. i*m+j    B・ j*m+i    C・    D・ i*m+j+1
24.若有以下定义语句,则表达式“x[l][l]*x⑵⑵”的值是(a ). float x[3] [3]二{{1・ 0, 2. 0, 3. 0}, {4. 0, 5. 0, 6. 0}};
A. 0. 0    B. 4. 0    C. 5. 0    D. 6. 0
25.以下程序运行后,输出结果是(a )o
mainO
c语言二维数组表示方法
{
int a[4] [4] = {{1,3, 5}, {2, 4,6}, {3, 5,7}};
printfC%d%d%d%d\n/z, a[0] [3], a[l] [2], a[2] [1], a[3] [0]);
}
A. 0650    B. 1470    C. 5430    D.输出值不定
26.以下程序运行后,输出结果是(b ).
mainO
{
int aa[4] [4] = {{1,2, 3, 4}, {5, 6, 7,8}, {3,9, 10, 2}, {4,2, 9,6}}; int i, s=0;
for(i=0;i<4;i++) s+=aa[i][1]:
printf (“%d\n” , s);
}
A. 11    B. 19    C. 13
27.有以下程序
main()
{
int aC3] [3]={{1,2}, {3,4}, {5, 6}}, i, j, s0;
for(i=l;i<3;i++)
for (j=0;j<=i;j++)    s+=a[i][j]:
printf("%d\n", s);
}
该程序的输出结果是G )o
A. 18    B. 19    C. 20
2&若泄义如下变量和数组:
int i;
int x⑶[3] = {1, 2, 3, 4, 5, 6, 7, 8, 9};
则下面语句的输出结果是(c )o
for(i=0;i<3;i++) printfx[i] [2-i]);
A. 1 5 9    B・ 1 4 7    C・ 3 5 7
29.
D. 20
D. 21
D. 3 6 9
下述对C语言字符数组的描述中错误的是(c
A.字符数组可以存放字符串
B.字符数组中的字符串可以整体输入、输岀
C.可以在赋值语句中通过赋值运算符"「对字符数组整体赋值
D.不可以用关系运算符对字符数组中的字符串进行比较
30.下述对C语言字符数组的描述中正确的是(a )o
A.任何一维数组的需称都是该数组存储单元的开始地址,且其每个元素按照顺序连续占 存储空间
B.一维数组的元素在引用时其下标大小没有限制
C.任何一个一维数组的元素,可以根据内存的情况按照其先后顺序以连续或非连续的方 式占用存储空间
D.一维数组的第一个元素是其下标为1的元素
31.不能把字符串:Hello!赋给数组b的语句是(b )0
A.char str[10]= {'H‘, T „ ! '};
B.char str[10];str"Hello!";
C・ char str[10]:strcpy(str,,/Hello!,/);
D. char str[10]="Hello!";
32.合法的数组住义是(d )o
B. int a[5] = {0, 1, 2, 3,4, 5};
D. char a[] = {0, 1, 2, 3, 4, 5};
B・ static char a[2] = { T‘,’2'};
D・ static char a[2] = { i};
A. int a[]=,?stringz/;

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。