菜鸟再请jixingzhong或其他高手修改代码
jixingzhong(瞌睡虫·星辰) ( ) 信誉:102 Blog 2007-1-30 12:16:54 得分: 15
供参考一个:
#include <string>
#include <sstream>
#include <iostream>
#include <cstdlib>
#include <cstdio>
using namespace std;
int main ()
{
const float sui=25.5;
float cai;
cout < < "请从键盘输入你猜的岁数: ";
in: string tmp;
getline(cin, tmp);
while(tmp.find_first_not_of( ".0123456789 ") != string::npos)
{
cout < < "你输入的数据有误,请确认,并重新输入! " < <endl;
cout < < "请从键盘输入你猜的岁数: ";
getline(cin, tmp);
}
istringstream str(tmp);
str> > cai;
while(cai <0)
{
cout < < "时光能倒流吗? 请重新输入你猜的岁数: ";
goto in;
}
if(cai==sui)
cout < < " 对!岁数是 " < <cai < <endl < <endl;
if(cai> sui)
{
cout < < "过大了。 " < <endl < <endl;
goto in;
}
if(cai <sui&&cai> =0)
{
cout < < "小了。 " < <endl < <endl;
goto in;
}
system( "PAUSE ");
return 0;
}
以上回复解决了我希望解决的死锁问题,领教受益,诚表谢意。还希望再指点修改,因为以上修改产生了新的不如意:第一次输入数据后,要按两次回车键才输出结果;之后每次输入数据,第一次回车后输出与实际相反的提示。
[解决办法]
if(cai==sui)
别的问题先不说,这句话是有问题的,浮点数是不能直接做相等比较的,应改为
if (cai - sui < 1.0e-5)
[解决办法]
竟然看到了goto .
[解决办法]
while(cai <0)
{
cout < < "时光能倒流吗? 请重新输入你猜的岁数: ";
goto in;
}
感觉if就够了啊。
[解决办法]
这个代码我调试过了,可以得出正确结果
#include <string>
#include <sstream>
#include <iostream>
#include <cstdlib>
#include <cstdio>
using namespace std;
int main ()
{
const float sui=25.5;
float cai;
cout < < "请从键盘输入你猜的岁数: ";
in: string tmp;
//getline(cin, tmp);
cin> > tmp;
while(tmp.find_first_not_of( ".0123456789 ") != string::npos)
{
cout < < "你输入的数据有误,请确认,并重新输入! " < <endl;
cout < < "请从键盘输入你猜的岁数: ";
getline(cin, tmp);
}
istringstream str(tmp);
str> > cai;
while(cai <0)
{
cout < < "时光能倒流吗? 请重新输入你猜的岁数: ";
goto in;
}
if(cai==sui)
cout < < " 对!岁数是 " < <cai < <endl < <endl;
if(cai> sui)
{
cout < < "过大了。 " < <endl < <endl;
goto in;
}
if((cai <sui) && (cai> =0))
{
cout < < "小了。 " < <endl < <endl;
goto in;
}
system( "PAUSE ");
return 0;
}
[解决办法]
//getline(cin, tmp);
cin> > tmp;
......