第四部分数组4. 1 选择题1.以下关于数组的描述正确的是(c ) 。
A.数组的大小是固定的,但可以有不同的类型的数组元素B.数组的大小是可变的,但所有数组元素的类型必须相同C.数组的大小是固定的,所有数组元素的类型必须相同D.数组的大小是可变的,可以有不同的类型的数组元素2.以下对一维整型数组a的正确说明是(d )。
a(10); B. int n=10,a[n];n; D. #define SIZE 10scanf("%d",&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[10]={ };C. int m[ ]={0};D. int m[10]={10*2};5.若有定义:int bb[ 8] ;。
则以下表达式中不能代表数组元bb[1] 的地址的是(c ) 。
A.&bb[0]+1B. &bb[1]C. &bb[0]++D. bb+16.假定int 类型变量占用两个字节,其有定义:int x[10]={0,2,4}; ,则数组x 在内存中所占字节数是(d ) 。
A. 3B. 6C. 10D. 207.若有以下说明: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]8.以下程序段给数组所有的元素输入数据,请选择正确答案填入(a )#include<>main(){int a[10],i=0;while(i<10) scanf("%d", _______ );A. a+(i++)B. &a[i+1]C. a+iD. &a[++i]9.执行下面的程序段后, 变量k 中的值为(a ) 。
int k=3, s[2];s[0]=k; k=s[1]*10;A. 不定值B. 33C. 30D. 1010.以下程序的输出结果是(c ) main(){int i, a[10]; for(i=9;i>=0;i--) a[i]=10-i; printf("%d%d%d",a[2],a[5],a[8]);}A. 258B. 741C. 852D. 36911.以下程序运行后, 输出结果是(d ) 。
main(){int n[5]={0,0,0},i,k=2; for(i=0;i<k;i++) n[i]=n[i]+1; printf("%d\n",n[k]);}A. 不确定的值B. 2C. 1D. 012.以下程序运行后, 输出结果是(b ) 。
main(){int y=18,i=0,j,a[8];do{ a[i]=y%2; i++;y=y/2;} while(y>=1);for(j=i-1;j>=0;j--) printf("%d",a[j]); printf("\n");}A. 10000B. 10010C. 00110D. 1010013.以下程序运行后,输出结果是(a ) 。
main(){int a[10], a1[ ]={1,3,6,9,10}, a2[ ]={2,4,7,8,15},i=0,j=0,k; for(k=0;k<4;k++) if(a1[i]<a2[j]) a[k]=a1[i++];else a[k]=a2[j++];for(k=0;k<4;k++) printf("%d",a[k]);}A. 1234B. 1324C. 2413D. 432114.以下程序运行后,输出结果是(b ) 。
main(){int i,k,a[10],p[3];k=5;for (i=0;i<10;i++) a[i]=i;for (i=0;i<3;i++) p[i]=a[i*(i+1)];for (i=0;i<3;i++) k+=p[i]*2;printf("%d\n",k);}A. 20B. 21C. 22D. 2315.以下程序运行后输出结果是(d ) 。
main( ){int n[3],i,j,k;for(i=0;i<3;i++)n[i]=0;k=2;for (i=0;i<k;i++)for (j=0;j<k;j++)n[j]=n[i]+1;printf("%d\n",n[1]); }A. 2B. 1C. 0D. 316.下列程序的主要功能是输入10个整数存入数组a,再输入一个整数x,在数组找到则输出x 在10个整数中的序号(从 1 开始);找不到则输出0。
程序缺少的是main(){int i,a[10],x,flag=0;for(i=0;i<10;i++)scanf("%d",&a[i]);scanf("%d",&x);for(i=0;i<10;i++) if ______ {flag=i+1; break;}printf("%d\n", flag);}A. x!=a[i]B. !(x-a[i])C. x-a[i]D. !x-a[i]17.若说明:int a[2][3]; 则对 a 数组元素的正确引用是(c )A.a(1,2)B. a[1,3]C. a[1>2][!1]D. a[2][0]18.若有定义:int b[3][4]={0} ;则下述正确的是(b ) 。
A. 此定义语句不正确B.没有元素可得初值0C.数组 b 中各元素均为0D.数组 b 中各元素可得初值但值不一定为019.若有以下数组定义,其中不正确的是(d ) 。
A. int a[2][3];B int b[][3]={0,1,2,3};C. int c[100][100]={0};D. int d[3][]={{1,2},{1,2,3},{1,2,3,4}};20.若有以下的定义:int t[5][4]; 能正确引用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[1][0] 的值是(a ) 。
A. 4B. 1C. 2D. 522.在定义int n[5][6] 后第10 个元素是(c ) 。
A. n[2][5]B. n[2][4]C. n[1][3]D. n[1][4]23.若二维数组c有m列,则计算任一元素c[i][j] 在数组中的位置的公式为(d ) (假设c[0][0] 位于数组的第一个位置) a 中查找x。
(b ) 。
A. i*m+jB. j*m+iC. i*m+j-1D. i*m+j+124.若有以下定义语句,则表达式“ x[1][1]*x[2][2] ”的值是(a ) 。
float x[3][3]={{,,},{,,}};A. 0.0B. 4.0C.D.25.以下程序运行后,输出结果是(a ) 。
main(){int a[4][4]={{1,3,5},{2,4,6},{3,5,7}}; printf("%d%d%d%d\n",a[0][3],a[1][2],a[2][1],a[3][0]);}A. 0650B. 1470C. 5430D. 输出值不定26.以下程序运行后,输出结果是(b ) 。
main(){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. 11B. 19C. 13D. 2027.有以下程序main( ){int a[3][3]={{1,2},{3,4},{5,6}},i,j,s=0; for(i=1;i<3;i++) for(j=0;j<=i;j++) s+=a[i][j] ;printf("%d\n",s);} 该程序的输出结果是(a ) 。
A. 18B. 19C. 20D. 2128.若定义如下变量和数组: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 9B. 1 4 7C. 3 5 7D. 3 6 929.下述对C语言字符数组的描述中错误的是(c )。
A. 字符数组可以存放字符串B. 字符数组中的字符串可以整体输入、输出C. 可以在赋值语句中通过赋值运算符 "=" 对字符数组整体赋值D. 不可以用关系运算符对字符数组中的字符串进行比较 30. 下述对C 语言字符数组的描述中正确的是 (a )。
A. 任何一维数组的名称都是该数组存储单元的开始地址, 且其每个元素按照顺序连续占存储 空间 B. 一维数组的元素在引用时其下标大小没有限制C. 任何一个一维数组的元素, 可以根据内存的情况按照其先后顺序以连续或非连续的方式占 用存储空间D. 一维数组的第一个元素是其下标为 1 的元素31.不能把字符串:Hello!赋给数组b 的语句是(b )。
A. char str[10]= {'H', 'e', 'l', 'l', 'o', '! '};B. char str[10];str="Hello!";C. char str[10];strcpy(str,"Hello!");D. char str[10]="Hello!"; 32. 合法的数组定义是 (d ) A. int a[]="string";D. char a[]={0,1,2,3,4,5}; 33. 下列语句中,不正确的是 (c ) 。