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

谭浩强书上的例题,运行的结果有问题!请各位大侠帮我看看问题出在哪里,问题如下

爱维尔 发布于 2012-08-21 16:43, 406 次点击
#include <iostream>
using namespace std;
class Array_Max
{
public:
    void set_valua();
    void max_valua();
    void show_valua();
private:
    int array[10];
    int max;
};
void Array_Max::set_valua()
{
    int i;
    for(i=0;i<10;i++)
        cin >> array[i];
}
void Array_Max::max_valua() //求最大值
{
    int i;
    int max = array[0];
    for(i=0;i<10;i++)
    {
         if(array[i] > max)
        max = array[i];      //函数能够将最大值求出,并且将最大值赋给max
    }
}
void Array_Max::show_valua()   //这个输出函数却不能正确输出最大值,输出的是类中的max的值
{
    cout <<"max = "<< max <<endl;  
}
int main()
{
    Array_Max arrmax;
    arrmax.set_valua();
    arrmax.max_valua();
    arrmax.show_valua();
    return 0;
}
我在运行窗口中输入如下数字:
23 67 32 26 89 99 2 7 -89 6
却得到的结果为:
max = -858993460
3 回复
#2
血祭幻岚2012-08-21 18:01
void Array_Max::max_valua() //求最大值
 {
     int i;
    int max = array[0];//这里你又定义了一个max,作为局部变量,根本没有改变你类里定义的max
     for(i=0;i<10;i++)
     {
          if(array[i] > max)
         max = array[i];      //函数能够将最大值求出,并且将最大值赋给max
     }
 }

#3
mfs1111162012-08-22 07:18
类的max是私有变量,而且似乎并没有对它进行值的传递……新手刚学,大家原谅些个……
#4
zhuanjia02012-08-30 23:27
void Array_Max::max_valua() //求最大值
{
    int i;
    int max = array[0];    //重复定义max
    for(i=0;i<10;i++)
    {
         if(array[i] > max)
        max = array[i];      //函数能够将最大值求出,并且将最大值赋给max
    }
}


重复定义了max变量,如果你没加上作用于运算符的话,系统会是用在该函数体里的同名变量max。最简单的解决办法是将int max = array[0];去掉
1