c - 水的状态(温度程序)- C 编程

标签 c if-statement while-loop temperature

我正在开发一个程序,我必须在 if/else 中使用 bool 运算符从用户处获取温度值和度数符号,并打印出水所处的状态(冰、液体、 Steam )。

输入和输出示例:

   Enter temperature, such as 31 F: 101c
   Water is steam at 101c.

我的代码发布在下面。看起来好像应该可以工作,但我认为我没有正确输入,因此没有进入循环。不知道如何修复它。

#include <stdio.h>


int main(void)
{

    double temp;
    char CorF;

    printf("Please enter a temperature, such as 31 F:");

    while (scanf_s("%lf %c", &temp, &CorF, 2) == 1)
    {

        if (temp <= 32 && CorF == 'F')
        {
            printf("Water is ice at %lf %c.\n", temp, CorF);
        }
        else if (temp >= 212 && CorF == 'F')
        {
            printf("Water is steam at %lf %c.\n", temp, CorF);
        }
        else if (temp > 32 && temp < 212 && CorF == 'F')
        {
            printf("Water is liquid at %lf %c.\n", temp, CorF);
        }
        else if (temp <= 0 && CorF == 'C')
        {
            printf("Water is ice at %lf %c.\n", temp, CorF);
        }
        else if (temp >= 100 && CorF == 'C')
        {
            printf("Water is steam at %lf %c.\n", temp, CorF);
        }
        else if (temp < 0 && temp > 100 && CorF == 'C')
        {
            printf("Water is liquid at %lf %c", temp, CorF);
        }
        else
        {
            // blank line!
        }
    }

    return 0;

}

最佳答案

你的代码中有很多错误。 while是一个循环,用于循环。当您使用 scanf_s 检查它时,它会在每次进入循环时检查该值。 您应该使用 if 语句,而不是使用 while。

#include<stdio.h>
int main(void)

{


double temp;
char CorF;

printf("Please enter a temperature, such as 31 F:");
int i=scanf("%lf %c", &temp, &CorF);
if(i==2)
{

    if (temp <= 32 && CorF == 'F')
    {
        printf("Water is ice at %lf %c.\n", temp, CorF);
    }
    else if (temp >= 212 && CorF == 'F')
    {
        printf("Water is steam at %lf %c.\n", temp, CorF);
    }
    else if (temp > 32 && temp < 212 && CorF == 'F')
    {
        printf("Water is liquid at %lf %c.\n", temp, CorF);
    }
    else if (temp <= 0 && CorF == 'C')
    {
        printf("Water is ice at %lf %c.\n", temp, CorF);
    }
    else if (temp >= 100 && CorF == 'C')
    {
        printf("Water is steam at %lf %c.\n", temp, CorF);
    }
    else if (temp < 0 && temp > 100 && CorF == 'C')
    {
        printf("Water is liquid at %lf %c", temp, CorF);
    }
    else
    {
       ; // blank line!
    }
}

return 0;
}

您可以使用此代码。 来自 scanf:成功时,该函数返回成功读取的项目数。如果发生匹配失败,该计数可以匹配预期的读数数量或更少,甚至为零。如果在成功读取任何数据之前输入失败,则返回 EOF。

关于c - 水的状态(温度程序)- C 编程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39970742/

相关文章:

javascript - 如何根据 JavaScript/jQuery 中查询字符串的值执行 if 条件?

python - 通过不在主脚本中的方法更新 Qt 界面中的文本

angular - 我如何使用 "*ngIf else"?

c - 范围从 0 到 255 的整数

c - 是否有语义连接的 n*3 个寄存器的命名约定?

BeDS 支持的最大文件大小的计算

c++ - goto 和 junping 循环循环 c++

PHP - 合并多个 while 循环的输出

java - 更好的 Java 循环?

C指针(数组)内存分配(十六进制)