C语言写三个函数:用指针实现,输入6个整数,把最小数与第1个数交换,最大数与最后1个数交换,其它数据不动。输入保证最大值和最小值唯一。请编写3个函数:(1)输入6个数;(2)进行处理函数;(2)输出6个数,每个数占3个宽度,左对齐。 函数接口定义: void inputdata(int *p); void swapdata(int *p); void printdata(int *p); p是传入的数组首地址。 裁判测试程序样例: #include <stdio.h> void inputdata(int *p); void swapdata(int *p); void printdata(int *p); int main(){ int a[6]; inputdata(a); swapdata(a); printdata(a); return 0; } 输入样例1: 2 1 6 5 4 3 输出样例1: 1 2 3 5 4 6
时间: 2024-01-22 10:19:37 浏览: 51
下面是三个函数的实现:
```c
#include <stdio.h>
void inputdata(int *p) {
for (int i = 0; i < 6; i++) {
scanf("%d", p + i);
}
}
void swapdata(int *p) {
int min_index = 0, max_index = 0;
for (int i = 1; i < 6; i++) {
if (*(p + i) < *(p + min_index)) {
min_index = i;
}
if (*(p + i) > *(p + max_index)) {
max_index = i;
}
}
int temp = *(p + 0);
*(p + 0) = *(p + min_index);
*(p + min_index) = temp;
if (max_index == 0) {
max_index = min_index;
}
temp = *(p + 5);
*(p + 5) = *(p + max_index);
*(p + max_index) = temp;
}
void printdata(int *p) {
for (int i = 0; i < 6; i++) {
printf("%-3d", *(p + i));
}
}
```
其中,`inputdata` 函数用于输入 6 个整数, `swapdata` 函数用于交换最小数和第一个数、最大数和最后一个数, `printdata` 函数用于输出 6 个整数,每个数占 3 个宽度,左对齐。
在 `swapdata` 函数中,我们先遍历一遍数组,找到最小数和最大数的下标,然后再根据题目要求进行交换。需要注意的是,最大数和最小数可能会在同一个位置,这种情况下我们需要确保最小数的交换先于最大数的交换。
在 `printdata` 函数中,我们使用了 `%3d` 的格式控制符,表示每个数占 3 个宽度。`-` 表示左对齐,不加则为右对齐。
阅读全文