c - 无法打印此程序的结果
问题描述
我是 C 语言的新手,我正在尝试制作一个能够获取十进制数并打印出最接近该十进制数的程序,但是,当我尝试运行该程序时,它只询问我十进制数和没有其他的。
# include<stdio.h>
int main()
{
float num;
printf("Enter a double number: ");
scanf("%d", num);
int r=0;
if(num<0)
{
r=r+num-0.5;
}
else
{
r=r+num+0.5;
}
printf("The closest integer to %d: %d", num, r);
return 0;
}
如果您能帮助我找到我的程序的问题,我将非常感激。谢谢!
解决方案
您的程序中有多个问题。首先看一下这个图表,你使用的变量类型是错误的。您打算从 接收浮点数stdin
,但您正在扫描 a %d
,这是一个普通整数。改为使用%f
。这也是打印输出时的一个问题。
scanf("%f", &num); // more about the & later
第二件事,你可能还不习惯指针和内存处理,但是如果你有一个简单的数据结构——比如int
,float
等——你必须扫描你的数据,并将其写入为你的变量分配的内存中,所以你必须num
通过做的内存地址&num
。
scanf("%f", &num); // you are passing the memory address of your variable
您可以通过以下方式试用:
printf("%p\n", (void*)&num);
(如何打印内存位置)
完整的工作示例:
# include <stdio.h>
int main() {
float num;
printf("Enter a double number: ");
scanf("%f", &num);
int r=0;
if(num<0) {
r=r+num-0.5;
}else {
r=r+num+0.5;
}
printf("The closest integer to %f: %d", num, r);
return 0;
}
这些错误不应该终止程序,只会产生错误的结果。如果您还有其他问题,请告诉我。
推荐阅读
- discord - 在 Discord JS (v12) 上发送一条消息
- apache-kafka - 使用 SeekToCurrentErrorHandler 时,多个服务实例中同一消费者组中的同一消费者如何工作
- android - 离线 Gradle 构建失败
- typescript - 如何测试 iframe 并获取所有响应标头?
- r - 如何停止从 rstudio 中的标准输入获取输入
- java - 如何在 Apache Camel 中使用 Oauth 标头调用 REST API?
- ios - 带有在 IB 中创建的自定义视图的 InputAccessoryView
- neo4j - Neo4j-Spring-Data 深度功能不适用于丰富的关系
- grails - Grails:在一个视图中引用两个模型
- javascript - 是否有一种简单的方法可以在 p5.js 中的不同 shadertoy 着色器之间进行分阶段?