还不够好 发表于 2021-1-27 19:04:40

c 语言除法,最后打印的 1.0/x 和 y 为什么不一样(输入10)

#include <stdio.h>

int main()
{
        int x,y;
        scanf("%d",&x);
        if (x == 0)
        {
                y = 0;
        }
        else
        {
                y = 1.0/x;
        }
        printf("%.1f %.1f %.1f",x,1.0/x,y);
       
        return 0;
}

还不够好 发表于 2021-1-27 19:09:15

本帖最后由 还不够好 于 2021-1-27 19:11 编辑

把 x,y 类型改为 float 后变成这样了,。。。这是个啥,各位大佬帮帮忙解答一下{:5_100:}
图片↓↓↓↓↓↓↓↓

还不够好 发表于 2021-1-27 19:09:54

https://s3.ax1x.com/2021/01/27/szGrkD.jpg

一世轻尘 发表于 2021-1-27 19:20:35

本帖最后由 一世轻尘 于 2021-1-27 19:29 编辑

第二个程序的x是浮点型,把%d改为%f
第一个程序可以这样改printf("%.1f %.1f",(float)x,1.0/x);
y的值改不了一定是0,因为你一开始定义的y为整型,所以1.0/10后一定是0

一世轻尘 发表于 2021-1-27 19:24:03

#include<stdio.h>
int main()
{
    float x,y;
    scanf("%f",&x);
    if(x==0)
    {
      y=0;
    }
    else
    {
      y=1.0/x;
    }
    printf("%.1f %.1f %.1f",x,1.0/x,y);
    return 0;
}
Windows PowerShell
版权所有 (C) Microsoft Corporation。保留所有权利。

尝试新的跨平台 PowerShell https://aka.ms/pscore6

PS D:\code> cd "d:\code\" ; if ($?) { gcc test.c -o test } ; if ($?) { .\test }
10
10.0 0.1 0.1
页: [1]
查看完整版本: c 语言除法,最后打印的 1.0/x 和 y 为什么不一样(输入10)