关于C++里面的温度转换题
#include<iostream>using namespace std;
int main()
{
const int TEMP_ADD = 32;
const float TEMP_ST = 9.0/5.0;
double T_in,T_out=0;
char N_in,N_out='e';
bool flag=false;
while(!flag)
{
cout<<"请按照【xx.xx C】的形式或者【xx.xx F】的形式进行输入"<<endl;
cin>>T_in>>N_in;
switch(N_in)
{
case'c':
case'C':T_out=T_in*TEMP_ST+TEMP_ADD;
N_out='F';
flag=true;
break;
case'f':
case'F':T_out=(T_in-TEMP_ADD)/TEMP_ST;
N_out='C';
flag=true;
break;
default:cout<<"输入错误,是否重新输入?";
cin.ignore(100,'\n');
if(cin.get()=='n'||'N')
{
flag=true;
}
break;
}
}
cout<<T_in<<N_in<<'='<<T_out<<N_out<<endl;
cout<<"按下任一键退出"<<endl;
cin.ignore(100,'\n');
cin.get();
return 0;
}
如何在输入错误后可以输入一个n或N结束循环 或者一个y或Y 重新输入数值呢??
if(cin.get()=='n'||'N')
'N'为一真值,此if恒为真,把这里条件判断改一下就可以了
你这样写的意思是
cin.get()=='n' 为真
或'N'为真,但'N'的ascii码是大于0的,即恒为真 fc1735 发表于 2017-3-16 20:39
if(cin.get()=='n'||'N')
'N'为一真值,此if恒为真,把这里条件判断改一下就可以了
你这样写的意思是
代码改成
c=cin.get();
if(c=='n'||'N')
{
flag=true;
}
输入错误后还是不行,程序直接结束,好像直接跳过cin.get()这一项了 改成
if(c=='n'||c=='N')
{
flag=true;
}
{:10_262:} fc1735 发表于 2017-3-17 04:24
改成
if(c=='n'||c=='N')
{
的确,不过还是不行,卡在while语句里出不去,似乎程序进入走到cin.get()那里的时候直接略过了??? fc1735 发表于 2017-3-17 04:24
改成
if(c=='n'||c=='N')
{
就是随便一个不符合的输入,程序到cin.get的时候不会让你再重键盘上输入一个字符,而是直接走到结束了... cin.clear();
cin.ignore(100,'\n');
if(c=='n'||c=='N')
{
flag=true;
}
........
if(N_out!='e') cout<<T_in<<N_in<<'='<<T_out<<N_out<<endl;
加上红色的部分 fc1735 发表于 2017-3-17 12:53
cin.clear();
cin.ignore(100,'\n');
if(c=='n'||c=='N')
可以了!谢谢你的帮助。
页:
[1]