我在学校得到了这个,这让我发疯了:
float Alas,Tinggi,Luas;
printf("Masukan Nilai Alas Segitiga:");
scanf("%f",Alas);
printf("\nMasukan Nilai Tinggi Segitiga");
scanf("%f",Tinggi);
Luas=0.5*Alas*Tinggi;
printf("\nNilai Luas Segitiga adalah : %f",Luas);
刚刚返回
D:\BUKU\ngitung2\main.cpp:9: warning: format '%f' expects argument of type 'float*', but argument 2 has type 'double' [-Wformat=]
scanf("%f",Alas);
^
和
D:\BUKU\ngitung2\main.cpp:11: warning: format '%f' expects argument of type 'float*', but argument 2 has type 'double' [-Wformat=]
scanf("%f",Tinggi);
^
有什么不对吗?这本书说的像这样;我在stackoverflow中读了很多引用,但没有任何帮助。我已经尝试了%lf
,但它没有用。
答案 0 :(得分:2)
scanf
期望指针指向您的变量,而不是变量本身。您可以使用一元&
(地址)运算符传递变量的地址,轻松修复它:
float Alas,Tinggi,Luas;
printf("Masukan Nilai Alas Segitiga:");
scanf("%f",&Alas);
printf("\nMasukan Nilai Tinggi Segitiga");
scanf("%f",&Tinggi);
Luas=0.5*Alas*Tinggi;
printf("\nNilai Luas Segitiga adalah : %f",Luas);
答案 1 :(得分:0)
正如@owacoder在评论中提到的那样,scanf
需要float
的地址才能正常工作。
所以它应该是:
scanf("%f", &Tinggi);
答案 2 :(得分:0)
您必须将要修改的变量的地址(或指针)传递给scanf
函数调用。
在您的情况下,编译器抱怨它期望float*
,即指向float
变量的指针。
要将指向它们的指针传递给scanf
函数调用,请用以下内容替换这些行:
scanf("%f",&Alas);
和
scanf("%f",&Tinggi);