5-1 厘米换算英尺英寸 (15分)

本文介绍了一种将厘米转换为英制长度单位英尺和英寸的方法,并提供了一个简单的C语言程序实现。


如果已知英制长度的英尺footfoot和英寸inchinch的值,那么对应的米是(foot+inch/12)\times 0.3048(foot+inch/12)×0.3048。现在,如果用户输入的是厘米数,那么对应英制长度的英尺和英寸是多少呢?别忘了1英尺等于12英寸。

输入格式:

输入在一行中给出1个正整数,单位是厘米。

输出格式:

在一行中输出这个厘米数对应英制长度的英尺和英寸的整数值,中间用空格分开。

输入样例:

170

输出样例:

5 6


解答:

#include <stdio.h>

int main(){
	float input;
	int inch, foot;
	scanf("%f", &input);
	input /= 100;
	foot = input/0.3048;
	inch = (input/0.3048 - foot) *12;
	printf("%d %d", foot, inch);

	return 0;
}






我们需要将 **厘米** 转换为对应的 **英尺英寸**,其中: - 1 英尺 = 12 英寸 - 1 米 = 100 厘米 - 1 米 = (foot + inch/12) × 0.3048 也就是说: > $$ \text{米} = (\text{英尺} + \frac{\text{英寸}}{12}) \times 0.3048 $$ 反过来推导: ### 第一步:把厘米转成“米” 比如输入 `x` 厘米 → 就是 `x / 100` 米 然后我们反向求出总英尺数(可以是小数): $$ \text{total\_feet} = \frac{x / 100}{0.3048} = \frac{x}{100 \times 0.3048} = \frac{x}{30.48} $$ 这个 `total_feet` 是一个浮点数,例如:3.75 表示 3 英尺 + 0.75 英尺 = 3 英尺 9 英寸(因为 0.75×12=9) ### 第二步:解 total_feet - 整数部英尺(foot) - 小数部 × 12 → 英寸(inch),取其整数部(题目要求输出整数值) --- ### ✅ 解题步骤总结: 1. 输入厘米数 `cm` 2. 计算总英尺数:`total_feet = cm / 30.48` 3. 英尺:`foot = (int)total_feet`(取整数部) 4. 剩下的小数部换算英寸:`inch = (total_feet - foot) * 12` 5. 取英寸的整数部:`inch_int = (int)inch` 6. 输出 `foot` 和 `inch_int` 注意:由于浮点精度问题,建议加上一点容错处理,但本题数据简单可忽略。 --- ### ✅ C 语言代码实现: ```c #include <stdio.h> int main() { int cm; scanf("%d", &cm); // 将厘米转换为总英尺数(浮点) double total_feet = cm / 30.48; // 提取英尺的整数部 int foot = (int)total_feet; // 计算剩余的小数部对应的英寸 double inches_decimal = (total_feet - foot) * 12; int inch = (int)inches_decimal; // 只取整数部 // 输出结果,用空格隔 printf("%d %d\n", foot, inch); return 0; } ``` --- ### 🔍 示例验证: 输入: ``` 170 ``` 计算过程: - `total_feet = 170 / 30.48 ≈ 5.577` - `foot = 5` - `(5.577 - 5) * 12 ≈ 0.577 * 12 ≈ 6.924` - `inch = 6` 输出: ``` 5 6 ``` ✅ 正确! 再看另一个例子:`cm = 30.48` → 应该是 1 英尺 0 英寸 - `total_feet = 30.48 / 30.48 = 1.0` - foot = 1, inch = 0 → 输出 `1 0` --- ### ⚠️ 注意事项: - 题目要求输出的是 **整数值**,且 **英寸 < 12** - 我们通过先取整英尺,再算剩余英寸的方式自然满足条件 - 不需要额外处理进位,因为 `total_feet` 的小数部乘以 12 必然小于 12 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值