-5

我只是问了一个问题,但无法得到我想要的东西,并且由于太长而无法编辑和回复。我的问题是一样的,它是该问题的链接。如何在c中保留小数

#include<stdio.h>

int main()
{
    float b,c,;
    int a,kk;
    printf("Welcome to the unit conversion program\n");
    printf("This program can convert the measurements of;\n");
    printf("1-Length\n");
    printf("2-Mass\n");
    printf("Please select the number that corresponds to the measurement you want to convert in:\n");
    scanf("%d",&a);
    if (a==1){
          printf("Your number will be converted from inches to centimeters.\n");
          printf("Please enter the length.\n");
          scanf("%f",&b);
          c=b*2.54;
          printf("%f inch is %f cm.",b,c);
          scanf("%d",kk); \. to avoid to shut the cmd windows .\
          }

      else if (a==2){
           printf("Your number will be converted from pounds (lbs) to kilograms");
           printf("Please enter the mass.\n");
           scanf("%d",&b);
           c=b*0.45359237;
           printf("%d lbs is %d kgs.",b,c);
       }
    return 0;
}
4

2 回答 2

0

改变:

scanf("%d",&b);

printf("%d lbs is %d kgs.",b,c);

到:

scanf("%f",&b);

printf("%f lbs is %f kgs.",b,c);

您将b声明为浮点数并将输入作为小数,然后将浮点 b,c 都打印为十进制?请学习一本书Deital & Deital for C/C++是一本了不起的书。

于 2013-09-29T14:39:34.907 回答
0

错误是%d在两者的格式说明符中都scanf表示printf十进制因此它需要一个int(在 的情况下scanf,指向 的指针int

由于您在行中声明band casfloat%d

scanf("%d",&b);

printf("%d lbs is %d kgs.",b,c);

应分别改为%f

一点建议:使用double代替float. 它提供了更高的精度,它的性能在许多机器上都更好。缺点是它占用的空间比 多float,但在大多数情况下这不是问题。

您应该使用%finprintf%lfinscanf以防万一您使用double.

于 2013-09-29T14:49:47.597 回答