C语言小问题
#include<stdio.h>int main()
{
int a={
{1,2,3,4,5},
{6,7,8,9,10},
{11,12,13,14,15,},
{16,17,18,19,20}
};
int i,j;
for(i=0;i<4;i++)
{
for(j=0;j<5;j++)
{
printf("%d ",a);
if(i + j == 3)
{
printf("\n");
}
}
}
printf("\n");
return 0;
}
哪位大神能讲一下IF条件的意思 当i加j的值等于3的时候就换行,相当于每输出4个数就换行。 湫湫猪 发表于 2018-9-25 22:05
当i加j的值等于3的时候就换行,相当于每输出4个数就换行。
我知道换行,但是为什么呢?为什么是i+j == 3 z8733537 发表于 2018-9-25 22:16
我知道换行,但是为什么呢?为什么是i+j == 3
改变形状,原本,变成 4行5列的二维数组,每行打印四个,然后再换行
i + j = 3 表示刚好这一行打印了四个 z8733537 发表于 2018-9-25 22:16
我知道换行,但是为什么呢?为什么是i+j == 3
因为i和j都是0开始的,如果是i=1,j=1开始的话就会是i+j==5 数组在内存中的二进码存储形式就是按1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20链式排列存储,只不过是二进制形式,其对应的编号和矩阵编号一样,
a00 a01 a02 a03 a04 a10 a11 a12 a13 a14 a20 a21 a22 a23 a24 a30 a31 a32 a33 a34
之后通过设置i + j = 3的if条件设置,遇到行数加上列数等于3时就换行,这样就实现了变换为5*4列
a00 a01 a02 a03
a04 a10 a11 a12
a13 a14 a20 a21
a22 a23 a24 a30
a31 a32 a33 a34
1、如果楼主是想问为什么用 i+j==3 来作为换行控制的话,你想想 i+j==3 的情况会在哪些元素上发生:(i,j)可以取:(3,0)(2,1)(1,2)(0,3),对应数组元素 a、a、a、a,也就是说遇到这些数组元素就换行咯。
2、如果楼主问为什么是3,而不是4,那楼上已经说得很清楚了哈,因为数组是从0开始计数的。 本帖最后由 zqianglh 于 2018-9-27 04:39 编辑
1 1 1 1 (1)启始i,j=0 所以i+j==3,是输出4个数
1 2 2 2 (2)当i+j==3,输出换行/n后,循环一次是5个数,第5个数在下一行第一个位置输出
2 2 3 3 (3)类推原数组2,3,4行
3 3 3 4 (4)2个循环加一个if条件,完成了a-->a的显示
4 4 4 4 你应该知道 外层循环控制‘行’,内层控制列‘列’C语言代码是从上往下执行 现执行的 外层循环 也就是
i = 0 时;就进了 内层循环 j一开始为0 ; 它打印 a的值 就是打印 a的值,这时候
if(i+j==3)是0+0!=3 不成立就没走 if条件 , 内层循环 没出 接着 j++ . i =0 ; j=1;
打印 a的值 再判断 0+1?=3 不成立又 j++,知道 j=3时 这是 打印的就是 a的值
i+j==3 是成立的 所以执行 if条件语句打印换行符就形成了 每打印四个 就换一行
后面 就是a a a a换一行 以此类推每遇到 i+j==3时就换行
(可能写的有点啰嗦不晓得up主明白没)
页:
[1]