鱼C论坛

 找回密码
 立即注册
查看: 1331|回复: 11

[已解决]C语言二维数组

[复制链接]
发表于 2020-2-28 21:23:26 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
if (i + j == 3)
{
        printf("\n”);
}
   1   2   3  4
   5   6   7  8
   9 10 11 12
13 14 15 16
17 18 19 20

我想问下第二行开始i + j 不是3 + 1吗?怎么还能打印换行呢?
最佳答案
2020-2-28 23:54:14
首先打印回车的条件是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)
显然黑体的四个组合是会打印回车的
1582895837(1).jpg
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-2-28 21:24:51 | 显示全部楼层
别发截图,发文本代码!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-28 21:29:43 | 显示全部楼层
qiuyouzhi 发表于 2020-2-28 21:24
别发截图,发文本代码!

截图你看不懂?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-28 21:30:16 | 显示全部楼层
Be猪 发表于 2020-2-28 21:29
截图你看不懂?

我要复制下来编辑
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-28 21:32:57 | 显示全部楼层
你想干嘛?能不能把你的需求说清楚?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 0 反对 1

使用道具 举报

 楼主| 发表于 2020-2-28 21:54:45 | 显示全部楼层
本帖最后由 Be猪 于 2020-2-28 21:56 编辑
qiuyouzhi 发表于 2020-2-28 21:30
我要复制下来编辑


#include <stdio.h>

int main()
{
        int a[4][5] = {
                {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[i][i][j]);
                        if (i + j == 3)
                        {
                                printf("\n");
                        }
                }
        }
        printf("\n");

        return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-28 22:00:15 | 显示全部楼层
本帖最后由 Be猪 于 2020-2-28 22:01 编辑


1582898457(1).jpg
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-28 22:06:56 | 显示全部楼层
qiuyouzhi 发表于 2020-2-28 21:30
我要复制下来编辑

直接发代码有时候有一些代码显示不出来
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-28 23:54:14 | 显示全部楼层    本楼为最佳答案   
首先打印回车的条件是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)
显然黑体的四个组合是会打印回车的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-29 08:49:38 | 显示全部楼层
major_lyu 发表于 2020-2-28 23:54
首先打印回车的条件是i+j等于3;
第一行的回车 i=0; j=3
第二行的回车 i=1;    j=2;

谢谢大佬指点,我之前一直在用打印出来的结果来计算,难怪算不出来。谢谢大佬解决了我的疑惑!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-29 12:59:05 | 显示全部楼层
Be猪 发表于 2020-2-29 08:49
谢谢大佬指点,我之前一直在用打印出来的结果来计算,难怪算不出来。谢谢大佬解决了我的疑惑!

呵呵,看不懂就调试单步执行,跟踪一下,看看感觉出错的变量的值就知道了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-29 14:41:46 | 显示全部楼层
major_lyu 发表于 2020-2-29 12:59
呵呵,看不懂就调试单步执行,跟踪一下,看看感觉出错的变量的值就知道了

恩恩,谢谢大佬指点
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-16 00:08

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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