【电子协会1级真题】2024年09月T3: 最佳情侣身高差

题目描述

2024年09月第三题是: 最佳情侣身高差

专家通过多组情侣研究数据发现,最佳的情侣身高差遵循着一个公式:(女方的身高)× 1.09 =(男方的身高)。如果符合,你俩的身高差不管是牵手、拥抱、接吻,都是最和谐的差度。

下面就请你写个程序,为任意一位用户计算他/她的情侣的最佳身高。

输入

输入第一行给出正整数 N(≤ 10),为前来查询的用户数。 

随后 N 行,每行按照“性别 身高”的格式给出前来查询的用户的性别和身高,其中“性别”为“F”表示女性、“M”表示男性;“身高”为区间 [1.0, 3.0] 之间的实数。

输出

对每一个查询,在一行中为该用户计算出其情侣的最佳身高,保留小数点后2位。

样例输入
2
M 1.75
F 1.8
样例输出
1.61
1.96

 接下来,Talk is cheap. Show me the code.

#include <iostream>
#include <cmath>
#include <stdio.h>
#include <bits/stdc++.h>
using namespace std;
#define N 1005
int a[N];

int main() {
    int n;
    cin >> n;

    while (n--) {
        char g;
        double h;
        cin >> g >> h;

        if (g == 'M') {
            cout << fixed << setprecision(2) << h / 1.09 << endl;
        } else if (g == 'F') {
            cout << fixed << setprecision(2) << h * 1.09 << endl;
        }
    }


    return 0;
}

分析一下

1. 头文件包含与命名空间

  • 包含的头文件
    • #include <iostream>:标准输入输出流,用于cincout
    • #include <cmath>:数学函数库(如sqrtpow),但本代码未使用。
    • #include <stdio.h>:C风格的输入输出库(如printf),但代码中未使用。
    • #include <bits/stdc++.h>:非标准万能头文件,包含几乎所有C++标准库,但可能导致编译时间增加和可移植性问题(如不支持MSVC编译器)。
  • 命名空间
    • using namespace std;:简化了std命名空间的使用(如直接使用cout而非std::cout),但可能引发命名冲突,尤其在大型项目中不推荐。

2. 变量与常量定义

  • 宏定义
    • #define N 1005:定义了一个数组大小的常量,但代码中未使用该数组a[N],属于冗余代码。
  • 数组定义
    • int a[N];:定义了一个大小为1005的整型数组,但未在代码中调用,可能是遗留代码或误写。

3. 主函数逻辑

输入与循环
  • cin >> n;:读取测试用例数量n
  • while (n--):循环处理每个测试用例。
条件判断与计算
  • 输入字符与数值
    • char g; double h;:读取字符g和双精度数h
    • 条件分支
      • g == 'M':输出h / 1.09,保留两位小数(如输入M 100,输出91.74)。
      • g == 'F':输出h * 1.09,保留两位小数(如输入F 100,输出109.00)。
输出格式控制
  • fixedsetprecision(2):确保浮点数以固定格式输出,小数点后保留两位(如122.00而非科学计数法)。

4. 潜在问题与改进建议

  1. 冗余代码
    • 数组a[N]未被使用,建议删除。
  2. 头文件冗余
    • <stdio.h><bits/stdc++.h>可能重复包含,且后者非标准,建议改用具体需要的头文件(如仅保留<iostream><fixed>相关的<iomanip>)。
  3. 命名空间风险
    • using namespace std;可能导致命名冲突,建议显式使用std::前缀。
  4. 输入验证缺失
    • 未对输入字符g进行有效性检查(如非MF时的处理),可能导致未定义行为。
    • 总结

      该代码的功能是根据输入的字符(MF)对数值进行不同计算并输出两位小数结果。核心逻辑清晰,但存在冗余代码和潜在问题。优化方向包括精简头文件、移除未使用的变量,并增强输入验证。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

呱呱呱~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值