ygs_1 2019-04-26 21:13 采纳率: 0%
浏览 4682

(c语言)编写一个函数,由实参传来一个矩阵 A[M][N],按列输出它每一列上最大值和最小值 的差

#include<stdio.h>
int main()
{void judge(int a[10][10],int m,int n);
 int m,n;
 printf("请输入矩阵的行数和列数:\n");
 scanf("%d%d",&m,&n);
 int a[m][n],i,j;
 printf("enter the matrix:\n");
 for(i=0;i<m;i++)
    for(j=0;j<n;j++)
    scanf("%d",&a[i][j]);
 judge(a,m,n);
return 0;
}
void judge(int a[10][10],int m,int n)
{int max,min,i,j;
  for(j=0;j<n;j++)
    {max=a[0][j];min=a[0][j];
     for(i=1;i<m;i++)
    {if(max<a[i][j]) max=a[i][j];
     if(min>a[i][j]) min=a[i][j];
    }
     printf("第%d列最大值和最小值的差是%d\n",j+1,max-min);
     }
}

图片说明
为什么不对,求大佬解答?

  • 写回答

2条回答 默认 最新

  • threenewbee 2019-04-27 00:29
    关注

    我的VC++并不支持int a[m][n]这种写法,我知道你的GCC是支持的
    所以我稍微修改了程序

    #include<stdio.h>
    #include<stdlib.h>
    int main()
    {void judge(int * a,int m,int n);
     int m,n;
     printf("请输入矩阵的行数和列数:\n");
     scanf("%d%d",&m,&n);
     int * a,i,j;
     a = (int *)malloc(sizeof(int) * m * n);
     printf("enter the matrix:\n");
     for(i=0;i<m;i++)
        for(j=0;j<n;j++)
            scanf("%d",&a[i*n+j]);
     judge(a,m,n);
    return 0;
    }
    void judge(int * a,int m,int n)
    {int max,min,i,j;
      for(j=0;j<m;j++)
        {max=a[j];min=a[j];
         for(i=1;i<n;i++)
        {if(max<a[i*n+j]) max=a[i*n+j];
         if(min>a[i*n+j]) min=a[i*n+j];
        }
         printf("第%d列最大值和最小值的差是%d\n",j+1,max-min);
         }
    }
    
    评论

报告相同问题?

悬赏问题

  • ¥15 数学的三元一次方程求解
  • ¥20 iqoo11 如何下载安装工程模式
  • ¥15 本题的答案是不是有问题
  • ¥15 关于#r语言#的问题:(svydesign)为什么在一个大的数据集中抽取了一个小数据集
  • ¥15 C++使用Gunplot
  • ¥15 这个电路是如何实现路灯控制器的,原理是什么,怎么求解灯亮起后熄灭的时间如图?
  • ¥15 matlab数字图像处理频率域滤波
  • ¥15 在abaqus做了二维正交切削模型,给刀具添加了超声振动条件后输出切削力为什么比普通切削增大这么多
  • ¥15 ELGamal和paillier计算效率谁快?
  • ¥15 蓝桥杯单片机第十三届第一场,整点继电器吸合,5s后断开出现了问题