测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看
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章基础知识自测。