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

编写函数,求出一个二维数组中各行最大值中最小的数及其下标,求出各列最小值中最大的数及其下标。在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日

悬赏问题

  • ¥15 MapReduce结果输出到HBase,一直连接不上MySQL
  • ¥15 扩散模型sd.webui使用时报错“Nonetype”
  • ¥15 stm32流水灯+呼吸灯+外部中断按键
  • ¥15 将二维数组,按照假设的规定,如0/1/0 == "4",把对应列位置写成一个字符并打印输出该字符
  • ¥15 NX MCD仿真与博途通讯不了啥情况
  • ¥15 win11家庭中文版安装docker遇到Hyper-V启用失败解决办法整理
  • ¥15 gradio的web端页面格式不对的问题
  • ¥15 求大家看看Nonce如何配置
  • ¥15 Matlab怎么求解含参的二重积分?
  • ¥15 苹果手机突然连不上wifi了?