程序改错,实现从键盘任意输入10个整数,用函数编程实现将其中最大数与最小数的位置对换后,再输出调整后的数组。 #include <stdio.h> #define ARRSIZE 10; void MaxMinExchang(int a[], int n) { int maxValue=a[0], minValue=a[0], maxPos, minPos; int i, temp; for (i=1; i<n; i++) { if (a[i] > maxValue) { maxValue = a[i]; maxPos = i; } else if (a[i] < minValue) { minValue = a[i]; minPos = i; } } temp = a[maxPos]; a[maxPos] = a[minPos]; a[minPos] = temp; } main() { int a[n], i, n; printf("Input n(n<=10):"); scanf("%d", &n) ; printf("Input %d Numbers:\n", n); for (i=0; i<n; i++) { scanf("%d", &a[i]); } MaxMinExchang(a[], n); printf("After MaxMinExchange:\n"); for (i=0; i<n; i++) { printf("%4d", a[i]); } printf("\n"); }
时间: 2024-03-15 18:46:50 浏览: 30
任意输入10个数,最大最小调换后再输出
5星 · 资源好评率100%
以下是程序改错后的代码:
```
#include <stdio.h>
#define ARRSIZE 10
void MaxMinExchange(int a[], int n) {
int maxValue = a[0], minValue = a[0], maxPos = 0, minPos = 0;
int i, temp;
for (i = 1; i < n; i++) {
if (a[i] > maxValue) {
maxValue = a[i];
maxPos = i;
}
if (a[i] < minValue) {
minValue = a[i];
minPos = i;
}
}
temp = a[maxPos];
a[maxPos] = a[minPos];
a[minPos] = temp;
}
int main() {
int a[ARRSIZE], i, n;
printf("Input n (n <= %d): ", ARRSIZE);
scanf("%d", &n);
printf("Input %d Numbers:\n", n);
for (i = 0; i < n; i++) {
scanf("%d", &a[i]);
}
MaxMinExchange(a, n);
printf("After MaxMinExchange:\n");
for (i = 0; i < n; i++) {
printf("%4d", a[i]);
}
printf("\n");
return 0;
}
```
主要的修改如下:
1. 定义数组的大小应该使用 `#define`,而不是在函数中使用 `n`;
2. 在主函数中定义了 `n`,但是在函数调用时却使用了 `n[]`,应该修改为 `n`;
3. 函数名应该为 `MaxMinExchange`,而不是 `MaxMinExchang`;
4. 在函数中应该同时记录最大值和最小值的位置,因为它们可能是同一个数;
5. 在函数中的第二个 `if` 语句应该使用 `if`,而不是 `else if`,因为最大值和最小值可能是同一个数。
修改后的代码已经可以正确地实现从键盘任意输入10个整数,将其中最大数与最小数的位置对换后,再输出调整后的数组。
阅读全文