【题6. 10】 若有说明:int a[][4]={0,0};则下面正确的叙述是(D)。
A) 数组a中每个元素均可得到初值0
B) 二维数组a的第一维大小为1
C) 因为二维数组a中第二维大小的值除以初值个数的商为1,故数组a的行数为1
D)只有元素a[0][0]和a[0][1]可得到初值0,其余元素均得不到初值0
【题6. 11】 若有说明:int a[3][4];则数组a中各元素(B)。
A) 可在程序的运行阶段得到初值0
B) 可在程序的编译阶段得到初值0
C) 不能得到确定的初值
D) 可在程序的编译或运行阶段得到初值0
这两道怎么整出来的
第一道感觉AB是对的,C写的怪怪的
第二道得到初值是在编译还是运行啊,如果真的写成啊a[3][4]={0}话我怎么选
这道题的答案真的是B吗,
这上面写的资料的答案,感觉不理解
第一题:
A,B,C三个选项是正确的,而且基本解释了问题.
此例是一种数组的初始化方法.
这种方法下,维数组a中初值的个数不能被第二维大小的值整除,则第一维的大小等于所得商数再加1.这与C中的描述一致.
C正确,它首先描述了这种初始化方法的一个规则.二此例中,初值有2个0,初值个数是2,第二维大小为4,2被4除得0,所以第一维大小是0+1=1.所以B正确.
二维数组一般以第一维为行,第二维为列,所以a的行数是1,所以C全部正确.
同时在这种初始化方法下,为予以明确初值的数组元素将会被赋值为0,所以此例中a剩余的两个元素也被初始化为0.所以A正确,D不正确.
事实上,我们一般初始化一个整数数组全为零一般只需要初始一个0,例如本例int a[][4] = {0};
这道也是一样错哪里了
【题6. 13】 下面程序( A )。(每行程序前面的数字表示行号)。
1 main()
2 {
3 int a[3]={3*0};
4 int i;
5 for(i=0;i<3;i++) scanf("%d",&a[i]);
6 for(i=1;i<3;i++) a[0]=a[0]+a[i];
7 printf("%d\n",a[0]);
8 }
A)第3行有错误 B)第7行有错误
C)第5行有错误 D没有错误
在C和C++中定义数组有两种情况,第一种是定义的时候就进行初始化,也就是上边的第一题那样。但是二维数组在初始化时一般是双重{}符号的,例如int a[][4] = { {1},{1} };而上边题目中的定义,其实是隐含告诉系统,你定义的是int a[1][4] = {0,0},a[0][0] = 0,a[0][1] = 0,剩下的没有初值。所以D选项是对的。至于第二题,基础的知识,理解一下记住就行了。
这个书上写的不是剩下的自动赋初值0吗?还有这样一维大小不就是一吗
额,这个老师给的资料直接下载的,感觉应该是老点的版本,我直接复制过来的
第一题你题抄错了呀,应该是选不正确的
第二题真的是能得到0吗?
我记得如果没赋初值,应该随机一个int类型的数?
所以我试了一下,
得到的结果好像并不是0.
请诸位解惑