for(int i=0; i<n && cin>>a[i]; ++i); //为什么输入非数字后会自动停止
intFill_array(inta[],intn){for(inti=0;i<n&&cin>>a[i];++i);//为什么输入非数字后会自动停止returni;}...
int Fill_array(int a[],int n)
{
for(int i=0; i<n && cin>>a[i]; ++i); //为什么输入非数字后会自动停止
return i;
} 展开
{
for(int i=0; i<n && cin>>a[i]; ++i); //为什么输入非数字后会自动停止
return i;
} 展开
2013-08-06
展开全部
cin内部维护了一个流状态标记
cin对各种输入类型都进行了重载,如果输入字符和输入类型不兼容,cin会把流状态标记设置为失效
cin在if,for,while等条件判断语句里会由operator void*提供的隐式转换根据流状态返回true或false
cin >> a[i]返回cin
所以cin >> 整型而输入字符型时,cin的failbit被设置,然后cin >> a[i]返回false,导致条件检测i<n && cin>>a[i]失败,循环结束
cin对各种输入类型都进行了重载,如果输入字符和输入类型不兼容,cin会把流状态标记设置为失效
cin在if,for,while等条件判断语句里会由operator void*提供的隐式转换根据流状态返回true或false
cin >> a[i]返回cin
所以cin >> 整型而输入字符型时,cin的failbit被设置,然后cin >> a[i]返回false,导致条件检测i<n && cin>>a[i]失败,循环结束
2013-08-06
展开全部
C++在流取值会作相应的判断,cin>>a[i]; a[i]是一个整型。如果你输入的不是数字(即不是整型),编译器在流是寻找对应类型的(即int 整型)。一直找不到,就会在相应的标志中置位1。然后~~~死。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-08-06
展开全部
因为你定义的是int (整数类型),要想输入非数字的运行的话,可以用char等试试
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询