C语言实现:【问题描述】利用函数和指针编写程序,将数组a中的最小数保存在a[0]中,最大数保存在a[9]中。假设整型数组a有10个元素。【样例输入】10 9 8 7 6 5 4 3 2 1 【样例输出】1 9 8 7 6 5 4 3 2 10 【样例输入】2 1 2 1 1 1 1 1 1 2 【样例输出】1 1 2 1 1 1 1 1 2 2 【样例说明】输入有数字相同时,为统一标准,有以下说明:出现输入数字相同的情况,以顺序靠后的数字为准。比如上述样例输入最小值1出现多次,实际a[0]是与a[8]进行了调换。a[9]本身为最大,实际是与自身调换。
时间: 2024-02-06 11:12:26 浏览: 57
好的,这是一个比较简单的数组操作问题,我来为你解答。
首先,我们需要实现一个函数 `swap()`,用于交换两个整数的值。具体代码实现如下:
```c
void swap(int *a, int *b) {
int t = *a;
*a = *b;
*b = t;
}
```
然后,在主程序中读取输入的数组,寻找最小值和最大值的下标,并调用 `swap()` 函数将它们分别与数组首尾元素进行交换,最后打印调整后的数组即可。具体代码实现如下:
```c
#include <stdio.h>
void swap(int *a, int *b);
int main() {
int a[10];
for (int i = 0; i < 10; i++) {
scanf("%d", &a[i]);
}
int minIndex = 0;
int maxIndex = 9;
for (int i = 1; i < 10; i++) {
if (a[i] < a[minIndex]) {
minIndex = i;
}
if (a[i] >= a[maxIndex]) {
maxIndex = i;
}
}
swap(&a[0], &a[minIndex]);
swap(&a[9], &a[maxIndex]);
for (int i = 0; i < 10; i++) {
printf("%d ", a[i]);
}
printf("\n");
return 0;
}
void swap(int *a, int *b) {
int t = *a;
*a = *b;
*b = t;
}
```
希望这个代码能够帮助到你,如果还有其他问题,请继续提问。
阅读全文