首页 > 解决方案 > 返回书名、价格和页数的程序

问题描述

这只是一个基本程序。我们将输入书名(1 个字符名称)、价格(浮点数)和页数(整数) ant 输出应该与输入相同,但事实并非如此。

#include<stdio.h>

int main()
{
    struct book
    {
        char name;
        float price;
        int pages;
    };

    struct book b1,b2,b3;
    printf("Enter names,prices & no. of pages of 3 books\n");
    scanf("%c %f %d",&b1.name,&b1.price,&b1.pages);
    scanf("%c %f %d",&b2.name,&b2.price,&b2.pages);
    scanf("%c %f %d",&b3.name,&b3.price,&b3.pages);
    printf("And this is what you entered\n");
    printf("%c %f %d\n",b1.name,b1.price,b1.pages);
    printf("%c %f %d\n",b2.name,b2.price,b2.pages);
    printf("%c %f %d\n",b3.name,b3.price,b3.pages);
    return 0;
}

在此处输入图像描述

标签: cstructstructure

解决方案


这是您输入的内容。浮点数更多的是近似值而不是实际值。这就是为什么当您输入 时123.134,计算机会将其四舍五入到最接近的可能值,123.124003. 它适用于工程、图形和统计,这些微小的差异在呈现给人类之前会被四舍五入。但是当你想要精确的值时,浮点变量是完全不合适的。

在财务中,我们将 10 美元存储为“1000 美分”,以整数为单位。尝试使用 float 或 double 来表示货币值是一个很大的禁忌。

你想要的是十进制类型,但 C 中没有这种类型。


推荐阅读