这段代码在vs中可以正常运行出结果,但是在
头歌平台却运行不出来,请问是哪里的问题,如果可以的话,希望能帮帮我,如果能给个更优解就更好了。
#include
int main()
{
int i, t, maxi, mini, l, n, max, min;
printf("Input n(n<=10):");
scanf("%d", &n);
int a[n];
printf("Input %d Numbers:\n", n);
for (i = 0; i < n; i++)
{
scanf("%d", &a[i]);
}
maxi = mini = a[0];
for (i = 0; i < n; i++)
{
if (a[i] < maxi)
{
maxi = a[i];
max = i;
}
}
for (i = 0; i < n; i++)
{
if (a[i] > mini)
{
mini = a[i];
min = i;
}
}
if ((max+min)==(n-1))
{
t = a[min];
a[min] = a[max];
a[max] = t;
}
else
{
t = a[max];
a[max] = a[0];
a[0] = t;
l = a[min];
a[min] = a[n - 1];
a[n - 1] = l;
}
printf("After MaxMinExchange:\n");
for (i = 0; i < n; i++)
printf("%d ", a[i]);
}
测试图看能否满足你意,代码仅供参考。谢谢!
#include<stdio.h>
#include<limits.h>
void MaxMinExchange(int *arr, int count)
{
int *p = arr;
int min = INT_MAX, max = INT_MIN;
int min_i, max_i;
int arr1[count];
int *p1 = arr1;
for (int i = 0; i < count; i++)
{
if (p[i] <= min)
{
min_i = i;
min = p[i];
}
if (p[i] >= max)
{
max_i = i;
max = p[i];
}
}
// 防止最大或最小的数有重复数字出现必须要这么做!
int m = 0;
for (int i = 0; i < count; i++)
{
if (p[i] == min)
{
*p1++ = min;
++m;
}
}
for (int i = 0; i < count && m <= count; i++)
{
if (p[i] != min && p[i] != max)
{
*p1++ = p[i];
++m;
}
}
for (int i = 0; i < count && m <= count; i++)
{
*p1++ = max;
++m;
}
for (int i = 0; i < count; i++)
{
arr[i] = arr1[i];
}
}
int main()
{
int i, t, maxi, mini, l, n, max, min;
printf("Input n(n<=10):");
scanf("%d", &n);
int a[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("%d ", a[i]);
}
平台用的什么编译器版本,int a[n];不一定支持,改用malloc分配内存