产生一个5*5的二维数组,两条对角线上元素均为2,其余元素为1,将其输出。

产生一个5*5的二维数组,两条对角线上元素均为2,其余元素为1,将其输出。


#include <stdio.h>

int main() {
    int arr[5][5];
    int i, j;

    // 初始化数组
    for (i = 0; i < 5; i++) {
        for (j = 0; j < 5; j++) {
            if (i == j || i == (4 - j)) {
                arr[i][j] = 2;
            } else {
                arr[i][j] = 1;
            }
        }
    }

    // 输出数组
    for (i = 0; i < 5; i++) {
        for (j = 0; j < 5; j++) {
            printf("%d ", arr[i][j]);
        }
        printf("\n");
    }

    return 0;
}

img


这里把这个函数的名称换掉,比如换为area

  • 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/7772142
  • 你也可以参考下这篇文章:有一个5 * 5的二维数组,保留主对角线上的元素,并使其他元素均为0,要求用函数和子函数完成
  • 除此之外, 这篇博客: 21.求5*5的二维数组的每行元素的平均值中的 21.求5*5的二维数组的每行元素的平均值 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • //21.求5*5的二维数组的每行元素的平均值
    #include<stdio.h>
    int main()
    {
        int a[5][6],j,i;
        for(i=0;i<5;i++)
            {
            for(j=0;j<5;j++)
                scanf("%d",&a[i][j]);
            }
        for(i=0;i<5;i++)
            {
            a[i][5]=0;
            for(j=0;j<5;j++)
                a[i][5]+=a[i][j];
            a[i][5]=a[i][5]/5;
            }
        for(i=0;i<5;i++)
           {
           for(j=0;j<6;j++)
               printf("%2d",a[i][j]);
           printf("\n");
           }
        return 0;
    }
    

    运行结果:
    在这里插入图片描述

  • 以下回答由chatgpt基于相关博客总结生成:

    可以使用numpy库创建二维数组,然后通过循环将两条对角线上的元素设为2,其他元素设为1,最后通过print()函数输出数组。具体代码如下:

    import numpy as np
    
    # 创建5行5列的二维数组,元素均为1
    array = np.ones((5, 5))
    
    # 循环将两条对角线上的元素设为2
    for i in range(5):
        array[i][i] = 2
        array[i][4-i] = 2
    
    # 输出数组
    print(array)
    

    输出结果如下:

    [[2. 1. 1. 1. 2.]
     [1. 2. 1. 2. 1.]
     [1. 1. 2. 1. 1.]
     [1. 2. 1. 2. 1.]
     [2. 1. 1. 1. 2.]]