gpt4 book ai didi

c - 我是 c 新手,我的程序正在运行,但没有任何输出

转载 作者:行者123 更新时间:2023-11-30 16:23:57 25 4
gpt4 key购买 nike

我想从书本上学习c,但我很困惑我做了以下事情:

#include <stdio.h>
#include <math.h>
int main(void)
{
int metrisi=getchar();
putchar (metrisi);
float proi=(metrisi-80)/40*1.5;
float apog=(metrisi-80)/40*1.4;
float brady=(metrisi-80)/40*1.4;
{
printf("%5.0f %5.0f %5.0f\n", proi,apog,brady);
}
return 0;
}

输出为

C Online Compiler [gcc-6.3]
Copyright (c) Free Software Foundation, Inc.

Compiling your program...
Build completed successfully!
Running your program...

\xff...
The program executed successfully!

你能帮我一下吗?没有用户的输入,就没有输出。谢谢

最佳答案

几个问题:

int metrisi=getchar();

这会将您输入的第一个字母的ASCII值放入metrisi中。

您可以通过减去 48 来得到该值的十进制值,但这非常不安全 - 如果您输入数字以外的内容会发生什么?

编辑:正如大卫指出的那样,减法在技术上并不是不安全的。但是,由于您想对输入值进行一些算术运算,因此明智的做法是确保只接受数字作为输入。

无论如何,下一个问题出在你的 printf 中:

printf("%5.0f %5.0f %5.0f\n",  proi,apog,brady);

这里指定输出小数点左边5位,小数点后0位。也许你想要这个:

printf("%.5f %.5f %.5f\n",  proi,apog,brady);

这里也有(我的猜测)一个问题:

float proi=(metrisi-80)/40*1.5;

这个表达式可能会产生非常令人惊讶的结果。原因是有一个叫做 operator precedence 的东西。在 C 语言中,它并不总是直观的。

你可以尝试这个:

float proi=(metrisi-80)/(float)40*1.5;

float proi=(metrisi-80)/40.0*1.5;

关于c - 我是 c 新手,我的程序正在运行,但没有任何输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53771166/

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