B40
练习:第几秒、水仙花数、温度转换
引入
章前总览 三道真题练习单分支与双分支:上午下午换算秒;判断水仙花数;华氏过高则提示。
三道练习:
- 第几秒:下午再加 12 小时
- 水仙花:立方和是否等于本身
- 温度:f>212 则提示过高
1 练习1:当天的第几秒
输入时、分、秒和一个字符(A=上午,P=下午),输出是当天的第几秒。
参考代码
#include <iostream>
using namespace std;
int main() {
int h, m, s;
char noon;
cin >> h >> m >> s >> noon;
int sec = h * 3600 + m * 60 + s;
if (noon == 'P')
sec += 12 * 3600;
cout << sec << endl;
return 0;
}
- 样例:0 0 0 A → 0;11 59 59 P → 86399。
2 练习2:水仙花数
输入三位数字 a b c(a≠0),判断三位数 abc 是否满足各位立方和等于本身。
参考代码
#include <iostream>
using namespace std;
int main() {
int a, b, c;
cin >> a >> b >> c;
int s = a*a*a + b*b*b + c*c*c;
int num = a*100 + b*10 + c;
if (s == num)
cout << "Yes" << endl;
else
cout << "No" << endl;
return 0;
}
- 样例:1 5 3 → Yes(153);1 0 0 → No。
3 练习3:温度转换
输入开尔文温度 K:C = K−273.15,F = C×1.8+32。若 F>212 输出提示,否则输出 C 和 F(保留两位)。
参考代码
#include <iostream>
#include <iomanip>
using namespace std;
int main() {
double k;
cin >> k;
double c = k - 273.15;
double f = 32 + c * 1.8;
if (f > 212)
cout << "Temperature is too high!" << endl;
else
cout << fixed << setprecision(2) << c << " " << f << endl;
return 0;
}
- 样例:412.00 → Temperature is too high!;173.56 → -99.59 -147.26。
小结
分支题套路:
先算公共结果 → 再 if 决定输出什么
单分支:只在特殊情况多做一步
双分支:Yes/No、两种输出格式
✓
里程碑达成:
下一节做第7章基础知识自测。