我从学习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; }
感谢您的帮助!
答案 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, 54
到2.54
,你就会有一个很好的转换!
一般来说,以下是scanf()
,fscanf()
,sscanf()
的格式字符串:
%hi
输入短
%i
代表 int
%li
表示长
%f
代表浮动
{strong}加倍的%lf
%Lf
代表长双
%c
代表字符(或%i
将其作为数字输入)
<{>> (字符* 或字符[] )