0

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

程序正在计算厘米到卡路里。

这是代码

#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;
}

感谢帮助!

4

3 回答 3

3
scanf("%u", &a);

这是错误的。

u转换说明符需要一个指向 an 的指针,unsigned int&a它是一个指向double.

还:

b=2,54;

不等于b = 2.54;但等于b = 2;

于 2013-11-07T18:30:29.450 回答
0

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

用于接受双精度的 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, 54to2.54并且您将获得良好的转换!

通常,以下是scanf(), fscanf(),的格式字符串sscanf()

%hiint 输入short
%ilongfloatdoublelong doublechar(或将其输入为数字)为字符串char *char []
%li
%f
%lf
%Lf
%c%i
%s

于 2013-11-07T18:42:03.570 回答
0

我认为问题出在这里:

b=2,54;

scanf("%u", &a);

你可以试试

 scanf("%llf", &a);

 b=2.54;

&a是指向 double 的指针,您正在寻找u指向 unsigned int 的指针

于 2013-11-07T18:31:08.857 回答