编写程序,c语言。用一维数组存储二维数组的数据看,编写函数完成矩阵的输入,输出,转置,乘法运算。

在线等

代码一:
#include<stdio.h>
int MAX,MIN;
int maxi,maxj,mini,minj;
void main()
{
void result(int x[][5],int m,int n);
int a[5][5],max,min,i,j;
for(i=0;i<5;i++)
for(j=0;j<5;j++)
scanf("%d",&a[i][j]);
MAX=MIN=a[0][0];
maxi=maxj=mini=minj=0;
result(a,5,5);
printf("MAX=%d,maxi=%d,maxj=%d\n",MAX,maxi,maxj);
printf("MIN=%d,mini=%d,minj=%d\n",MIN,mini,minj);
}
void result(int x[][5],int m,int n)
{
int i,j;
for(i=0;i<m;i++)
for(j=0;j<n;j++)
{
if(x[i][j]>MAX)
{
MAX=x[i][j];
maxi=i;
maxj=j;
}
if(x[i][j]<MIN)
{
MIN=x[i][j];
mini=i;
minj=j;
}
}
}
但代码一有个缺点,那就是如果有多个最值,只能输出最后一个。下面的代码是经过改进的。
代码二:
#include<stdio.h>
int MAX,MIN;
int maxi,maxj,mini,minj;
void main()
{
void result(int x[][5],int m,int n);
int a[5][5],max,min,i,j;
for(i=0;i<5;i++)
for(j=0;j<5;j++)
scanf("%d",&a[i][j]);
MAX=MIN=a[0][0];
maxi=maxj=mini=minj=0;
result(a,5,5);
}
void result(int x[][5],int m,int n)
{
int i,j;
for(i=0;i<m;i++)
for(j=0;j<n;j++)
{
if(x[i][j]>MAX)
MAX=x[i][j];
if(x[i][j]<MIN)
MIN=x[i][j];
}
for(i=0;i<m;i++)
for(j=0;j<n;j++)
{
if(x[i][j]==MAX)
{
MAX=x[i][j];
maxi=i;
maxj=j;
printf("MAX=%d,maxi=%d,maxj=%d\n",MAX,maxi,maxj);
}
if(x[i][j]==MIN)
{
MIN=x[i][j];
mini=i;
minj=j;
printf("MIN=%d,mini=%d,minj=%d\n",MIN,mini,minj);
}
}
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-06-25
学习了
第2个回答  2011-06-27
可以用数组指针么?追问

可以啊

相似回答