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

我是新手,遇到了一个问题,不知道怎么解决,望大家帮忙,谢谢

嘟吡嘟哇 发布于 2009-12-01 16:56, 428 次点击
include <stdio.h>
#include <iostream>
using namespace std;

void MaxOne()
{
    float s;
int i=0;
double A[10];
double a;
for(i=0;i<=9;i++)
{ s=A[i]-A[i+1];
    if (s<0) i++;
    else{ A[i]=a,
        a=A[i+1],
        A[i+1]=A[i];
    i++;}
}
cout<<"the maximum one is"<<A[9]<<endl;

}
 void main()
 {const double A[10]={1,2,5,6,17,9,8,13,10,8};
MaxOne();

 }

这是我编的一个小程序,就是想找到一个数组里最大的数,编译通过,但是运行不出来我要的结果,不知道是怎么回事。
3 回复
#2
hoho5682009-12-01 17:43
你这个……
没有参数传递啊,你这A【10】又不是全局变量。。。
换句话说,你MaxOne()函数里面的数组A没有赋值。
#3
ivanjoysky2009-12-01 23:33
MaxOne函数里面的A[10]是局部变量,每调用一次都会执行double A[10];就是A[10]没有赋值你吧程序改成这样:
#include <stdio.h>
#include <iostream>
using namespace std;

void MaxOne(double A[10])
{
    float s;
    int i=0;
    //double A[10];
    double a;
    for(i=0;i<=9;i++)
    { s=A[i]-A[i+1];
    if (s<0) i++;
    else{ A[i]=a,
        a=A[i+1],
        A[i+1]=A[i];
    i++;}
    }
    cout<<"the maximum one is"<<A[9]<<endl;
   
}
void main()
{ double A[10]={1,2,5,6,17,9,8,13,10,8};
  MaxOne(A);
}
就好了,能运行,但你求最大值的算法好像不太对,因为结果不太对。。。
#4
ivanjoysky2009-12-01 23:49
你把程序改成这样吧,这样就行了;这是算法问题:

#include <stdio.h>
#include <iostream>
using namespace std;

void MaxOne(double A[10])
{
    float s=0;
    int i=0;
    //double A[10];
    double a=0;
    for(i=0;i<9;i++)
    { s=A[i]-A[i+1];
    //if (s<0) i++;
      if(s<0) continue;
    else{ //,
        a=A[i+1];
        A[i+1]=A[i];
        A[i]=a;
    }
    }
    cout<<"the maximum one is"<<A[9]<<endl;
   
}
void main()
{ double A[10]={1,2,5,6,17,9,8,13,10,8};
  MaxOne(A);
}
1