老师,看一下我的程序哪出了问题

来源:2-11 编程练习

gyans

2018-04-26 10:32:09

#include<iostream>

using namespace std;

//声明求数组最大值的函数

int max(int *p,int len)

{

    int i,s=0;

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

    {

        if(*p>*(p+1))

        {

s=*p;

*(p+1)=s;

}

        else

        {

s=*(p+1);

}

    }

    return s;

}

int main()

{

//定义一维数组

int num[5]={4,5,2,6,9};

    

//调用函数,输出返回值

cout<<"数组num的最大值为:"<<max(num,5)<<endl;

return 0;

}


写回答

1回答

imooc_澈

2018-04-26

你好,数组总共有五个元素,循环中i小于数组长度len,当循环到最后数组的最后一个元素时,p+1的地址已经不在数组范围内了,此时越界,*(p+1)的值就不确定了,修改如下:

http://img.mukewang.com/climg/5ae1808600010dea02710339.jpg

或者将数组所有元素跟s比一遍,大的赋给s,最终也能将最大值挑选出来

http://img.mukewang.com/climg/5ae180f100017df002940255.jpg

如果解决了你的问题,请采纳,祝学习愉快~

1
hyans
h 非常感谢!
h018-04-26
共1条回复

0 学习 · 593 问题

查看课程