编程从键盘读入10个Vector3D三维向量,然后使用任意一种排序算法按照模长递增排序并依次输出。 其中,Vector3D定义为结构体,包含三个整数分量x,y和z,用C语言编写代码
时间: 2024-02-13 14:00:55 浏览: 172
以下是使用冒泡排序算法对10个Vector3D向量按照模长递增排序的C语言代码示例:
```c
#include <stdio.h>
#include <math.h>
// 定义Vector3D结构体
struct Vector3D {
int x;
int y;
int z;
};
// 计算向量模长
float length(struct Vector3D v) {
return sqrt(v.x * v.x + v.y * v.y + v.z * v.z);
}
// 实现冒泡排序
void bubbleSort(struct Vector3D vectors[], int n) {
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - i - 1; j++) {
if (length(vectors[j]) > length(vectors[j+1])) {
struct Vector3D temp = vectors[j];
vectors[j] = vectors[j+1];
vectors[j+1] = temp;
}
}
}
}
int main() {
// 从键盘读入10个向量
struct Vector3D vectors[10];
for (int i = 0; i < 10; i++) {
printf("请输入第%d个向量的三个分量,以空格分隔:", i+1);
scanf("%d%d%d", &vectors[i].x, &vectors[i].y, &vectors[i].z);
}
// 对向量按照模长递增排序
bubbleSort(vectors, 10);
// 输出排序后的向量
printf("按照模长递增排序后的向量:\n");
for (int i = 0; i < 10; i++) {
printf("(%d, %d, %d)\n", vectors[i].x, vectors[i].y, vectors[i].z);
}
return 0;
}
```
在这个示例中,我们定义了一个Vector3D结构体来表示三维向量,定义了一个length函数来计算向量的模长,实现了一个bubbleSort函数来对向量按照模长递增排序。在main函数中,我们首先从键盘读入10个向量,然后调用bubbleSort函数对它们进行排序,最后输出排序后的向量。
阅读全文