使用c语言结构体定义平面直角坐标系上的点,输入n个点,对这些点的x轴坐标排序并输出。
时间: 2024-03-24 18:41:27 浏览: 156
C语言-对一个结构体中的字段进行排序
可以按照以下步骤编写程序:
1. 定义平面直角坐标系上的点的结构体。
```c
typedef struct {
double x;
double y;
} Point;
```
2. 读入 n 个点的坐标,存储到结构体数组中。
```c
int n;
printf("请输入点的数量:");
scanf("%d", &n);
Point points[n];
for (int i = 0; i < n; i++) {
printf("请输入第%d个点的坐标(用空格隔开):", i + 1);
scanf("%lf %lf", &points[i].x, &points[i].y);
}
```
3. 对这些点的 x 轴坐标排序。可以使用冒泡排序或快速排序等算法,这里演示冒泡排序的方法。
```c
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - i - 1; j++) {
if (points[j].x > points[j+1].x) {
// 交换两个点的坐标
Point temp = points[j];
points[j] = points[j+1];
points[j+1] = temp;
}
}
}
```
4. 输出排序后的点的 x 轴坐标。
```c
printf("按 x 轴坐标从小到大排序后的点的坐标如下:\n");
for (int i = 0; i < n; i++) {
printf("(%lf, %lf)\n", points[i].x, points[i].y);
}
```
完整代码如下:
```c
#include <stdio.h>
typedef struct {
double x;
double y;
} Point;
int main() {
int n;
printf("请输入点的数量:");
scanf("%d", &n);
Point points[n];
for (int i = 0; i < n; i++) {
printf("请输入第%d个点的坐标(用空格隔开):", i + 1);
scanf("%lf %lf", &points[i].x, &points[i].y);
}
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - i - 1; j++) {
if (points[j].x > points[j+1].x) {
// 交换两个点的坐标
Point temp = points[j];
points[j] = points[j+1];
points[j+1] = temp;
}
}
}
printf("按 x 轴坐标从小到大排序后的点的坐标如下:\n");
for (int i = 0; i < n; i++) {
printf("(%lf, %lf)\n", points[i].x, points[i].y);
}
return 0;
}
```
阅读全文