C/C++ 关于while(cin) 的相关问题

来源:百度知道 编辑:UC知道 时间:2024/05/20 17:31:31
我自己编了一个程序,经过改编后,可以运行了,但有个地方自己不太明白,帮忙看下,谢谢了:
代码如下:
#include <iostream>
using namespace std;
int imax(int array[],int count)
{
int i,max;
max = array[0];
for(i = 1; i < count; i++)
{
if(array[i] > max)
max = array[i];
}
return max;

}
int imin(int array[],int count)
{
int i,min;
min = array[0];
for(i=1 ; i < count;i++)
{
if(array[i] < min)
min=array[i];
}
return min;

}
int main()
{
int w,m,n,i,k,a[100];
cout<<"请输入数组元素:(以输入非数字结束,或输入ctrl+a结束)"<<endl;
for (i=0;i<100;i++)
while(cin >> k)
{
a[i]=k;
break;
}
cin.sync();
cin.clear();
cout<<"请输入数组参考元素个数:"<<endl;
cin>>n;
m=imax(a,n);
w=imin(a,n);
cout<<"数组最大值为:"<<m<<endl;
co

break是退出while循环的意思。while(cin>>k)当输入值与k的类型不匹配时,不执行while中的语句,直接退出while。

for (i=0;i<100;i++)
while(cin >> k)
{
a[i]=k;
break;
}

这段循环中,break是结束while下的循环并跳出。还有就是,while(cin>>k)当输入值与k的类型不匹配时 ,会执行。因为这时候系统会把你输入的值强制转换为你先定义的变量的类型。