我正在尝试计算一些整数,并且我知道计算的答案将包含小数,所以我必须使用双精度数。我已经评论了我认为代码中的问题在哪里(//这是一切都出错的地方)。
我试图通过键入来对计算进行类型转换,obs.avgX = (float) (arr[0].x + arr[1].x + arr[2].x + arr[3].x + arr[4].x) / 5;
但它根本不起作用。
#include <stdio.h>
int main(void)
{
struct Observations
{
int x;
int y;
double avgX;
double avgY;
};
struct Observations arr[5];
struct Observations obs;
for(int i=0; i < 5; i++)
{
printf("Enter coordinates for point #%d (x,y): ", i +1);
scanf("%d, %d", &arr[i].x, &arr[i].y);
}
printf("\n\nYou entered:\n");
for(int i=0; i < 5; i++)
{
printf("Point #%d: %d,%d\n", i, arr[i].x, arr[i].y);
}
// This is where everything goes wrong
obs.avgX = (arr[0].x + arr[1].x + arr[2].x + arr[3].x + arr[4].x) / 5;
obs.avgY = (arr[0].y + arr[1].y + arr[2].y + arr[3].y + arr[4].y) / 5;
printf("Average of X: %.2f\n", obs.avgX);
printf("Average of Y: %.2f", obs.avgY);
getchar();
getchar();
return 0;