#include<stdio.h>
#include<conio.h>
float square(float);
main()
{
float a,b;
printf("enter the number=");
scanf("%d",&a);
b=square(a);
printf("the square is=%d",b);
}
float square(float x)
{
float y;
y=x*x;
return(y);
}
答案 0 :(得分:3)
scanf("%d",&a);
需要
scanf("%f",&a);
%d
用于阅读int
,%f
用于阅读float
。
如果提高编译器的警告级别,则可能在编译时检测到该问题。例如,使用gcc -Wall
,我得到以下输出:
soc.c:5:1: warning: return type defaults to ‘int’ [-Wimplicit-int]
main()
^
soc.c: In function ‘main’:
soc.c:9:11: warning: format ‘%d’ expects argument of type ‘int *’, but argument 2 has type ‘float *’ [-Wformat=]
scanf("%d",&a);
^
soc.c:11:12: warning: format ‘%d’ expects argument of type ‘int’, but argument 2 has type ‘double’ [-Wformat=]
printf("the square is=%d",b);
答案 1 :(得分:2)
如果您使用的是浮点数,则必须在"%f"
和printf
调用中使用scanf
说明符。现在你有"%d"
,但这是针对整数值的(你可以阅读here)。
所以,试试这个:
...
scanf("%f", &a);
b=square(a);
printf("the square is=%f", b);
...
答案 2 :(得分:2)
在主要功能的scanf和printf中使用%f而不是%d
答案 3 :(得分:0)
float的格式说明符是“%f”,而“%d”用于整数。
#include<stdio.h>
#include<conio.h>
float square(float);
main() {
float a,b;
printf("Enter the number=");
scanf("%f",&a);
b=square(a);
printf("The square is=%f",b);
}
float square(float x) {
float y;
y=x*x;
return(y);
}
此代码应该有效。 虽然我建议你使用整数,因为代码会显示方形输出的小数点。
Enter the number=2
The square is=4.000000