C - 矩阵主线和反对角线(替换)

标签 c matrix replace diagonal

我有一项任务,需要专业人士的帮助。

我的任务是:用户输入矩阵[8][8]的行数和列数,并禁止使用 IF。稍后用户输入该矩阵的所有元素,使用循环并输出该矩阵。

这是代码:

#include <stdio.h>

int main () 
{
    int matrix[10][10];
    int nrows, ncols, i, j;

    printf("Enter number of rows: "); //user enters number of rows
    scanf("%d", &nrows);
    if(nrows < 4){
        printf("\n Out of range, please try again");
        exit(5);
    }
    printf("Enter number of columns: "); //user enters number of columns
    scanf("%d", &ncols);
    if(ncols < 4){
        printf("\n Out of range, please try again");
        exit(5);
    }
    printf("Enter matrix elements: "); //user enters all the elements for Matrix

    for(i = 0; i < nrows; i++){
        for(j = 0; j < ncols; j++){
            scanf("%d",&matrix[i][j]);
    }

    printf("\n");
}
    printf("This is your matrix: \n");
    for(i = 0; i < nrows; i++){
        for(j = 0; j < ncols; j++){
            printf("%d \t",matrix[i][j]);}

    printf("\n");}



    return 0;   
}

现在我需要添加一件事,我想获取该矩阵的对角线和反对角线,并将其中的所有元素替换为大写 X。 因为我不知道它会是什么样的矩阵,比如它可以是矩阵[4][6]或矩阵[7][4],所以我需要做一些可以与任何类型的矩阵一起使用的事情用户可以进入该程序。

此任务的示例(在此程序中,我不能输入小于 [4][4] 的内容,但对于本示例,我将执行此操作):

User enters rows - 3
User enters columns - 3
User enters elements : 1 2 3 4 5 6 7 8 9
Output :

    1 2 3
    4 5 6
    7 8 9

这里我需要做这样的事情:

X 2 X
4 X 6
X 8 X

如果用户输入的不是方阵,例如:

User enters rows: 3
User enters rows: 4
User enters elements: 1 2 3 4 5 6 7 8 9

Out matrix: 

1 2 3 4
5 6 7 8
9 0 1 2

After replacing with X:

X 2 3 X
5 X X 8
9 X X 2

用大写 X 替换对角线和反对角线。

请问有什么帮助吗?

最佳答案

你可以这样做:

    printf("This is your matrix: \n");
for(i = 0; i < nrows; i++){
    for(j = 0; j < ncols; j++){
        if (i == j)
            printf("X \t");
        else if (i == ncols - j - 1)
            printf("X \t");
        else
            printf("%d \t", matrix[i][j]);
    }

    printf("\n");}

示例:

Enter number of rows: 4
Enter number of columns: 5
Enter matrix elements: 1 1 1 1 1 2 2 2 2 2 3 3 3 3 3 4 4 4 4 4




This is your matrix: 
X   1   1   1   X   
2   X   2   X   2   
3   3   X   3   3   
4   X   4   X   4 

关于C - 矩阵主线和反对角线(替换),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47699034/

相关文章:

c - 在 C 中用非常小的数字实现方程 - 普朗克定律生成黑体

matrix - 为什么在 Julia 0.5.0 中索引大型矩阵比 0.4.7 慢 170 倍?

python - 替换文本中最后一次出现的字符串

java - 如何在Java中替换字符串中内容和长度未知的元素?

c - 如何区分零和负零?

c - 哪个说明符用于打印 long double 的最大/最小值?

c - 了解 'for' 循环的退出条件

c - 打印矩阵关闭代码块

MATLAB:创建具有相同重复 block 的 block 对角矩阵

jQuery:查找并替换 html 中的字符串;避免 src 和 href 值