注册 登录
编程论坛 C++教室

c++菜鸟求助 出现-858993460的问题

xWOLFx 发布于 2016-10-16 14:57, 2932 次点击
#include<iostream>
using namespace std;
int max(int *p)
{ int t,i;
 for(i=1;i<=4;i++)
    if(*(p+i-1)<*(p+i))
     t=*p;
     p=p+i;
     *(p+i)=t;
     return *p;
}
int main()
{
    int max(int *p);
    int a[5],*p,i;
        p=&a[0];
    for(i=0;i<5;i++)
        cin>>a[i];
    cout<<"The result:"<<max(p);
    return 0;
}
如何修改呀
6 回复
#2
yangfrancis2016-10-16 22:32
不带在主函数内声明函数的。其他的我不好说,不知道你想做什么。
#3
yangfrancis2016-10-16 22:33
求数组的最大值?
#4
yangfrancis2016-10-16 22:40
int max(int*p)
{ int t,i;
 for(i=1;i<=4;i++)
    if(*p<*(p+i))
    { t=*p;
     *p=*(p+i);
     *(p+i)=t;
    }
     return *p;
}
试一下看行不行,直接在回复中写的,还没调试过。
#5
rjsp2016-10-17 08:22
程序代码:
#include <iostream>
#include <limits>
using namespace std;

int max( const int* vals, size_t n )
{
    int r = numeric_limits<int>().min();

    for( size_t i=0; i!=n; ++i )
        if( r < vals[i] )
            r = vals[i];

    return r;
}

int main( void )
{
    int a[5];
    const size_t n = sizeof(a)/sizeof(*a);

    for( size_t i=0; i!=n; ++i )
        cin >> a[i];
    cout << "The result : " << max(a,n) << endl;

    return 0;
}

#6
StadyC2016-10-17 15:58
回复 2楼 yangfrancis
在函数调用之前定义的函数是不用声明的
#7
xWOLFx2016-10-18 08:21
回复 4楼 yangfrancis
为什么用p=p+1就不行了?我运行过了你的是正确的。
1