求助,如图。

mittwyc 2016-03-24 03:45:48

如图。
...全文
146 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
mittwyc 2016-03-24
  • 打赏
  • 举报
回复
引用 8 楼 u010165006 的回复:
[quote=引用 6 楼 mittwyc 的回复:] [quote=引用 3 楼 u010165006 的回复:] 用getline和atoi可否?
啥意思0.0?[/quote] getline输入一个字符串,atoi把字符串转换为整数[/quote] 试啦半天 不会orz。
mittwyc 2016-03-24
  • 打赏
  • 举报
回复
引用 9 楼 qq423399099 的回复:
[quote=引用 7 楼 mittwyc 的回复:]
[quote=引用 5 楼 mittwyc 的回复:]
[quote=引用 4 楼 qq423399099 的回复:]
[quote=引用 2 楼 mittwyc 的回复:]
[quote=引用 1 楼 qq423399099 的回复:]
当cin尝试将输入的字符串读为int型数据失败后,会产生一个错误状态--cin.fail().而要用cin读取输入流中的数据,输入流必须处于无错误状态。由于错误状态的存在,后续的cin都会出错
cin.clear();是用来更改cin的状态标示符的。
cin.sync();是用来清除缓存区的数据流的。
楼主在while循环中加入这两句就好了

while(int(num/10000)!=0)
{
cout << "请输入一个不多于5位的正整数:";
cin>>num;
cin.clear();
cin.sync();
}



引用 1 楼 qq423399099 的回复:
当cin尝试将输入的字符串读为int型数据失败后,会产生一个错误状态--cin.fail().而要用cin读取输入流中的数据,输入流必须处于无错误状态。由于错误状态的存在,后续的cin都会出错
cin.clear();是用来更改cin的状态标示符的。
cin.sync();是用来清除缓存区的数据流的。
楼主在while循环中加入这两句就好了

while(int(num/10000)!=0)
{
cout << "请输入一个不多于5位的正整数:";
cin>>num;
cin.clear();
cin.sync();
}



改了之后成这样了
还有请问cin的状态标示符和缓存区的数据流都是啥 为啥要用这2个 查不到[/quote]
就应该这样啊,你没有输入正确的正整数,所以让你重复输入啊
(↑不是 我是说它第一遍的时候叫人重新输入的那个自己出现了两次0.0后面才是一次)



cin.clear();是用来更改cin的状态标示符的。因为之前读错已经产生了一个错误状态--cin.fail().
cin.sync();是用来清除缓存区的数据流的。清除输入缓冲区中错误的数据[/quote]
(↑谢谢


[/quote]




就是想问为啥它会是2排 有没有办法去掉一排0.0[/quote]
你把你cout后面那个\n去掉呗[/quote]



发现了,是顺序错了=。=
ooolinux 2016-03-24
  • 打赏
  • 举报
回复
引用 6 楼 mittwyc 的回复:
[quote=引用 3 楼 u010165006 的回复:] 用getline和atoi可否?
啥意思0.0?[/quote] getline输入一个字符串,atoi把字符串转换为整数
mittwyc 2016-03-24
  • 打赏
  • 举报
回复
引用 5 楼 mittwyc 的回复:
[quote=引用 4 楼 qq423399099 的回复:] [quote=引用 2 楼 mittwyc 的回复:] [quote=引用 1 楼 qq423399099 的回复:] 当cin尝试将输入的字符串读为int型数据失败后,会产生一个错误状态--cin.fail().而要用cin读取输入流中的数据,输入流必须处于无错误状态。由于错误状态的存在,后续的cin都会出错 cin.clear();是用来更改cin的状态标示符的。 cin.sync();是用来清除缓存区的数据流的。 楼主在while循环中加入这两句就好了

while(int(num/10000)!=0)
{
	cout << "请输入一个不多于5位的正整数:";
	cin>>num;
	cin.clear();
	cin.sync();
}
引用 1 楼 qq423399099 的回复:
当cin尝试将输入的字符串读为int型数据失败后,会产生一个错误状态--cin.fail().而要用cin读取输入流中的数据,输入流必须处于无错误状态。由于错误状态的存在,后续的cin都会出错 cin.clear();是用来更改cin的状态标示符的。 cin.sync();是用来清除缓存区的数据流的。 楼主在while循环中加入这两句就好了

while(int(num/10000)!=0)
{
	cout << "请输入一个不多于5位的正整数:";
	cin>>num;
	cin.clear();
	cin.sync();
}
改了之后成这样了 还有请问cin的状态标示符和缓存区的数据流都是啥 为啥要用这2个 查不到[/quote] 就应该这样啊,你没有输入正确的正整数,所以让你重复输入啊 (↑不是 我是说它第一遍的时候叫人重新输入的那个自己出现了两次0.0后面才是一次) cin.clear();是用来更改cin的状态标示符的。因为之前读错已经产生了一个错误状态--cin.fail(). cin.sync();是用来清除缓存区的数据流的。清除输入缓冲区中错误的数据[/quote] (↑谢谢) [/quote] 就是想问为啥它会是2排 有没有办法去掉一排0.0
小灸舞 2016-03-24
  • 打赏
  • 举报
回复
引用 7 楼 mittwyc 的回复:
[quote=引用 5 楼 mittwyc 的回复:] [quote=引用 4 楼 qq423399099 的回复:] [quote=引用 2 楼 mittwyc 的回复:] [quote=引用 1 楼 qq423399099 的回复:] 当cin尝试将输入的字符串读为int型数据失败后,会产生一个错误状态--cin.fail().而要用cin读取输入流中的数据,输入流必须处于无错误状态。由于错误状态的存在,后续的cin都会出错 cin.clear();是用来更改cin的状态标示符的。 cin.sync();是用来清除缓存区的数据流的。 楼主在while循环中加入这两句就好了

while(int(num/10000)!=0)
{
	cout << "请输入一个不多于5位的正整数:";
	cin>>num;
	cin.clear();
	cin.sync();
}
引用 1 楼 qq423399099 的回复:
当cin尝试将输入的字符串读为int型数据失败后,会产生一个错误状态--cin.fail().而要用cin读取输入流中的数据,输入流必须处于无错误状态。由于错误状态的存在,后续的cin都会出错 cin.clear();是用来更改cin的状态标示符的。 cin.sync();是用来清除缓存区的数据流的。 楼主在while循环中加入这两句就好了

while(int(num/10000)!=0)
{
	cout << "请输入一个不多于5位的正整数:";
	cin>>num;
	cin.clear();
	cin.sync();
}
改了之后成这样了 还有请问cin的状态标示符和缓存区的数据流都是啥 为啥要用这2个 查不到[/quote] 就应该这样啊,你没有输入正确的正整数,所以让你重复输入啊 (↑不是 我是说它第一遍的时候叫人重新输入的那个自己出现了两次0.0后面才是一次) cin.clear();是用来更改cin的状态标示符的。因为之前读错已经产生了一个错误状态--cin.fail(). cin.sync();是用来清除缓存区的数据流的。清除输入缓冲区中错误的数据[/quote] (↑谢谢) [/quote] 就是想问为啥它会是2排 有没有办法去掉一排0.0[/quote] 你把你cout后面那个\n去掉呗
mittwyc 2016-03-24
  • 打赏
  • 举报
回复
引用 3 楼 u010165006 的回复:
用getline和atoi可否?
啥意思0.0?
mittwyc 2016-03-24
  • 打赏
  • 举报
回复
引用 4 楼 qq423399099 的回复:
[quote=引用 2 楼 mittwyc 的回复:] [quote=引用 1 楼 qq423399099 的回复:] 当cin尝试将输入的字符串读为int型数据失败后,会产生一个错误状态--cin.fail().而要用cin读取输入流中的数据,输入流必须处于无错误状态。由于错误状态的存在,后续的cin都会出错 cin.clear();是用来更改cin的状态标示符的。 cin.sync();是用来清除缓存区的数据流的。 楼主在while循环中加入这两句就好了

while(int(num/10000)!=0)
{
	cout << "请输入一个不多于5位的正整数:";
	cin>>num;
	cin.clear();
	cin.sync();
}
引用 1 楼 qq423399099 的回复:
当cin尝试将输入的字符串读为int型数据失败后,会产生一个错误状态--cin.fail().而要用cin读取输入流中的数据,输入流必须处于无错误状态。由于错误状态的存在,后续的cin都会出错 cin.clear();是用来更改cin的状态标示符的。 cin.sync();是用来清除缓存区的数据流的。 楼主在while循环中加入这两句就好了

while(int(num/10000)!=0)
{
	cout << "请输入一个不多于5位的正整数:";
	cin>>num;
	cin.clear();
	cin.sync();
}
改了之后成这样了 还有请问cin的状态标示符和缓存区的数据流都是啥 为啥要用这2个 查不到[/quote] 就应该这样啊,你没有输入正确的正整数,所以让你重复输入啊 (↑不是 我是说它第一遍的时候叫人重新输入的那个自己出现了两次0.0后面才是一次) cin.clear();是用来更改cin的状态标示符的。因为之前读错已经产生了一个错误状态--cin.fail(). cin.sync();是用来清除缓存区的数据流的。清除输入缓冲区中错误的数据[/quote] (↑谢谢
小灸舞 2016-03-24
  • 打赏
  • 举报
回复
引用 2 楼 mittwyc 的回复:
[quote=引用 1 楼 qq423399099 的回复:] 当cin尝试将输入的字符串读为int型数据失败后,会产生一个错误状态--cin.fail().而要用cin读取输入流中的数据,输入流必须处于无错误状态。由于错误状态的存在,后续的cin都会出错 cin.clear();是用来更改cin的状态标示符的。 cin.sync();是用来清除缓存区的数据流的。 楼主在while循环中加入这两句就好了

while(int(num/10000)!=0)
{
	cout << "请输入一个不多于5位的正整数:";
	cin>>num;
	cin.clear();
	cin.sync();
}
引用 1 楼 qq423399099 的回复:
当cin尝试将输入的字符串读为int型数据失败后,会产生一个错误状态--cin.fail().而要用cin读取输入流中的数据,输入流必须处于无错误状态。由于错误状态的存在,后续的cin都会出错 cin.clear();是用来更改cin的状态标示符的。 cin.sync();是用来清除缓存区的数据流的。 楼主在while循环中加入这两句就好了

while(int(num/10000)!=0)
{
	cout << "请输入一个不多于5位的正整数:";
	cin>>num;
	cin.clear();
	cin.sync();
}
改了之后成这样了 还有请问cin的状态标示符和缓存区的数据流都是啥 为啥要用这2个 查不到[/quote] 就应该这样啊,你没有输入正确的正整数,所以让你重复输入啊 cin.clear();是用来更改cin的状态标示符的。因为之前读错已经产生了一个错误状态--cin.fail(). cin.sync();是用来清除缓存区的数据流的。清除输入缓冲区中错误的数据
ooolinux 2016-03-24
  • 打赏
  • 举报
回复
用getline和atoi可否?
mittwyc 2016-03-24
  • 打赏
  • 举报
回复
引用 1 楼 qq423399099 的回复:
当cin尝试将输入的字符串读为int型数据失败后,会产生一个错误状态--cin.fail().而要用cin读取输入流中的数据,输入流必须处于无错误状态。由于错误状态的存在,后续的cin都会出错
cin.clear();是用来更改cin的状态标示符的。
cin.sync();是用来清除缓存区的数据流的。
楼主在while循环中加入这两句就好了

while(int(num/10000)!=0)
{
cout << "请输入一个不多于5位的正整数:";
cin>>num;
cin.clear();
cin.sync();
}



引用 1 楼 qq423399099 的回复:
当cin尝试将输入的字符串读为int型数据失败后,会产生一个错误状态--cin.fail().而要用cin读取输入流中的数据,输入流必须处于无错误状态。由于错误状态的存在,后续的cin都会出错
cin.clear();是用来更改cin的状态标示符的。
cin.sync();是用来清除缓存区的数据流的。
楼主在while循环中加入这两句就好了

while(int(num/10000)!=0)
{
cout << "请输入一个不多于5位的正整数:";
cin>>num;
cin.clear();
cin.sync();
}



改了之后成这样了
还有请问cin的状态标示符和缓存区的数据流都是啥 为啥要用这2个 查不到
小灸舞 2016-03-24
  • 打赏
  • 举报
回复
当cin尝试将输入的字符串读为int型数据失败后,会产生一个错误状态--cin.fail().而要用cin读取输入流中的数据,输入流必须处于无错误状态。由于错误状态的存在,后续的cin都会出错 cin.clear();是用来更改cin的状态标示符的。 cin.sync();是用来清除缓存区的数据流的。 楼主在while循环中加入这两句就好了

while(int(num/10000)!=0)
{
	cout << "请输入一个不多于5位的正整数:";
	cin>>num;
	cin.clear();
	cin.sync();
}

64,318

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧