2

我目前正在通过 K&R 的“The C Programming Language”学习 C。有一个练习 (1-5),希望我使用 for 循环将华氏温度转换为摄氏度,但华氏温度的值从我指定的最大值按降序显示。上一个练习是相同的想法,但按升序排列(我成功完成了)。我试图完成降序任务,但在控制台中没有任何输出。

我不确定为什么这不起作用(我希望它不那么明显,令人尴尬!)

#include <stdio.h>

int main() 
{
    int fahrenheit;

    for(fahrenheit = 250; fahrenheit <= 0; fahrenheit -= 25)
    {
        printf("%3d degrees fahrenheit is %3.3f degrees celcius\n", fahrenheit, (5.0 / 9.0) * (fahrenheit - 32));
    }

    return 0;
}
4

6 回答 6

3

检查你的for循环

for(fahrenheit = 250; fahrenheit >= 0; fahrenheit -= 25) // change to this

的初始值为fahrenheit250,您要计算相应的摄氏温度,直到它保持大于零为止。因此,测试条件应为fahrenheit >= 0

于 2013-10-13T18:20:47.567 回答
2

您在 for 循环中的测试条件是错误的。进入循环改变

for(fahrenheit = 250; fahrenheit <= 0; fahrenheit -= 25)

for(fahrenheit = 250; fahrenheit >= 0; fahrenheit -= 25)
于 2013-10-13T18:21:07.577 回答
2

您的循环条件永远不会正确:

fahrenheit <= 0
于 2013-10-13T18:21:26.577 回答
1

您想说华氏是否大于或等于 0 不小于。

于 2013-10-13T18:21:22.647 回答
1

如果 . 你想继续迭代fahreneit >= 0

否则,如果您编写fahreneit <= 0,则在第一个迭代步骤中检查将为False,并且程序将立即退出并且不打印任何内容。

for(fahrenheit = 250; fahrenheit >= 0; fahrenheit -= 25)
于 2013-10-13T18:21:25.427 回答
0
int fahrenheit;

for(fahrenheit = 250; fahrenheit >= 0; fahrenheit -= 25)
    printf("%3d degrees fahrenheit is %3.3f degrees celcius\n", fahrenheit, (5.0 / 9.0) * (fahrenheit - 32));

return 0;
于 2013-10-13T18:20:52.127 回答