#include <stdio.h>
int main(void)
{
int a,b,c,t;
printf("Get the height of the triangle",a);
scanf("%d",&a);
printf("Get the base of the triangle",b);
scanf("%d",&b);
t=0.5;
c=t*(a*b);
printf("The area of the triangle:%d\n",c);
scanf("%d",&c);
return 0;
}
编写代码,编译和执行代码后,无论输入a
和b
的值,答案始终为零。我想知道为什么,以及如何纠正我的错误。
答案 0 :(得分:4)
int
无法保存浮点值。将浮点值赋给int
将截断小数点处的值。
当您将0.5
分配给t
int
时,它将设置为0
。将任何内容乘以0
会产生0
。
执行乘法时,您需要使用浮点数据类型float
或double
,例如:
#include <stdio.h>
int main(void)
{
int a, b;
float c, t;
printf("Height of the triangle: ");
scanf("%d", &a);
printf("Base of the triangle: ");
scanf("%d", &b);
t = 0.5f;
c = t * (a * b);
printf("The area of the triangle: %f\n", c);
getchar();
return 0;
}
或者:
#include <stdio.h>
int main(void)
{
int a, b;
double c, t;
printf("Height of the triangle: ");
scanf("%d", &a);
printf("Base of the triangle: ");
scanf("%d", &b);
t = 0.5;
c = t * (a * b);
printf("The area of the triangle: %lf\n", c);
getchar();
return 0;
}
答案 1 :(得分:1)
设置MockCardService.getCardDetails()
时,设置t=0.5;
int
。
浮点数将被截断为整数部分,这意味着你得到float
。
因此,当您乘以t=0
时,您会t*(a*b)
并获得0。
使用0*a*b
,一切正常。
答案 2 :(得分:-1)
您的数据类型&#39;变量是int。将浮点值赋给变量&#39; t&#39;在你的情况下它被截断它将被截断为0.为了得到正确的结果,你期望改变你的t变量数据类型从int到float