作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想从书本上学习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/
我是一名优秀的程序员,十分优秀!