c语言 输入十个整数,将他们从小到大排序后,并给出现在每个元素在原来系列中的位置
时间: 2024-12-15 09:16:56 浏览: 13
在C语言中,我们可以使用数组和循环结构来实现这个功能。首先,我们需要输入10个整数存入数组,然后通过冒泡排序算法对它们进行升序排列,同时记录每个元素的新位置。以下是简单的步骤:
1. 定义一个包含10个元素的整型数组并初始化为0。
2. 使用`for`循环从第一个元素开始,遍历整个数组。
3. 每次循环内部嵌套另一个`for`循环,比较相邻的两个元素,如果它们的顺序错误就交换它们的位置,并更新它们在原序列中的位置。
4. 冒泡排序完成后,数组会按照升序排列,同时记录了每个元素的新位置。
以下是一个简化的示例代码片段:
```c
#include <stdio.h>
#define SIZE 10
void bubbleSort(int arr[], int size, int positions[]) {
for (int i = 0; i < size - 1; i++) {
for (int j = 0; j < size - 1 - i; j++) {
if (arr[j] > arr[j + 1]) {
// 交换元素
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
// 更新位置
positions[j] = j + 1;
positions[j + 1] = j;
} else {
positions[j] = j + 1;
positions[j + 1] = j + 1;
}
}
}
}
int main() {
int numbers[SIZE], position[SIZE] = {0};
printf("请输入10个整数:\n");
for (int i = 0; i < SIZE; i++) {
scanf("%d", &numbers[i]);
position[i] = i; // 先假设元素初始位置为其索引
}
bubbleSort(numbers, SIZE, position);
printf("排序后的数组及位置:\n");
for (int i = 0; i < SIZE; i++) {
printf("%d 的新位置是 %d\n", numbers[i], position[i]);
}
return 0;
}
```
阅读全文