在2 D阵列中以Z字形顺序打印数字

时间:2017-03-28 12:56:58

标签: c multidimensional-array printing sequence zigzag

#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我不会在标志状态下进入循环我想知道原因。提前谢谢

2 个答案:

答案 0 :(得分:1)

而不是

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

使用

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

和(仅用于良好的格式化)而不是

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

(接近结尾,使用%d之后的空格)

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

(没有那个空格)。

答案 1 :(得分:0)

试试这个,它会为你提供你想要的输出。

#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