/*输入十个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。写三个函数 (1)输入10个数;(2)进行处理;(3)输出十个数 3个指针,1个指向最小数,1个指向最大数,1个循环指向0~9号元素。 编写三个子函数*/ #include <stdio.h> int main() { int a[10]; int *min, *max; int maxi, mini, i; void max(int a[], int 10); void min(int a[], int 10); void swap(int a[], int 10); printf("请输入十个整数:"); for (i = 0; i < 10; i++) { scanf("%d", &a[i]); } max(a, 10); min(a, 10); swap(1, 10); for (p = a; p < (a + 10); p++) { printf("%d", *p); } } void max(int a[], int 10) { int i; for (i = 0; i < 10; i++) { if (*max < a[i]) { max = &a[i]; maxi = i; } } } void min(int a[], int 10) { int i; for (i = 0; i < 10; i++) { if (*min > a[i]) { min = &a[i]; mini = i; } } } void swap(int a[], int 10) { int temp; a[mini] = temp; a[0] = a[mini]; temp = a[0]; a[maxi] = temp; a[9] = a[maxi]; temp = a[9]; }
时间: 2024-03-10 22:47:11 浏览: 20
这段代码存在多个错误,包括语法错误和逻辑错误,以下是修正后的代码:
```c
#include <stdio.h>
void max(int a[], int len);
void min(int a[], int len);
void swap(int a[], int len);
int main() {
int a[10];
int *min, *max;
int i;
printf("请输入十个整数:");
for (i = 0; i < 10; i++) {
scanf("%d", &a[i]);
}
max(a, 10);
min(a, 10);
swap(a, 10);
for (i = 0; i < 10; i++) {
printf("%d ", a[i]);
}
printf("\n");
return 0;
}
void max(int a[], int len) {
int i;
max = &a[0];
for (i = 1; i < len; i++) {
if (a[i] > *max) {
max = &a[i];
}
}
}
void min(int a[], int len) {
int i;
min = &a[0];
for (i = 1; i < len; i++) {
if (a[i] < *min) {
min = &a[i];
}
}
}
void swap(int a[], int len) {
int temp;
// 交换最小值和第一个数
temp = *min;
*min = a[0];
a[0] = temp;
// 交换最大值和最后一个数
temp = *max;
*max = a[len-1];
a[len-1] = temp;
}
```
修正后的代码中,函数参数的类型和命名都进行了修改,同时在 `max` 和 `min` 函数中进行了指针的初始化。`swap` 函数中,交换数组中的数值时,使用了指针所指的地址进行交换。