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

编写函数,求出一个二维数组中各行最大值中最小的数及其下标,求出各列最小值中最大的数及其下标。在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 一个主机电脑有两个显示器,当前有两个软件主体是网页html打包的exe程序,如何通过cmd命令bat同时打开软件一个在主屏幕显示,另外一个软件在2副屏幕上显示
  • ¥15 AE SDK插件开发,获取关键帧值得问题
  • ¥15 谁知道这个咋搞的吗,有偿
  • ¥20 基于spring boot、的scorm
  • ¥15 往复密封问题的两个问题
  • ¥15 DAC函数和STM32
  • ¥15 任务是接收数据并把数据写入DAC7311,这些代码能实现此功能吗
  • ¥15 分析FP -Growth代码运行内存太大而无法运行的原因
  • ¥20 qtcreat 使用msvc编译器开发软件运行时字体锯齿感严重
  • ¥15 为何显示keyerror fruit