需求分析:
1.提示选择英里转公里还是公里转英里,输入1调用英里转公里,输入2调用公里转英里,输入其他提示错误重输
2.英里转公里函数,提示输入英里,执行运算kilometer=mile*1.609,返回带有单位的结果
3.公里转英里函数,提示输入公里,执行运算mile=kilometer/1.609,返回带有单位的结果
流程设计与测试用例:
代码实现:
int mile_kilometer_conversion()
{
while (1) {
int i = 0;
cout << "英里转公里输入“1”,公里转英里输入“2”\n";
cin >> i;
cin.clear();
cin.ignore(1024, '\n');
while ((i != 1) && (i != 2)) {
cout << "输入不合法,请重新输入:\n";
cout << "英里转公里输入“1”,公里转英里输入“2”\n";
cin >> i;
//cout << cin.rdstate() << "\n"; 查询错误标识符
cin.clear(); //改变错误标识符
//cin.sync(); //在vs2017以上版本执行失败,由cin.ignore()代替
cin.ignore(1024, '\n'); //清空输入流
}
if (i == 1)
mile_to_kilometer();
else//i==2
kilometer_to_mile();
}
return 0;
}
调用函数
int mile_to_kilometer() { //mile_kilometer_conversion()的调用函数
cout << "输入要换算的英里数\n";
double mile;
cin >> mile;
while(cin.fail())
{
cout << "请仅输入数字,单位:英里\n";
cin.clear();
cin.ignore(1024, '\n');
cin >> mile;
}
double km;
km = mile * 1.609;
cout << mile << "英里=" << km << "公里\n";
cin.clear();
cin.ignore(1024, '\n');
return 0;
}
int kilometer_to_mile() { //mile_kilometer_conversion()的调用函数
cout << "输入要换算的公里数\n";
double kilometer;
cin >> kilometer;
while(cin.fail())
{
cout << "请仅输入数字,单位:公里\n";
cin.clear();
cin.ignore(1024, '\n');
cin >> kilometer;
}
double mile;
mile = kilometer / 1.609;
cout << kilometer << "公里=" << mile << "英里\n";
cin.clear();
cin.ignore(1024, '\n');
return 0;
}
实现效果:
完成功能实现。
在功能选择时输入1.5进行测试,依然可以按照1进行执行;
当输入为数字+字母时,会读取第一个字母之前出现的数字作为输入。