64,281
社区成员
发帖
与我相关
我的任务
分享
void Chapter_6::func_2()
{
double ipt[10] = {0};
double average;
double sum = 0;
int iptnum = 0;
int count = 0;
cin >> ipt[iptnum];
while(!isdigit(ipt[iptnum]))
{
sum += ipt[iptnum];
iptnum++;
if(10 == iptnum)
break;
cin >> ipt[iptnum];
}
average = sum/iptnum;
for(int i = 0; i < iptnum; i++)
{
if(ipt[i] > average)
count++;
cout << ipt[i] << ' ';
}
cout << "\nthe iptnum: " << iptnum;
cout << "\nthe average is " << average << " and there are " << count << " digiter(s) is(are) bigger than the average.";
}
int main()
{
int test = 1;
char test1 = 'b';
cout << "input an int: ";
cin >> test;
cout << "\ninput a char: ";
cin >> test1;
cout << "\nint: " << test << ' ' << "char: " << test1;
return 0;
}
结果是他根本不给我第二次输入的机会...
[/quote]对于你这个问题,说实话我没有试过。因此我将你的代码调试了一遍然后做了一个推论,你可以看看。首先用户输入的数据先在缓存流,然后在存在相应的变量中,最后取出显示。那么你在输入a的时候,你向系统申请的是存储int型的空间,那么由于数据类型不对,这个操作是错误的,C++ I/O专门有一种处理错误的错误机制,比如cerr等,它发现非法输入,然后就禁止你继续输入,转而执行其他的语句。至于为什么int你赋的初始值为1,结果输出却是0,这很简单,因为你赋值非法,所以它只能返回你一个该类型的默认值(int类型的默认构造函数,int初始值就是0),而b的值由于没有输入当然就没改变了
这是我的个人推测,你可以参考参考。有兴趣一起学C++吧,我最近的博客都有分享小知识[/quote]
感谢有心测试~
int main()
{
int test = 1;
char test1 = 'b';
cout << "input an int: ";
cin >> test;
cout << "\ninput a char: ";
cin >> test1;
cout << "\nint: " << test << ' ' << "char: " << test1;
return 0;
}
结果是他根本不给我第二次输入的机会...
[/quote]对于你这个问题,说实话我没有试过。因此我将你的代码调试了一遍然后做了一个推论,你可以看看。首先用户输入的数据先在缓存流,然后在存在相应的变量中,最后取出显示。那么你在输入a的时候,你向系统申请的是存储int型的空间,那么由于数据类型不对,这个操作是错误的,C++ I/O专门有一种处理错误的错误机制,比如cerr等,它发现非法输入,然后就禁止你继续输入,转而执行其他的语句。至于为什么int你赋的初始值为1,结果输出却是0,这很简单,因为你赋值非法,所以它只能返回你一个该类型的默认值(int类型的默认构造函数,int初始值就是0),而b的值由于没有输入当然就没改变了
这是我的个人推测,你可以参考参考。有兴趣一起学C++吧,我最近的博客都有分享小知识[/quote]
没错应该就是这样吧
也可以通过cin.clear()来继续输入
int main()
{
int test = 1;
char test1 = 'b';
cout << "input an int: ";
cin >> test;
cout << "\ninput a char: ";
cin >> test1;
cout << "\nint: " << test << ' ' << "char: " << test1;
return 0;
}
结果是他根本不给我第二次输入的机会...
[/quote]对于你这个问题,说实话我没有试过。因此我将你的代码调试了一遍然后做了一个推论,你可以看看。首先用户输入的数据先在缓存流,然后在存在相应的变量中,最后取出显示。那么你在输入a的时候,你向系统申请的是存储int型的空间,那么由于数据类型不对,这个操作是错误的,C++ I/O专门有一种处理错误的错误机制,比如cerr等,它发现非法输入,然后就禁止你继续输入,转而执行其他的语句。至于为什么int你赋的初始值为1,结果输出却是0,这很简单,因为你赋值非法,所以它只能返回你一个该类型的默认值(int类型的默认构造函数,int初始值就是0),而b的值由于没有输入当然就没改变了
这是我的个人推测,你可以参考参考。有兴趣一起学C++吧,我最近的博客都有分享小知识
int main()
{
int test = 1;
char test1 = 'b';
cout << "input an int: ";
cin >> test;
cout << "\ninput a char: ";
cin >> test1;
cout << "\nint: " << test << ' ' << "char: " << test1;
return 0;
}