输入10个数,找出其中绝对值最小的数,将它和最后的一个数交换,然后输出这10个数c语言
时间: 2024-12-22 18:29:23 浏览: 8
在C语言中,你可以通过以下步骤来实现这个功能:
```c
#include <stdio.h>
#include <stdlib.h> // 包含 abs 函数
// 定义结构体存储数组元素及其索引
typedef struct {
int value;
int index;
} Number;
// 比较两个数的大小并考虑负数的情况
int compare(const void *a, const void *b) {
Number *numA = (Number *) a;
Number *numB = (Number *) b;
return numA->value - numB->value; // 如果 numA 的绝对值小则返回负数,反之正数
}
void swap(int *x, int *y) {
int temp = *x;
*x = *y;
*y = temp;
}
int main() {
int arr[10];
for (int i = 0; i < 10; i++) {
printf("Enter number %d: ", i+1);
scanf("%d", &arr[i]);
}
// 创建一个数组保存绝对值以及对应的索引
Number numbers[10];
for (int i = 0; i < 10; i++) {
numbers[i].value = arr[i];
numbers[i].index = i;
}
// 对数组进行排序
qsort(numbers, 10, sizeof(Number), compare);
// 找到绝对值最小的数,并与最后一个数交换
int smallestAbsValueIndex = numbers[0].index;
swap(&arr[smallestAbsValueIndex], &arr[9]);
// 输出交换后的数组
printf("After swapping with the last number:\n");
for (int i = 0; i < 10; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
```
在这个程序中,我们首先输入10个数,然后创建了一个结构体数组`numbers`来同时存储数值和索引。接着,我们对`numbers`数组进行排序,找到绝对值最小的数的索引,将其与数组的最后一个数交换。最后,打印出交换后的数组。
阅读全文