读书人

为啥一位数组会越界无限输入

发布时间: 2013-12-05 22:27:44 作者: rapoo

为什么一位数组会越界,无限输入
#include<iostream>
using namespace std;
int main()
{
double a[3],t;
int i=0,j=0;
for(j=0;j<5;j++)
{
while(i<3)
{
cin>>a[i];
if(a[i]<=0)
{
cout<<"请重新输入"<<endl;
a[i]=0;
i--;
}
i++;
}
for(i=0;i<2;i++)
{
if(a[i]>a[i+1])
{
t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}

}
if((a[0]+a[1]>a[2])&&(a[1]-a[0]<a[2]))
{
if((a[0]==a[1]&&a[1]!=a[2])||(a[1]==a[2]&&a[0]!=a[2]))
cout<<"这三条边可以构成等腰三角形"<<endl;
else if(a[0]==a[1]&&a[1]==a[2])
cout<<"这三条边可以构成等边三角形"<<endl;
else if(((a[0]*a[0])+(a[1]*a[1]))==(a[2]*a[2]))
cout<<"这三条边可以构成直角三角形"<<endl;
else
cout<<"这三条边可以构成一般三角形"<<endl;
}
else
cout<<"这三条边不可以构成三角形"<<endl;
}
return 0;
}
为什么我定义了只能输入三个数,可是运行的时候可以输入无数个啊
[解决办法]
你这又不是实时检测的,你没按回车键还没输入你程序的缓冲呢,你按了回车键就出问题了
[解决办法]
都是这样的,没有输入回车都没进缓冲,除非你是实时检验的。
[解决办法]
对你按下的每个字符进行检查,当已经输入3个数字了,再输入非数字字符即可跳出循环,用cin.get()

读书人网 >C++

热点推荐