为什么输出的不是正常数值

来源:2-14 编程练习

Wzmxa

2018-02-18 00:33:09

#include<iostream>

using namespace std;

int max(int (*p)[4],int len)

{

int i,j,s=0;

for(i=0;i<len;i++,p++)

{

for(j=0;j<4;j++)

{

*(*p+j)>*(*p+j+1)?*(*p+j):*(*p+j+1);//这里的问题出在哪

}

}

s=*(*p+j);

return s;

}

int main()

{

int num[3][4]={4,5,2,6,12,7,5,0,3,1,3,4};

cout<<max(num,3)<<endl;

return 0;

}


写回答

2回答

好帮手慕查理

2018-02-18

您好,逻辑错误,for循环中应该是判断是否是大的数值,是的话赋值给一个中间变量,如果不是,则在循环,直到判断完数组,返回变量值。你的程序只是进行了判断,但是并未对值进行任何操作,只是在 最后给了s变量一个值而已,因此返回的s就是你给的值。如果解决了您的问题,请采纳,祝学习愉快!

1

KistPlus

2018-04-01

#include<iostream>
using namespace std;
int Max(int (*p)[4],int len)
{
    int i;
    int j;
    int line[3];  
    for(i=0;i<len;i++)
    {
        for(j=0;j<3;j++)
        {
            if(p[i][j]>p[i][j+1]) //遍历出每个行指针中最大值
            {
                int temp;
                temp=p[i][j];
                p[i][j]=p[i][j+1];
                p[i][j+1]=temp;
            }
        }
        line[i]=p[i][j]; //存储每个行指针的最大值
    }
    for(int k=0;k<2;k++)    //再把所有行指针的最大值进行比较,返回最大值
    {
         if(line[k]>line[k+1])
            {
                int temp;
                temp=line[k];
                line[k]=line[k+1];
                line[k+1]=temp;
            }
    }
    return line[2];
}
int main()
{
    int num[3][4]={4,5,7,2,12,7,34,1,3,1,3,6};
    cout<<Max(num,3)<<endl;
    return 0;
}

/*这道题用列指针循环11次比较更为便利,不过题目要求用行指针*/


0

0 学习 · 593 问题

查看课程