C中的算术运算给出了奇怪的值

时间:2013-11-07 18:29:22

标签: c

我从学习C开始,我的课程中有操作问题。

程序正在计算cm到cal。

这是代码

#include <stdio.h>
int main(){
double a;
double b;
double c;
b=2,54;
    printf("Witaj w programie dla kulturystów. Przeliczy on centymetry na cale.\n\n");
    getchar();
    printf("Podaj dlugosc w centymetrach bez jednostki miary\n\n");
    scanf("%u", &a);
    c=a*b;
    printf("Oto Twoj wynik w calach:%.2f\n\n", c);
    getchar();
    return 0;
}

感谢您的帮助!

3 个答案:

答案 0 :(得分:3)

scanf("%u", &a);

这是错误的。

u转换说明符需要指向unsigned int的指针,但&a是指向double的指针。

此外:

b=2,54;

不等同于b = 2.54;,而是等同于b = 2;

答案 1 :(得分:0)

我认为问题在于:

b=2,54;

scanf("%u", &a);

您可以尝试使用

 scanf("%llf", &a);

 b=2.54;

&a是一个指向double的指针,你正在寻找u作为指向unsigned int的指针

答案 2 :(得分:0)

您要求输入不带单位的厘米长度\ n \ n

用于接受double的scanf格式代码是“%lf”

更改scanf("%u", &a);scanf("%lf", &a);

同样由于作业:
B = 2,54;

b == 2.0; (即2,54不= = 2.54)

所以语句c=a*b;(一旦你将上述修正应用于scanf)评估为c = a*2.0;纠正2, 542.54,你就会有一个很好的转换!

一般来说,以下是scanf()fscanf()sscanf()的格式字符串:

%hi输入
 %i代表 int
 %li表示
 %f代表浮动
 {strong}加倍的%lf  %Lf代表长双
 %c代表字符(或%i将其作为数字输入)
 <{>> (字符* 字符[]