首页 > 解决方案 > 无法打印此程序的结果

问题描述

我是 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;
}

如果您能帮助我找到我的程序的问题,我将非常感激。谢谢!

标签: cprinting

解决方案


您的程序中有多个问题。首先看一下这个图表,你使用的变量类型是错误的。您打算从 接收浮点数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;
}

这些错误不应该终止程序,只会产生错误的结果。如果您还有其他问题,请告诉我。


推荐阅读