初学者恳请能手解决 有关问题虽小,但常常困扰
菜鸟恳请能手解决 问题虽小,但常常困扰
比如下面简单的“猜岁”范例程序,按程序本应输入浮点数或整数,这样就能正常运行下去。但如果不小心(或特意)输入了含字母的字符串(如输入9k),就进入死循环,须关闭程序。请高手修改下面程序,达到输入字母字符串时,无须关闭程序,还能继续输入且正常运行下去:
#include <iostream.h>
#include <stdio.h>
void main()
{
const float sui=25.5;
float cai;
in: cout < < "请从键盘输入你猜的岁数: "; cin> > cai;
while(cai <0)
{
cout < < "时光能倒流吗? 请重新输入你猜的岁数: "; cin> > cai;
}
if(cai==sui)
cout < < " 对!岁数是 " < <midi < <endl
< <endl;
if(cai> sui)
{
cout < < "过大了。 " < <endl
< <endl;
goto in;
}
if(cai <sui&&cai> =0)
{
cout < < "小了。 " < <endl
< <endl;
goto in;
}
}
------解决方案--------------------
对输入进行校验就可以了 ~
------解决方案--------------------
供参考一个:
#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;
}
比如下面简单的“猜岁”范例程序,按程序本应输入浮点数或整数,这样就能正常运行下去。但如果不小心(或特意)输入了含字母的字符串(如输入9k),就进入死循环,须关闭程序。请高手修改下面程序,达到输入字母字符串时,无须关闭程序,还能继续输入且正常运行下去:
#include <iostream.h>
#include <stdio.h>
void main()
{
const float sui=25.5;
float cai;
in: cout < < "请从键盘输入你猜的岁数: "; cin> > cai;
while(cai <0)
{
cout < < "时光能倒流吗? 请重新输入你猜的岁数: "; cin> > cai;
}
if(cai==sui)
cout < < " 对!岁数是 " < <midi < <endl
< <endl;
if(cai> sui)
{
cout < < "过大了。 " < <endl
< <endl;
goto in;
}
if(cai <sui&&cai> =0)
{
cout < < "小了。 " < <endl
< <endl;
goto in;
}
}
------解决方案--------------------
对输入进行校验就可以了 ~
------解决方案--------------------
供参考一个:
#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;
}