在二维数组中以之字形顺序打印数字

Posted

技术标签:

【中文标题】在二维数组中以之字形顺序打印数字【英文标题】:Printing numbers in zigzag order in 2 D array 【发布时间】:2017-03-28 12:56:57 【问题描述】:
#include <stdio.h>

int main()
     int i,j;

    int flag = 0;
    int x [3][3] = 1,2,3,4,5,6,7,8,9;
    for (i = 0;i<3;i++)
        if (flag ==1)

            for (j=2;j<0;j--)
                printf(" %d",x[i][j]);

            
            flag =0;
        
        else  
            for (j=0;j<3;j++)
            
                printf(" %d ",x[i][j]);
            
            flag =1;
        
    
    return 0;

我正在尝试以锯齿形形式打印数组中的数字,预期的输出应该是 123654789,但由于某种原因我得到的只是 123789,我没有在标志条件下进入循环我想知道原因..谢谢提前

【问题讨论】:

for (j=2;j&lt;0;j--)... 想一想。 j&lt;0 --> !(j&lt;0) 你也可以随机化数字。研究那个。你总是会得到随机的 zip zag 结果 谢谢你 j 应该大于或等于谢谢你的人:) 【参考方案1】:

代替

        for (j=2;j<0;j--)

使用

        for (j=2;j>-1;j--)

and(仅用于漂亮的格式)而不是

            printf(" %d ",x[i][j]);

(接近尾声,%d 后面有一个空格)使用

            printf(" %d",x[i][j]);

(没有那个空格)。

【讨论】:

如果对您有用(2 声望),请考虑接受我的回答(点击复选标记)。【参考方案2】:

试试这个,它会给你想要的输出。

#include <stdio.h>

int main()
    int i,j;

    int flag = 0;
    int x [3][3] = 1,2,3,4,5,6,7,8,9;
    for (i = 0;i<3;i++)
        if (flag ==1)
            for (j=2;!(j<0);j--)
               printf(" %d",x[i][j]);
            
        flag =0;
         else  
            for (j=0;j<3;j++) 
                printf(" %d",x[i][j]);
            
            flag =1;
            
        
    return 0;

输出:

./a.out 1 2 3 6 5 4 7 8 9

【讨论】:

以上是关于在二维数组中以之字形顺序打印数字的主要内容,如果未能解决你的问题,请参考以下文章

C 语言数组 ( 验证二维数组内存是线性的 | 打印二维数组 | 以一维数组方式打印二维数组 | 打印二维数组值和地址 )

剑指Offer题目索引

剑指offer-顺时针打印矩阵-二维数组

以螺旋顺序打印二维数组

二维数组的“之”字形输出

二维数组的查找