gpt4 book ai didi

c - C 中的 If/Else 语句不起作用

转载 作者:行者123 更新时间:2023-11-30 21:45:51 25 4
gpt4 key购买 nike

正在为类做一个基础计算机科学项目,我陷入了这个问题。我在 Java 方面有经验,但在 C 语言方面才刚刚开始。它似乎只是跳过了我的 if/else 语句,就好像它不存在一样,有人可以帮助我理解这一点吗?

#include <stdio.h>
int main()
{
//Systems Programming: Project3 - Justus Milhon
//Requests User Input
printf("Enter temparature in Farenheit (int up to 3 digits): ");

//Names and scans in Farenheit value
float fare;
scanf("%f", &fare);

//Declares and calculates Celcius value
float celc;
celc = 5.0 / 9.0 * ( fare - 32 );

//Determines approptiate description (if/else system)
char desc[50] = "if statement is not running :( ";
if(fare == -40){
char desc[50] = "Ouch! Cold either way!!";
}
else if(fare == 32){
char desc[50] = "Freezing point of water";
}
else if(fare == 70){
char desc[50] = "Room temperature";
}
else if(fare == 99){
char desc[50] = "Average body temperature";
}
else if(fare == 212){
char desc[50] = "Boiling point of water";
}
else{
char desc[50] = "final else stetement is being used :(";
}

//Prints output
printf("Farenheit Celsius Description\n----------
---------- ----------\n%.0f %.3f
%s\n", fare, celc, desc);
return 0;
}

最佳答案

这个:

if(fare == -40){
char desc[50] = "Ouch! Cold either way!!";
}

打开一个新的作用域,其中包含一个名为 desc 的新局部变量,该变量“隐藏”周围作用域中的变量。该变量被初始化为字符串,然后在作用域退出时被丢弃。父作用域中的同名变量永远不会被触及。

您需要:

#include <string.h>

在顶部,然后将所有 if 更改为如下所示:

if(fare == -40){
strcpy(desc, "Ouch! Cold either way!!");
}

这使用标准 strcpy() 函数将新字符串写入父作用域中的单个 desc 变量。

而且你从来没有看过 celc,这在计算之后看起来很困惑,并且精确比较 float 是一个坏主意。

关于c - C 中的 If/Else 语句不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46484492/

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