2 qq 36790578 qq_36790578 于 2017.01.01 14:36 提问

大一水准的C语言理论求解

【题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吗,
这上面写的资料的答案,感觉不理解

7个回答

qq_36790578
qq_36790578   2017.01.01 14:41

这道也是一样错哪里了
【题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没有错误

qq_29566841
qq_29566841   2017.01.01 15:14

在C和C++中定义数组有两种情况,第一种是定义的时候就进行初始化,也就是上边的第一题那样。但是二维数组在初始化时一般是双重{}符号的,例如int a[][4] = { {1},{1} };而上边题目中的定义,其实是隐含告诉系统,你定义的是int a[1][4] = {0,0},a[0][0] = 0,a[0][1] = 0,剩下的没有初值。所以D选项是对的。至于第二题,基础的知识,理解一下记住就行了。

qq_36790578
qq_36790578   2017.01.01 15:33

这个书上写的不是剩下的自动赋初值0吗?还有这样一维大小不就是一吗

myworld575
myworld575   2017.01.01 15:36

第一题:
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};

myworld575
myworld575   2017.01.01 15:36

第一题你题抄错了呀,应该是选不正确的

qq_36790578
qq_36790578   2017.01.01 15:36

额,这个老师给的资料直接下载的,感觉应该是老点的版本,我直接复制过来的

junruitian
junruitian   2017.01.01 18:06

第二题真的是能得到0吗?
我记得如果没赋初值,应该随机一个int类型的数?
所以我试了一下,图片说明
得到的结果好像并不是0.
请诸位解惑

main_h_
main_h_ 这个是运行结果
11 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片