L1-031 到底是不是太胖了
L1-031 到底是不是太胖了 - 团体程序设计天梯赛-练习集 (pintia.cn)
解题思路
-
输入数据
-
首先从输入中读取正整数
n
,表示要处理的人数。 -
然后通过循环
n
次,每次读取一个人的身高h
(单位:厘米)和实际体重w
(单位:市斤)。
-
-
计算标准体重
-
根据题目中给出的标准体重计算公式,将身高
h
减去 100 后乘以 0.9 得到以公斤为单位的标准体重,再乘以 2 转换为市斤。将计算结果存储在变量bz
中。
-
-
判断身材状况
-
计算实际体重
w
与标准体重bz
的差值,即w - bz
。 -
根据差值与标准体重的 10%(即bz * 0.1)的关系来判断身材状况:
-
如果
w - bz <= -bz * 0.1
,说明实际体重比标准体重小超过 10%,输出 "You are tai shou le!"。 -
如果
w - bz >= bz * 0.1
,说明实际体重比标准体重大超过 10%,输出 "You are tai pang le!"。 -
如果差值在标准体重的 10% 以内,即
-bz * 0.1 < w - bz < bz * 0.1
,输出 "You are wan mei!"。
-
-
-
循环处理
-
重复上述步骤,直到处理完
n
个人的数据。
-
代码
#include<bits/stdc++.h>
using namespace std;
int main(){
int n;
cin>>n;
int h,w;
for(int i=0;i<n;i++){
cin>>h>>w;
int bz=(h-100)*0.9*2;
if(w-bz<=-bz*0.1){
cout<<"You are tai shou le!"<<endl;
}else if(w-bz>=bz*0.1){
cout<<"You are tai pang le!"<<endl;
}else{
cout<<"You are wan mei!"<<endl;
}
}
return 0;
}
注意
如果有测试点没有过,以下是一些可能的问题:
-
数据类型选择
-
代码中使用
int
类型来存储身高h
、体重w
和标准体重bz
。虽然在本题中输入的身高和体重是整数,但在计算标准体重(h - 100) * 0.9 * 2
时,由于存在小数乘法0.9
,使用int
类型会导致小数部分被截断,可能影响计算的准确性。如果想要更精确的计算,可以考虑使用double
类型。
-
-
条件判断逻辑
-
代码中的条件判断逻辑基本正确,但在处理边界情况时,可能存在一些潜在的问题。例如,当
w - bz
恰好等于-bz * 0.1
或bz * 0.1
时,严格按照题目要求,完美身材的条件应该是|真实体重 − 标准体重| < 标准体重×10%
,即不包含等于的情况。虽然在本题中可能测试数据没有覆盖到这种边界情况,但从逻辑严谨性角度考虑,可以将条件判断改为更严格的形式,如w - bz < -bz * 0.1
和w - bz > bz * 0.1
来判断太瘦和太胖的情况,中间部分判断为完美身材。
-
-
输入输出检查
-
确保输入的数据符合题目中规定的范围,即
120 < h < 200
和50 < w <= 300
。如果输入的数据超出这个范围,程序的行为可能是未定义的,可能导致错误的结果。同时,检查输出的字符串格式是否与题目要求完全一致,包括大小写和标点符号等。
-