仅供参考,可以的话记得采纳~
#include<stdio.h>
#define N 10
int main()
{
int maxIdx = 0, minIdx = 0, maxVal, minVal, a[N], i;
printf("Input 10 Numbers:\n");
for(i = 0; i < 10; i++)
{
scanf("%d", &a[i]);
}
maxVal = a[0];
minVal = a[0];
for(i = 0; i < N; i++)
{
if(a[i] > maxVal)
{
maxVal = a[i];
maxIdx = i;
}
if(a[i] < minVal)
{
minVal = a[i];
maxIdx = i;
}
}
i = a[maxIdx];
a[maxIdx] = a[minIdx];
a[minIdx] = i;
for(i = 0; i < N; i++)
{
printf("%d ", a[i]);
}
printf("\n");
return 0;
}
没看出逻辑有什么问题
你是怎么运行的,截图来看
给你来个清晰的:
#include<stdio.h>
// 定义交换函数
void swap(int a[])
{
int L=0, H = 0; // L代表最小值下标,H代表最大值下标
int min = a[0]; // 假设最小值是第一个
int max = a[0]; // 假设最大值也是第一个
for (int i = 1; i < 10; i++)
{
if (a[i] > max) { // 遍历中若有比第一个大的,则更换最大值,更新下标
max = a[i];
H = i;
}
if (a[i] < min) { // 同上,不过是更换最小值与下标
min = a[i];
L = i;
}
}
// 用来交换最大与最小值
int temp = a[L]; a[L] = a[H]; a[H] = temp;
}
int main()
{
int a[10];
printf("input 10 numbers:\n");
for (int i = 0; i < 10; i++) {
scanf("%d", &a[i]);
}
printf("互换前的数据:");
for (int i = 0; i < 10; i++)
{
printf("%d ",a[i]);
}
printf("\n互换后的数据:");
swap(a);// 调用交换
for (int i = 0; i < 10; i++)
{
printf("%d ", a[i]);
}
}