C++奇怪的问题

来源:百度知道 编辑:UC知道 时间:2024/06/02 12:11:15
就是下面一个程序

输入10个数 求最大值 最小值 和次大值

我自己写的

为什么用TC++3.0 没有任何问题 测试也成功

但我用VC++6.0 的时候 调试没错 在测试的时候 会 错误..
(我指的错误 就是 "非法操作", 强制关闭应用程序那种..)

谁能告诉我为什么

该程序如下

#include<iostream.h>
float max(float x,float y)
{return x>y?x:y;}
float mbx(float x,float y)
{return x<y?x:y;}
void main()
{
float a[9],d,c,m;
for(int i=0;i<10;i++)
{cin>>a[i];}
d=max(max(max(max(a[1],a[2]),max(a[3],a[4])),max(max(a[5],a[6]),max(a[7],a[8]))),max(a[9],a[0]));
m=mbx(mbx(mbx(mbx(a[1],a[2]),mbx(a[3],a[4])),mbx(mbx(a[5],a[6]),mbx(a[7],a[8]))),mbx(a[9],a[0]));
cout<<"最大值为="<<d<<endl<<"最小值为="<<m<<endl<<"次大值为=";
for(i=0;i<10;i++)
{
if(d==a[i]) a[i]=m;
}
c=max(max(max(max(a[1],a[2]),max(a[3],a[4])),max(max(a[5],a[6]),max(a[7],a[8]))),max(a[9],a[0]));

#include<iostream>
using namespace std;

要遵守C++编码规范 不提倡在VC6.0下学习标准C++

你先关闭再打开看看还有问题吗?
如果还有那就是有什么内在问题,不是语法问题,编译器不能发现,
还有很重要的一点怀疑就是你的a[9]要改成a[10] 我觉得是这里

我在VC6.0中运行了,这个程序没问题,可以运行出来,估计是编译环境出现了问题,你换一个版本的VC6.0试一下

float a[10],d,c,m;