马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 一叶枫残 于 2021-2-8 18:03 编辑
温度转换程序(有防错误手段) #include <iostream>
using namespace std;
int main()
{
float tem;
char c,l;
cout << "请输入温度(摄氏度后面加C,华氏度后面加F):" << endl;
if ( cin >> tem )
{
while((c = cin.peek()) == ' ')
{
cin.get();
}
cin.get(); //把第一个字符去除
while((l = cin.peek()) == ' ') //如果有第二个字符,提取给l
{
cin.get();
}
if(( c == 'F' || c == 'f' ) && (int)l == 10)
{
cout << "输出的温度为:" << (tem - 32)/1.8 << 'C' << endl;
}
else if( (c == 'C' || c == 'c') && (int)l == 10 )
{
cout << "输出的华氏度为:" << tem * 1.8 + 32 << 'F' << endl;
}
else
{
cout << "输入错误;" << endl;
}
}
else
{
cout << "输入错误;" << endl;
}
cin.clear();
cin.ignore( 100 , '\n');
cout << "输入任意字符结束程序:" << endl;
cin.get();
return 0;
}
程序解读:
对于最外面的if ( cin >> tem ) else,判断的是输入的前面字符是否是数字
如果不是,输出错误else
{
cout << "输入错误;" << endl;
}
如果是数据:
tem提取了数字后进入一个while循环,用于清空空格字符并把遇到的第一个字符储存到 c 里面while((c = cin.peek()) == ' ')
{
cin.get();
}
然后用一个cin.get()把第一个字符给去掉,第二个while循环去除第一个字符后的空格字符,把除空格字符外遇到的第一个字符储存,如果没有遇到第二个字符,l 转换为整型( (int)l )默认值为10,给下面的if提供判断手段while((l = cin.peek()) == ' ')
{
cin.get();
}
接下来利用判断l和c的值来选择输出方式if(( c == 'F' || c == 'f' ) && (int)l == 10)
{
cout << "输出的温度为:" << (tem - 32)/1.8 << 'C' << endl;
}
else if( (c == 'C' || c == 'c') && (int)l == 10 )
{
cout << "输出的华氏度为:" << tem * 1.8 + 32 << 'F' << endl;
}
else
{
cout << "输入错误;" << endl;
}
到最后使用cin.clear()清空缓冲区,用ignore清空回车字符,给出提示后用cin.get()输入字符退出程序cin.clear();
cin.ignore( 100 , '\n');
cout << "输入任意字符结束程序:" << endl;
cin.get();
return 0;
|