C语言,哪位大佬可以帮解析一下这些题目的的答案怎么选出来的?谢谢各位大佬了。

设有字符串数组定义:char s1[3][4],s2[][4]={"Sun","Mon","Tue"};则以下正确的语句是( D)
A.s1[0]={"Sat"}
B.s1[0]=s2[0];
C.s2[0]="Fat"
D.strcpy(s1[0],s2[0]);

有以下数组定义:int a[3][3], b[][3] ={{10,12,3},{40,5},{6,7}};则以下赋值表达式中正确的是( B )
A.a[][3]={1,2,3,4,5,6,7}
B.a[0][0]=b[0][0]
C.a[0]=b[0]
D.a[][3]={{1,2,3},{9,6},{1,2}}

有以下数组定义:int a[3][3], b[][3] ={{10,12,3},{40,5},{6,7}};则以下赋值表达式中正确的是( B )。
A.a={{1,2,3},{9,8,6},{12,20,10}}
B.a[0][0]=b[1][0]
C.a=b
D.a[0]={1,9,10}

有以下数组定义:int a[3][3];则以下赋值表达式中正确的是( D )。
A.a[][]={{1,2,3},{9,8,6},{12,20,10}}
B.a[][3]={{1,2,3},{9,8,6},{12,20,10}}
C.a[3][3]={{1,2,3},{9,8,6},{12,20,10}}
D.a[0][0]=100

有以下申明:int a[3][3], b[][3] ={{10,12,3},{40,5},{6,7}},i=0,j=1;则以下赋值表达式中不正确的是( A )。
A.a[i]=b[j]
B.a[i][j]=b[j][i]
C.a[j+1][i]=b[j][i+j+1]
D.a[i][i+1]=b[j][j]

由上至下(1)~(5):
(1)
A、B、C都是同一个错误,试图让常指针s1[0]或s2[0]指向别处,错。
D——将常指s2[0]针指向的目标拷贝到常指针s1[0]指向的目标空间,正确。
(2)
A——试图在数组初始化以外的地方“整体”向数组赋值,错。
B——把b[0][0]元素的值赋给a[0][0]元素,正确。
C——a[0]、b[0]都是常指针,不能再赋值,连a[0]=a[0];这样都不行,别说a[0]=b[0];了。
D——错误同本题A选项。
(3)
A——a是int (*)[3]型指针,没有那种赋值语法;即使有也犯了“整体”赋值错误。
B——把b数组中的一个元素值赋给a数组的a[0][0]元素,正确。
C——a和b都是常指针,不能再赋值。
D——和本题A项错误一样。
(4)
A——声明和初始化时只有最靠近数组名a的那个[]可以空着,其余[]都不能空着。
B——在声明时可以同时这么初始化,声明后在这里就是“整体”赋值了,错。
C——错误和本题B一样。
D——给a数组的a[0][0]元素赋值100,正确。
(5)
A——a[0]、b[1]都是常指针,不能再赋值。所以错误。
B——把b的b[1][0]元素值赋给a的a[0][1]元素,正确。
C——把b的b[1][2]元素值赋给a的a[2][0]元素,正确。
D——把b的b[1][1]元素值赋给a的a[0][1]元素,正确。
温馨提示:答案为网友推荐,仅供参考
相似回答