C 在第二条对角线下打印矩阵和数字

C 在第二条对角线下打印矩阵和数字,c,matrix,printing,C,Matrix,Printing,我的任务是打印从键盘扫描的整数矩阵,然后使用单独的函数打印第二条对角线下的数字。我的代码如下所示: #include <stdio.h> #include <stdlib.h> //array[n][n] = 2D array of n rows and n columns //n = number of rows and columns void printmatrix(int n, int array[n][n]){ for(int i = 0; i <

我的任务是打印从键盘扫描的整数矩阵,然后使用单独的函数打印第二条对角线下的数字。我的代码如下所示:

#include <stdio.h>
#include <stdlib.h>

//array[n][n] = 2D array of n rows and n columns
//n = number of rows and columns
void printmatrix(int n, int array[n][n]){
    for(int i = 0; i < n; i++){
        for(int j = 0; j < n; j++){
            printf("%d ", array[i][j]);
        }
        printf("\n");
    }
    return;
}

void undersdiagonal(int n, int array[n][n]){
    for(int i = 1; i < n; i++){
        /**/
        for(int j = 1; (j < n); j++){
            printf("%d ", array[i][j]);
        }
    }
    return;
} 

int main(){
    int n;
    scanf("%d", &n);
    int integermatrix[n][n];
    for(int i = 0; i < n; i++){
        for(int j = 0; j < n; j++){
            scanf("%d", &integermatrix[i][j]);
        }    
    }
    printf("The entered matrix is:\n");
    //calls first function to print matrix 
    printmatrix(n, integermatrix);
    printf("Under the secondary diagonal:\n");
    //calls second function to print numbers under main diagonal 
    undersdiagonal(n,integermatrix);
    printf("\n");
    return 0;
}
3
1
2
3
4 
5
6
7
8
9
The entered matrix is:
1 2 3 
4 5 6 
7 8 9 
Under the secondary diagonal:
5 6 8 9 
我的输入如下所示:

#include <stdio.h>
#include <stdlib.h>

//array[n][n] = 2D array of n rows and n columns
//n = number of rows and columns
void printmatrix(int n, int array[n][n]){
    for(int i = 0; i < n; i++){
        for(int j = 0; j < n; j++){
            printf("%d ", array[i][j]);
        }
        printf("\n");
    }
    return;
}

void undersdiagonal(int n, int array[n][n]){
    for(int i = 1; i < n; i++){
        /**/
        for(int j = 1; (j < n); j++){
            printf("%d ", array[i][j]);
        }
    }
    return;
} 

int main(){
    int n;
    scanf("%d", &n);
    int integermatrix[n][n];
    for(int i = 0; i < n; i++){
        for(int j = 0; j < n; j++){
            scanf("%d", &integermatrix[i][j]);
        }    
    }
    printf("The entered matrix is:\n");
    //calls first function to print matrix 
    printmatrix(n, integermatrix);
    printf("Under the secondary diagonal:\n");
    //calls second function to print numbers under main diagonal 
    undersdiagonal(n,integermatrix);
    printf("\n");
    return 0;
}
3
1
2
3
4 
5
6
7
8
9
The entered matrix is:
1 2 3 
4 5 6 
7 8 9 
Under the secondary diagonal:
5 6 8 9 
输出如下所示:

#include <stdio.h>
#include <stdlib.h>

//array[n][n] = 2D array of n rows and n columns
//n = number of rows and columns
void printmatrix(int n, int array[n][n]){
    for(int i = 0; i < n; i++){
        for(int j = 0; j < n; j++){
            printf("%d ", array[i][j]);
        }
        printf("\n");
    }
    return;
}

void undersdiagonal(int n, int array[n][n]){
    for(int i = 1; i < n; i++){
        /**/
        for(int j = 1; (j < n); j++){
            printf("%d ", array[i][j]);
        }
    }
    return;
} 

int main(){
    int n;
    scanf("%d", &n);
    int integermatrix[n][n];
    for(int i = 0; i < n; i++){
        for(int j = 0; j < n; j++){
            scanf("%d", &integermatrix[i][j]);
        }    
    }
    printf("The entered matrix is:\n");
    //calls first function to print matrix 
    printmatrix(n, integermatrix);
    printf("Under the secondary diagonal:\n");
    //calls second function to print numbers under main diagonal 
    undersdiagonal(n,integermatrix);
    printf("\n");
    return 0;
}
3
1
2
3
4 
5
6
7
8
9
The entered matrix is:
1 2 3 
4 5 6 
7 8 9 
Under the secondary diagonal:
5 6 8 9 
但我希望输出是:

The entered matrix is:
1 2 3 
4 5 6 
7 8 9 
Under the secondary diagonal:
6 8 9  
我可以在函数中的“for”循环中的“for”循环中更改什么

void undersdiagonal(int n, int array[n][n]).
void undersdiagonal(int n, int array[n][n])

钥匙的内环为
对角下方的

按照目前编写的,
for(int j=1;(j
每次都从第二列(column
1
)开始。它需要从每行的不同列开始

  • 对于3×3矩阵,第二行(行
    1
    )将从最后一列(列
    2
    )开始。对于4×4矩阵,第二行(行
    1
    )将从最后一列(列
    3
    )开始…因此,起始列(
    j
    )与矩阵大小之间存在直接关系:
    n
  • 每次行号向上一次,起始列向下一次。因此,起始列(
    j
    )和行之间存在反向关系:
    -i

把这两部分放在一起,你就得到了
intj=n-i;

第二对角线不是
357
吗?第二对角线下是
689
?是的,但是我的代码也打印了5