020730 发表于 2022-3-19 14:30:05

这两个题怎么做?

不理解

jhq999 发表于 2022-3-19 15:55:16

本帖最后由 jhq999 于 2022-3-19 15:59 编辑

第一题
赋值给数组,不需要强制转换
int a[]={1,2,3,4};
-                a        0x00b7fc4c {0x00b7fc4c {1, 2, 3}, 0x00b7fc58 {4, 0, 0}}        int
+                        0x00b7fc4c {1, 2, 3}        int
-                        0x00b7fc58 {4, 0, 0}        int
       

m=3;m=6;m=9;
第二题
-                a        0x00d8fb60 {0x00d8fb60 {0, 0, 0}, 0x00d8fb6c {2, 0, 0}, 0x00d8fb78 {3, 0, 0}}        int
+                        0x00d8fb60 {0, 0, 0}        int
+                        0x00d8fb6c {2, 0, 0}        int
+                        0x00d8fb78 {3, 0, 0}        int

YSW9527 发表于 2022-3-19 20:56:53

本帖最后由 YSW9527 于 2022-3-19 21:10 编辑

第一题,一个整型二维数组,m[],可以理解为一个名字为m,[几行][几列]的数组,由题意可知行数不知道,列数为3列,数组声明时可以采用数组名[行数][列数]的方式,例如:int a,一个5行3列的数组,也可,int a[]={1,2,3,4,5,6,6,76},行数不写,但必须给出列数同时赋值,由编译器自动判断行数,更具题目中的数字可知,该数组的行数为3,即m,再根据k是2并且k的值没有发生变化,所以数组一直在输出第二行的元素,由for循环知,列下标由0到2,(补充:虽然声明数组是a,但使用时下标是从0开始的,所以第一行第一列就是a,第三行第三列就是a),j所以输出的值就是369(printf输出语句中没有换行和间隔符号,所以输出的数字就连在一起啦)

2:这题与上一题的区别就是{}里面还有{},在二维数组中,除去最外层的{},里面每一个{}代表一行,根据题目除去最外层的,还有3个{},可知该数组的行数为3行,又根据定义数组时列数为3,由此可知数组大小为3行3列,最后考虑赋值,{{第一行第一个元素,第二个,第三个},{同第一个},{同第一个}},注意的一点是,从前往后赋值,当赋值的元素个数小于列数时,多出列数的值为数据类型的默认值,本题数据烈性为整型,所以可知除了每行第一列元素外(当然啦,第一行第一个元素赋值时就是0),其余列数的值均为0,再结合上一题的知识点,可知a的值为0
{:10_254:}

18574565396 发表于 2022-3-20 12:27:35

第一题:
首先m[][] 是个二维数组,切每一组是3个数 所以应该看成{{1,4,7},{2,5,8},{3,6,9}}
k=2,因为从0开始数,且这个二位数组是3行,所以看第三行。
for循环遍历,初始是0,小于3的,所以输出3,6,9.
第二题:
同样二维数组,题目给了只有三行,每行有三个数,所以应该是{{0,0,0},{1,0,0},{2,0,0}}
题目问a
数组从0开始数
所以应该是第二行,第三个数
页: [1]
查看完整版本: 这两个题怎么做?