gpt4 book ai didi

c - 输出不正确,无法发现代码中的错误。 kochans 的 C 书

转载 作者:行者123 更新时间:2023-11-30 17:22:40 25 4
gpt4 key购买 nike

我正在学习 Stephen Kochan 的《C 语言编程》一书。我在第 82 页的程序上遇到了问题。该程序采用数学表达式并解决它。我的问题是最后的 else 语句,该语句的目的是在用户输入无效字符时通知用户。当我运行程序时,我收到一个很长的数字,而不是我编写的“未知运算符”语句。

我在 Codeblocks 工作。我已经对照书(逐字逐句地写下来)检查了程序几次。任何输入都会很棒。现在我怀疑编译器有一些我忽略或没有意识到的东西。

#include <stdio.h>
#include <stdlib.h>


int main(void)

{
float value1, value2;
char operato;

printf ("Type in your expression.\n");
scanf ("%f %c %f", &value1, &operato, &value2);

if (operato == '+')
printf ("%.2f\n", value1 + value2);
else if (operato == '-')
printf ("%.2f\n", value1 - value2);
else if (operato == '*' )
printf ("%.2f\n", value1 * value2);
else if (operato == '/' )
if (value2 == 0)
printf ("Division by zero.\n");
else
printf ("%.2f\n", value1 / value2);
else
printf ("Unknown operator.\n");
return 0;
}

最佳答案

您必须检查 scanf 的返回值,它返回匹配的参数数量,很可能无法匹配其中一个参数,并且正在打印垃圾值。

试试这个

int main(void)
{
float value1, value2;
char operato;

printf ("Type in your expression.\n");
if (scanf ("%f %c %f", &value1, &operato, &value2) == 3)
{
if (operato == '+')
printf ("%.2f\n", value1 + value2);
else if (operato == '-')
printf ("%.2f\n", value1 - value2);
else if (operato == '*' )
printf ("%.2f\n", value1 * value2);
else if (operato == '/' )
if (value2 == 0)
printf ("Division by zero.\n");
else
printf ("%.2f\n", value1 / value2);
else
printf ("Unknown operator.\n");
}
else
printf ("Invalid expression.\n");
return 0;
}

我更喜欢一个开关,它会让代码更清晰

int main(void)
{
float value1, value2;
char operato;

printf ("Type in your expression.\n");
if (scanf ("%f %c %f", &value1, &operato, &value2) == 3)
{
switch (operato)
{
case '+':
printf ("%.2f\n", value1 + value2);
break;
case '-':
printf ("%.2f\n", value1 - value2);
break;
case '*':
printf ("%.2f\n", value1 * value2);
break;
case '/':
if (value2 == 0)
printf ("Division by zero.\n");
else
printf ("%.2f\n", value1 / value2);
break;
default:
printf ("Unknown operator.\n");
}
}
else
printf ("Invalid expression.\n");
return 0;
}

关于c - 输出不正确,无法发现代码中的错误。 kochans 的 C 书,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27934898/

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