将字母输入给int型变量的情况
洛谷P1957口算练习题,输入的数据可能是三个(第一个是字符,后两个是整型) 也可能是两个(都是整型)。
原因:cin有一个特性,如果定义了一个int型的变量,输入这个变量时就会检测输入的是不是数字。如果程序发现用户输入了错误内容时(输入的不是int型),程序就会锁住cin。
如何解决:判断是否输入错误,若输入错误就执行 cin.clear(); ,以重置cin状态,使程序能继续读入其他数据。这时输入的错误数据还会在缓冲区中,继续输入数据的话,还是会从这个数据开始读取。
例如:
int a = 1, b = 2, c = 3; cin >> a >> b >> c; cout << a << << b << << c <<endl; //输入:6 a 8 //结果:6 0 3
对该题:
int num[2]; char k; //对输入两个或三个类型的处理 if(!(cin>>num[0])) //若读入的数据不是int型 { cin.clear(); //解锁 //先把刚刚输入的数据存到char型变量中,cin才不会再次被锁 cin>>k>>num[0]>>num[1]; } else //若输入的第一个数据是int型,则继续输入下一个 cin>>num[1];
下一篇:
解决Python格式化输出的对齐问题