鱼C论坛

 找回密码
 立即注册
查看: 4336|回复: 9

C的练习题(判断题)

[复制链接]
发表于 2012-10-15 10:54:11 | 显示全部楼层 |阅读模式
10鱼币
若有初始化int a[ ][3]={1,2,3,4,5,6,7}; 下面的那个是错误的?(1)引用a数组时,元素的两个下标值均不能超过2
(2)数组的第一维大小为3
(3)a数组中包含9个元素

(4)a数组中包含7个元素

答案是(4)  不明白!! 同时也不明白a[ ][3]? 求鱼油们解释下!!

最佳答案

查看完整内容

这里的int a[][3]的第二维中有三个元素,而显式初始化的元素是7个,所以第一维的维数应该是3,3行3列的二维数组应该有9个元素,没有显式初始化的元素,被初始化为0,实际的数组是这样的: int a[3][3]={{1,2,3},{4,5,6},{7,0,0}}; 数组初始化的时候,其中只显式的初始化了部分元素,其他没有显式初始化的元素默认被初始化为0.
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-10-15 10:54:12 | 显示全部楼层
这里的int a[][3]的第二维中有三个元素,而显式初始化的元素是7个,所以第一维的维数应该是3,3行3列的二维数组应该有9个元素,没有显式初始化的元素,被初始化为0,实际的数组是这样的:
int a[3][3]={{1,2,3},{4,5,6},{7,0,0}};
数组初始化的时候,其中只显式的初始化了部分元素,其他没有显式初始化的元素默认被初始化为0.

点评

+1~~~  发表于 2012-10-15 13:48
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-10-15 11:53:04 | 显示全部楼层
我怎么感觉1.2.3.4都是错误的
a[x][3]中x的值可以是大于2的整形 而{1,2,3,4,5,6,7}7后面的可以看做未定义的全部是0的数

补充内容 (2012-10-15 11:55):
#include <stdio.h>
void main()
{
    int a[][3]={1,2,3,4,5,6,7};
    int x=5;
    printf("%d \n",a[x][2]);
}

补充内容 (2012-10-15 11:59):
上题中:1)引用a数组时,元素的两个下标值均不能超过2  a的第一维下标值为5 错
        2)数组的第一维大小为3 错
        3)a数组中包含9个元素      错
        4)a数组中包含7个元素      错

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-10-15 16:56:39 | 显示全部楼层
对于一个二维数组,我个人认为可以当成一个行列式或者矩阵来理解,上面的一个例子中a[][3],可以看出二维数组第二维存在3个元素,也就是相当于有3列,而初始化的过程中我们看到有7个显示出来的元素,那第一维元素肯定要大于2,但是也不可能是4,因为初始化时候有规定,0元素可以省略,但是不可能整个行的去省略。也就是说不可能来个第四行,全是0 而且省略掉,要是这样的话,初始化的时候必须规定第一维有多少个元素。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-10-15 17:11:26 | 显示全部楼层
我觉得纠结这个没什么意思,本来我们写程序就不要写一些容易产生歧义的程序,不要钻这些牛角尖,但是我们必须把数组如何赋初值,以及如何省略搞清楚,各位觉得呢?
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-10-15 17:24:20 | 显示全部楼层

你好,题目就是这样,这么说,a[ ][3]={,,}; 如果元素个数任意取值,那么[ ]也是任意的吗?
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-10-15 17:35:23 | 显示全部楼层
绝影&瞬风 发表于 2012-10-15 17:24
你好,题目就是这样,这么说,a[ ][3]={,,}; 如果元素个数任意取值,那么[ ]也是任意的吗?

a[][3]={,,};这个是语法错误,c不可能允许这样两维都不确定的数组出现啊!
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-10-15 20:19:04 | 显示全部楼层
落夜 发表于 2012-10-15 17:35
a[][3]={,,};这个是语法错误,c不可能允许这样两维都不确定的数组出现啊!

假设而已,没说要定义
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-10-16 14:49:16 | 显示全部楼层
落夜 发表于 2012-10-15 17:35
a[][3]={,,};这个是语法错误,c不可能允许这样两维都不确定的数组出现啊!

这个也不是任意的 ,可以根据给出的元素个数,和第二维的维数 确定这个数组的个数不小于一个数
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-10-16 15:35:40 | 显示全部楼层
晓北 发表于 2012-10-15 11:41
这里的int a[][3]的第二维中有三个元素,而显式初始化的元素是7个,所以第一维的维数应该是3,3行3列的二维 ...

赞成:handshake
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-11-15 16:19

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表