混沌,何处巡 2022-06-02 18:24 采纳率: 100%
浏览 352
已结题

编写函数,求出一个二维数组中各行最大值中最小的数及其下标,求出各列最小值中最大的数及其下标。在main函数中验证。要求:二维数组的行数、列数、数组元素均在main函数中由键盘输入。

#include <stdio.h>
void main()
{
int a = 0, b = 0,i=0,j=0,array1[a][b],array2[b];
int array2[b];
printf("请输入数组行数\n");
scanf("%d", &a);
printf("请输入数组列数\n");
scanf("%d", &b);

for (i = 0; i < a; i++)
{
    for ( j = 0; j < b; j++)
    {
        printf("请输入第%d行%d列元素:\n", i+1,j+1);
        scanf("%d", &array1[i][j]);
    }
}
printf("\n====输入完毕====\n");

int max;
for (int j = 0; j < b; j++)
{
    max = 0;
    for (int i = 0; i < a; i++)
    {
        if (max<array1[i][j]) max=array1[i][j];
    }
    array2[j] = max;
}
printf("\narray1:\n");
for (int i = 0; i < a; i++)
{
    printf("\n");
    for (int j = 0; j < b; j++)
    {
        printf("%d\t",array1[i][j]);
    }
}
printf("\narray2\n");
for (int i = 0; i < b; i++)
{
    printf("%d\t",array2[i]);
}

}

  • 写回答

1条回答 默认 最新

  • ...404 Not Found 2022-06-02 19:19
    关注
    
    #include <stdio.h>
    #include<stdlib.h>
    void main()
    {
        int a = 0, b = 0, i = 0, j = 0;
        printf("请输入数组行数\n");
        scanf("%d", &a);
        printf("请输入数组列数\n");
        scanf("%d", &b);
    
        int**array = (int**)malloc(sizeof(int*)*a);
        for (i = 0; i < b; i++)
            array[i] = malloc(sizeof(sizeof(int)*b));
    
        for (i = 0; i < a; i++)
        {
            for (j = 0; j < b; j++)
            {
                printf("请输入第%d行%d列元素:\n", i + 1, j + 1);
                scanf("%d", &array[i][j]);
            }
        }
        printf("\n====输入完毕====\n");
    
        int maxi,maxj=0,mini=0,minj, x, y,x_i,y_j;
        for (i = 0; i < a; i++)
        {
            maxi = 0;
            for (j = 0; j < b; j++)
            {
                if (maxi < array[i][j])
                {
                    maxi = array[i][j];
                    x = i;
                    y = j;
                }
            }
            if (!mini || mini > maxi)
            {
                mini = maxi;
                x_i = x;
                y_j = y;
            }
        }
        printf("各行最大之最小为%d,下标%d %d\n", mini, x_i, y_j);
        for (i = 0; i < b; i++)
        {
            minj = INT_MAX;
            for (j = 0; j < a; j++)
            {
                if (minj >array[j][i])
                {
                    minj = array[j][i];
                    x = j;
                    y = i;
                }
            }
            if (!maxj || maxj < minj)
            {
                maxj = minj;
                x_i = x;
                y_j = y;
            }
        }
        printf("各列最小之最大为%d,下标%d %d\n", maxj, x_i, y_j);
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 6月10日
  • 已采纳回答 6月2日
  • 创建了问题 6月2日

悬赏问题

  • ¥20 java在应用程序里获取不到扬声器设备
  • ¥15 echarts动画效果的问题,请帮我添加一个动画。不要机器人回答。
  • ¥60 许可证msc licensing软件报错显示已有相同版本软件,但是下一步显示无法读取日志目录。
  • ¥15 Attention is all you need 的代码运行
  • ¥15 一个服务器已经有一个系统了如果用usb再装一个系统,原来的系统会被覆盖掉吗
  • ¥15 使用esm_msa1_t12_100M_UR50S蛋白质语言模型进行零样本预测时,终端显示出了sequence handled的进度条,但是并不出结果就自动终止回到命令提示行了是怎么回事:
  • ¥15 前置放大电路与功率放大电路相连放大倍数出现问题
  • ¥30 关于<main>标签页面跳转的问题
  • ¥80 部署运行web自动化项目
  • ¥15 腾讯云如何建立同一个项目中物模型之间的联系