永发信息网

C语言的问题?

答案:7  悬赏:70  手机版
解决时间 2021-07-30 10:27
  • 提问者网友:难遇难求
  • 2021-07-29 15:47
已知 int a[3][2]={3,2,1};则表达式"a[0][0]/a[0][1]/a[0][2]"的值是____。
A) 0.166667 B) 1 C) 0 D) 错误的表达式
最佳答案
  • 五星知识达人网友:野味小生
  • 2021-07-29 16:28
答案是B。。多维数组的元素是线性存储的。所以在内存中a数组是存放在一片连续的内存空间里。元素的顺序为:a[0][0] a[0][1] a[1][0] a[1][1] a[2][0] a[2][1] 。C语言对数组下标越界不作检查,所以a[0][2]是合法的。它相当于a[0][1]的下一个元素。而a[0][1]在内存中的下一个元素其实是a[1][0]。所以a[0][2]=a[1][0]=1 3/2/1,结果是1啦。。
全部回答
  • 1楼网友:笑迎怀羞
  • 2021-07-29 20:17
支持硝烟四起! 这明显是个错误的表达式。数组是3行2列,最大列号就是1,a[0][2]是不存在的。编译器没有报错是因为C语言不对数组的边界进行检测。
  • 2楼网友:山君与见山
  • 2021-07-29 20:07

答案是 B)1,解释如下:

a[3][2]是一个存储有整型数据类型的元素的二维数组,int a[3][2]={3,2,1} 是对该二维数组进行一次初始化,其结果是a[0][0]=3,a[0][1]=2,a[0][2]=1,a[1][0]=1,其他元素以0填补。因为是整型数据,所以a[0][0]/a[0][1]结果取整,实际上是1.5,取整结果为1,再除以a[0][2]还是为1。

  • 3楼网友:一叶十三刺
  • 2021-07-29 19:31
B。你可以看看c多维数组初始化的资料。
  • 4楼网友:几近狂妄
  • 2021-07-29 18:25
选D,因为a[3][2]中没有a[0][2] 最大有到a[0][1],最小有到a[0][0]。
  • 5楼网友:撞了怀
  • 2021-07-29 18:00

选择B

  • 6楼网友:大漠
  • 2021-07-29 17:17

在内存中,多维数组是按一维数组存储的。

a[0][2]相当于a[1][0]是1.

也就是3/2/1的值了,结果是1。

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯