请进来瞧瞧c语言的 想很久了

来源:百度知道 编辑:UC知道 时间:2024/05/18 00:11:49
这个问题想了很久都没有找到答案,请指教啊。不要另编程序了,就在原来的基础上修改好。
/*做个程序是想要随机产生一个方正,要求求出行中最大列最小的一个数*/
#include"stdio.h"
#include"stdlib.h"
#define L 4
#define R 4
void fun(int *p)
{ int l[L],r[R],res[L][R];/*定义了三个数组,分别用来存放行最大的数,列最小的数,最综结果*/
int i,j,m,n;
for(i=0;i<L;i++)/*求出行中最大的数*/
{ for(j=0;j<R-1;j++)
for(n=j,m=j+1;m<R;m++)
if(p[i][n]<p[i][m])/*系统提示此处为无效间接运算,想知道为什么,该怎么改*/
n=m;
l[i]=p[i][n];
}
for(i=0;i<R;i++)/*求出列中最小的数*/
{ for(j=0;j<L-1;j++)
for(n=j,m=j+1;m<L;m++)
if(p[n][i]>p[m][i])
n=m;
r[i]=p[n][i];
}
n=1;
for(i=0;i<L;i++)
for(j=0;j<R;j++)
if(l[i]==r[j])/*如果行和列中的数相等的话就找到了想要的数据*/
{ printf("The data is: res[%d][%d]=%d\n",i,j,r[i]);
n=0;
}

void fun(int *p) 传入的参数是指向int的指针,p[i]可以解析(同*(p+i)),但是p[i][m]是没法解析的,需要改为void fun(int p[][4])。需要的话可以参考数据结构书中鞍点算法。

你的fun的参数声明的是int *型,但main中传的是二维数组,具体到这个程序就是(int *)[4]型,类型不符.要把声明也改成(int *)[4]型.

for(n=j,m=j+1;m<R;m++)
if(p[i][n]<p[i][m])/*系统提示此处为无效间接运算,想知道为什么,该怎么改*/

把n=j,去掉可以吗

不行的