c语言的问题 tk513改错

来源:百度知道 编辑:UC知道 时间:2024/05/21 06:56:52
c513.c的功能为:找出二维数组a中的每行最大值,将其存入数组s中。程序中有三处错误代码,请指出并改正之.注意不得改变程序结构和加减程序行。
#include <stdio.h>
#define M 3
void main()
{
int a[M][M]={34,56,12,10,20,76,79,12,30};
int s[M],i,j,k;
for(i=0;i<m;i++)
{
*(s+i)=*(a+i);
for(j=1;j<M;j++)
if(*(s+i)>*(*(a+i)+j))
*(s+i)=*(*(a+i)+j);
}
for(i=0;i<M;i++)
{
printf("Row=%d MAX=%d",i,*(s+i));
printf("\n");
}

}

#include <stdio.h>
#define M 3
void main()
{
int a[M][M]={34,56,12,10,20,76,79,12,30};
int s[M],i,j,k;
for(i=0;i<m;i++) //不存在m这个变量应改为for(i=0;i<M;i++)
{
*(s+i)=*(a+i); //这句没有意义表示把地址付给整数应改为*(s+i)=**(a+i);
for(j=1;j<M;j++)
if(*(s+i)>*(*(a+i)+j))//因为是求最大值应该改为 if(*(s+i)<*(*(a+i)+j))
*(s+i)=*(*(a+i)+j);
}
for(i=0;i<M;i++)
{
printf("Row=%d MAX=%d",i,*(s+i));
printf("\n");
}

}

#include <stdio.h>
#define M 3
void main()
{
int a[M][M]={34,56,12,10,20,76,79,12,30};
int s[M],i,j,k; //没有用到k
//加一句s[0]=a{0];
for(i=0;i<m;i++) //m改为M
{
*(s+i)=*(a+i);
for(j=1;j<M;j++)
if(*(s+i)>*(*(a+i)+j))
*(s+i)=*(*(a+i)+j);
}
for(i=0;i<M;i++)
{
printf("Row=%d MAX=%d",i,*(s+i));
printf("\n");
}

}<