如何使用两重循环为一个4X5的二维数组赋值?

使用两重循环为一个4X5的二维数组赋值,并按四行五列输出该矩阵,然后从键盘输入一个整数,输出与该整数最接近的元素(若有两个最接近的元素,输出任何一个都行),及其所在的行和列至少三次输入输出。

定义一个4x5的二维数组。
使用两个嵌套循环,分别遍历行和列,并在每个位置上为二维数组赋值。
在内部循环中,通过printf语句输出每个元素。
从键盘输入一个整数,保存到num变量中。
遍历二维数组,计算每个元素与num的差距,找到最小的差距值,并记录对应元素的行和列。
输出最接近的元素及其所在的行和列,至少输出三次。

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
 
#define ROWS 4
#define COLS 5
 
int main()
{
    int matrix[ROWS][COLS];
    int i, j, num;
    int min_diff = INT_MAX;  // 定义最小差距为最大整数
    int closest_row, closest_col;
 
    // 为矩阵赋值并输出
    for (i = 0; i < ROWS; i++)
    {
        for (j = 0; j < COLS; j++)
        {
            matrix[i][j] = i * COLS + j + 1;
            printf("%d ", matrix[i][j]);
        }
        printf("\n");
    }
 
    // 从键盘输入一个整数
    printf("请输入一个整数:");
    scanf("%d", &num);
 
    // 寻找最接近的元素
    for (i = 0; i < ROWS; i++)
    {
        for (j = 0; j < COLS; j++)
        {
            int diff = abs(matrix[i][j] - num);  // 计算差距
            if (diff < min_diff)
            {
                min_diff = diff;
                closest_row = i;
                closest_col = j;
            }
        }
    }
 
    // 输出结果
    printf("最接近的元素是:%d,它位于第 %d 行第 %d 列\n", matrix[closest_row][closest_col], closest_row+1, closest_col+1);
    printf("最接近的元素是:%d,它位于第 %d 行第 %d 列\n", matrix[closest_row][closest_col], closest_row+1, closest_col+1);
    printf("最接近的元素是:%d,它位于第 %d 行第 %d 列\n", matrix[closest_row][closest_col], closest_row+1, closest_col+1);
 
    return 0;
}
不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^