程序改错,实现从键盘任意输入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-12 13:43:05 浏览: 82
任意输入10个数,最大最小调换后再输出
5星 · 资源好评率100%
修改后的程序如下:
```
#include <stdio.h>
#define ARRSIZE 10
void MaxMinExchang(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) { // 使用 if 来独立判断最小值的位置
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<=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");
return 0; // main 函数需要返回一个整数值
}
```
主要修改如下:
1. 定义常量 `ARRSIZE` 时不需要加分号;
2. `maxPos` 和 `minPos` 变量需要初始化为0,否则可能会出现未定义的行为;
3. 在计算最小值的位置时,使用 if 来独立判断,否则可能出现最大值和最小值位置相同的情况;
4. 函数调用时,不需要在数组名后面加 [] 符号;
5. main 函数需要返回一个整数值。
阅读全文