大家帮我看看c语言程序哪错了。。。

来源:百度知道 编辑:UC知道 时间:2024/05/17 02:19:39
#include <stdio.h>
#define ROW 2
#define COL 3
int max(int a[][3],int num,int p)
{
int i,j,m;
for(i=0;i<num;i++)
{
for(j=0;j<p;j++)
if(*(*(a+i)+j)>*(*(a+0)+0))
{
m=*(*(a+i)+j);
*(*(a+i)+j)=*(*(a+0)+0);
}
}
return m;
}
void main()
{
int a[ROW][COL]={1,2,3,4,5,6},m;
max(a,ROW,COL);
printf("Array a={1,2,3,4,5,6}, the maximum element is %d.",m);
}

用visual studio 运行不出来,帮我改改

#include <stdio.h>
#define ROW 2
#define COL 3

int max(int a[][3],int num,int p)
{
int i,j,m;
m=*(*(a+0)+0);//第一个数
for(i=0;i<num;i++)
{
for(j=0;j<p;j++)
if(*(*(a+i)+j)>m) //如果当前数更大
{
m=*(*(a+i)+j); //把这个更大的数给赋值m
}
}
return m;
}

void main()
{
int a[ROW][COL]={1,2,3,4,5,6},m;
m=max(a,ROW,COL); //不小心漏掉m?
printf("Array a={1,2,3,4,5,6}, the maximum element is %d.\n",m);
}

//你是个绝对新手啊
//教材里的例子好好理解
//

max(a,ROW,COL);

改为

m=max(a,ROW,COL);

主函数中m干什么用的。。。都没传递。。。

主函数里 m = max(.....);
m没赋值就输出? 问题在这里。

下面是建议:

max函数没必要那么麻烦,不必调动数组里数字的位置,把m赋初值为**a,直接用m和*(*(a+i)+j)比较,如果比m大,就将其赋值给m就可以了。

我在我的Dev-C++ 中运行了一下,要把主函数的返回类型void 改为int 就可以了,就可以得到正确的结果,不知道在visual studio 中是怎么回事, 你说看你的问题嘛?

中间大括号后头 + ;号