2以下定义数组的语句中错误的是 5

A.intnum[]={1,2,3,4,5,6};B.intnum[][3]={{1,2},3,4,5,6};C.intnum[2][4]={{1,2},{3,4},{5... A.int num[]={1,2,3,4,5,6}; B.int num[][3]={{1,2},3,4,5,6};
C.int num[2][4]={{1,2},{3,4},{5,6}}; D.int num[][4]={1,2,3,4,5,6};
展开
 我来答
hakdwww
2012-12-01 · TA获得超过470个赞
知道小有建树答主
回答量:259
采纳率:0%
帮助的人:77.6万
展开全部
这个……出这个题的人那绝对是故意刁难人,可能也有故意引导程序员不按照规范定义数组。
首先得指出这个数组的定义是在哪个编译器中编译的,因为不同的编译器对数组定义的认可是不一定相同的,就Java而言,上述四个对Int数组的定义只有A是正确的,因为Java编译器中不认可将数字写在赋值的左边,只能像 Int [][] aa = new Int[5][6]这样定义。
如果这个数组的定义是在C或C++语言中,那么有问题的一定是C,其它的定义都能编译通过,但我不得不说一句,如果是自己编写程序千万不要像BCD这种写法。我猜这道题的编译环境应该就是C语言了,因为只找到了一个答案C。下面具体说说C为什么错,BD为什么可以编译通过。
B、num[][3],知道这个数组的列一定是3,行是一个不确定的值,就右边给出的信息{{1,2},3,4,5};可知道num的第一行是{1,2},前面已经说了num[][3]的列数一定是3,但这里{1,2}只有两列,为什么也是对的呢?原因很简单,是因为编译器给{1,2}用零扩展了第三列成为{1,2,0}。你可以定义一个数组int [5] aa ={1},然后对 aa 遍历输出会发现只有aa[0]=1,a[1]—a[4]的值都是零。然而可以从num右侧的赋值{{1,2},3,4,5,6}中可以知道num不能小于三行,那我们是怎么知道一定不小于三行呢?可以看{1,2}后还有{3,4,5,6},而又早知道这个数组有3列,那么最多只能耗去{3,4,5,6}中的三个数,还剩下一个数,只能放到下一行中了。
C、不难看出,{{1,2},{3,4},{5,6}};只至少应该有三行两列,所以左侧的 num[m][n]中,M的值至少m>3,n的值至少n>2。
D、int num[m][4],4列,{1,2,3,4,5,6};中抽去4个数还余两个数,所以如果m有值的话m>2。

最后不得不说一个在C语言中非常重要且易错的点:
(一)
int aa[3] = {1};
int i;
for(i=0;i<3;i++){
printf("%d\n",aa[i]);
}
那么aa的各元素的值是多少?
答:aa[0]=5;aa[1]=0;aa[2]=0;
(二)
int aa[3]
int i;
for(i=0;i<3;i++){
printf("%d\n",aa[i]);
}
那么aa的各元素的值是多少?
答:aa[i]所指向的内存地址。
(三)
int aa[3][3] = {5};
int i,j;
for(i=0;i<3;i++){
for(j=0;j<3;j++){
printf("%d\t",aa[i][j]);
}
printf("\n");
}
那么aa的各元素的值是多少?
答:5 0
0 0

希望你能明白。
百度网友dd0013e
2012-11-30
知道答主
回答量:7
采纳率:0%
帮助的人:2.4万
展开全部
我怎么觉得后三个都有问题= =
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式