下列数组声明语句中,正确的是(提示:数组初始化时,中间不能有空。下标界要大于元素个数。字符赋值时要用单引号。A中赋初始值时,中间有空位B中赋初始值需要用字符,每个需要用单引号引起来。D下标界小于元素个数。)
A. int a[]={1,2,,4,5};
B. char a[5]={A,B,C,D,E};
C. int a[5]={1,2};
D. char a[4]="Hello";
查看答案
数组声明语句为“int a[6];”,输入数组所有元素的语句应为(提示:数组名为指向首地址的指针,因此scanf中作参数时,不需要&。通过a+i可以逐个指向数组中的每个地址A中没有for循环,数据没有保存到数组相应的位置中。B采用了数组名加偏移量的方式,for循环控制a+i,可以逐个指向数组中的每个地址,将数据保存到数组中。C中*a取了间访,为第一个元素的内容,*a+i,不能实现对数组中各个低值的访问D中,scanf第二个参数需要返回一个地址,因此,正确应该是for(int i=0;i<6;i++) scanf("%d",&a[i]);)
A. scanf("%d%d%d%d%d%d",a[6]);
B. for(int i=0;i<6;i++) scanf("%d",a+i);
C. for(int i=0;i<6;i++) scanf("%d",*a+i);
D. for(int i=0;i<6;i++) scanf("%d",a[i]);
数组声明语句为“float a[3][4];”,引用第 3 行第 1 列的元素写作(提示:二维数组需要通过两次间接引用才能取到对应的元素。A中**(a+2)相当于*(*(a+2) +0),对应下标为a[2][0],为第 3 行第 1 列的元素。B中*(*a+2) 相当于*(*(a+0)+2),对应下标为a[0][2],为第1行第3列的元素C中a[3][1] 为第4行第2列的元素D中*(a[3]+1)相当于a[3][1],为第4行第2列的元素)
A. **(a+2)
B. *(*a+2)
C. a[3][1]
D. *(a[3]+1)
初始化二维数组的语句中,可以缺省的是(提示:二维数组中,行下标界可以省,列下标界不能省。原因是二维数组是按照行进行保存的,要正确取出某一行,需要知道该行中有几个元素(即共有几列))
A. 行下标界
B. 列下标界
C. 都可以缺省
D. 都不可以缺省
数组声明为“int y[4][3];”,表达式“*(y+2)+2-*y”的值为(提示:*(y+2)+2为y[2][2]地址,*y为y[0][0]地址,地址相减,y[2][2]元素与y[0][0]元素,中间间隔2行,每行3列,2*3=6;在第三行下标为2,前面有0,1下标,因此6+2=8)
A. 10
B. 20
C. 16
D. 8