C语言二维数组
if (i + j == 3){
printf("\n”);
}
1 2 34
5 6 78
9 10 11 12
13 14 15 16
17 18 19 20
我想问下第二行开始i + j 不是3 + 1吗?怎么还能打印换行呢? 别发截图,发文本代码! qiuyouzhi 发表于 2020-2-28 21:24
别发截图,发文本代码!
截图你看不懂? Be猪 发表于 2020-2-28 21:29
截图你看不懂?
我要复制下来编辑 你想干嘛?能不能把你的需求说清楚? 本帖最后由 Be猪 于 2020-2-28 21:56 编辑
qiuyouzhi 发表于 2020-2-28 21:30
我要复制下来编辑
#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("%2d ", a);
if (i + j == 3)
{
printf("\n");
}
}
}
printf("\n");
return 0;
} 本帖最后由 Be猪 于 2020-2-28 22:01 编辑
Be猪 发表于 2020-2-28 21:54
#include
int main()
qiuyouzhi 发表于 2020-2-28 21:30
我要复制下来编辑
直接发代码有时候有一些代码显示不出来 首先打印回车的条件是i+j等于3;
第一行的回车 i=0; j=3
第二行的回车 i=1; j=2;
第三行的回车 i=2; j=1
第四行的回车 i =3; j=0
原因打印完回车会接着i和j的值继续按照for循环打印下一个元素,而不是指向数组下一行的第一个元素。
第二行开始的时候i=0的,打印完数组第一行数据之后,i才等于1. 这时j会从0开始循环,从而打印数组的第二行元素,当打印完数组第二行第3个元素时,j=2, i=1; 也会打印回车啊。
一次类推。i的值是从0~3,j的值是从0~4.i,j的所有组合就是
(0,0)(0,1)(0,2)(0,3)(0,4)
(1,0)(1,1)(1,2)(1,3)(1,4)
(2,0)(2,1)(2,2)(2,3)(2,4)
(3,0)(3,1)(3,2)(3,3)(3,4)
显然黑体的四个组合是会打印回车的 major_lyu 发表于 2020-2-28 23:54
首先打印回车的条件是i+j等于3;
第一行的回车 i=0; j=3
第二行的回车 i=1; j=2;
谢谢大佬指点,我之前一直在用打印出来的结果来计算,难怪算不出来。谢谢大佬解决了我的疑惑! Be猪 发表于 2020-2-29 08:49
谢谢大佬指点,我之前一直在用打印出来的结果来计算,难怪算不出来。谢谢大佬解决了我的疑惑!
呵呵,看不懂就调试单步执行,跟踪一下,看看感觉出错的变量的值就知道了 major_lyu 发表于 2020-2-29 12:59
呵呵,看不懂就调试单步执行,跟踪一下,看看感觉出错的变量的值就知道了
恩恩,谢谢大佬指点
页:
[1]