gpt4 book ai didi

c - C中的简单单位转换器

转载 作者:太空宇宙 更新时间:2023-11-04 02:19:04 25 4
gpt4 key购买 nike

我为我的过程编程类(class)购买了“A Book on C”,我正在做一些练习。第 2 章练习 9 是关于设计可以使用盎司、磅、克和千克的单位转换器。

我编写的代码有效,但我真的认为它可以做得更简洁。使用嵌套的 if 语句似乎是一种困惑的方式。

此外,我注意到的一个问题是,如果在第 27 行向 scanf() 提供了一个字符或字符串,它将持续存在,然后传递给第 95 行的 scanf()。例如,如果您输入“y ” 作为要转换的值,程序将开始,而不允许用户回答“您要执行其他转换吗?”我该如何解决这个问题,以便在输入 NaN 时将其丢弃?

我的代码可以位于: http://pastebin.com/4tST0i7T

最佳答案

清理 if 结构的一种方法是将值从“fromUnit”转换为普通值,然后将其转换为“toUnit”。它通过只留下两个 if 结构来简化结构。 (它的扩展性也更好。)因此,它更像是:

if (!strcmp(fromUnit, "pound")) {  
tempval = input / 16;
} else if (!strcmp(fromUnit, "gram") == 0) {
tempval = input * OUNCESTOGRAMS;
}

if (!strcmp(toUnit, "pound")) {
output = tempval * 16;
} else if (!strcmp(toUnit, "gram")) {
output = tempval / OUNCESTOGRAMS;
}

诚然,数学不正确,只是为了举例。您只需 (1) 选择要使用的临时单位 (2) 从输入单位转换为该单位,以及 (3) 从临时单位转换为输出单位。

正如其他人提到的,gets() 绝对是正确的选择。

关于c - C中的简单单位转换器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3587528/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com