Печать чисел в зигзагообразном порядке в массиве 2 D

#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 ответа

Вместо

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

использование

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

и (только для хорошего форматирования) вместо

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

(ближе к концу, с пробелом после %d) использовать

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

(без этого места).

Попробуйте, это даст вам вывод, что вы хотите.

#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

Другие вопросы по тегам