我是结构初学者,几乎不了解它们有用的东西。我有一个任务来创建一个空间为5点的数组。每个点都将由用户输入。
我不明白如何使用带数组的结构。我试过了,但它根本不起作用......
#include <stdio.h>
int main(void)
{
struct Input
{
int x;
int y;
};
struct Input arr[5];
for(int i=1; i <= 5; i++)
{
printf("Enter coordinates for point #%d (x,y): ", i);
scanf("%d,%d", &arr[i].x, &arr[i].y);
}
printf("\n\nYou entered:\n");
for(int i=1; i <= 5; i++)
{
printf("Point #%d: %d, %d\n", i, arr[i].x, arr[i].y);
}
getchar();
getchar();
return 0;
}
修改
我正在尝试计算x协调的平均值,但 obs.avgX 不能按计划运行,计算总是为0。
#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);
}
obs.avgX = arr[0].y + arr[1].y + arr[2].y + arr[3].y + arr[4].y / 5;
printf("Average of X: %d", obs.avgX);
getchar();
getchar();
return 0;
}
答案 0 :(得分:3)
如果你需要创建一个包含5个点的数组,首先你需要定义一个点。
例如:
struct Point {
int x;
int y;
};
然后你必须定义一个包含5个点的数组:
struct Point array_of_points[5];
你可以像这样使用它:
array_of_points[0].x = 20;
array_of_points[0].y = 10;
// etc...
array_of_points[4].x = 3;
array_of_points[4].y = 8;
答案 1 :(得分:1)
SirDarius对代码做了很好的解释。
你说
几乎不了解它们对
有用
事实上,您可以考虑,结构是一种“数据保护程序”,您可以在其中存储不同类型或多种类型的数据。
例如,使用数组,您不能在单元格中存储x和y坐标(多种数据类型)。
此外,如果你想存储学生的学校信息,你可能想要存储,他的唯一ID(整数),他的名字(字符串),他的成绩(整数)和每节课的平均值(浮动)(不同)数据)。使用结构,您可以轻松地存储它们:
struct Student {
int ID;
char * name;
int grade;
float average;
}
希望有助于理解,结构非常有用的原因:)
答案 2 :(得分:0)
计算平均值时,大括号丢失如下,
obs.avgX = (arr[0].y + arr[1].y + arr[2].y + arr[3].y + arr[4].y) / 5;
同样要打印双重类型变量,您应该使用%f
作为格式说明符而不是%d
。