#include<stdio.h>
int main()
{
int n,i,t,a[100000];
scanf("%d", &n);
for (i = 0; i < n; i++)
scanf("%d", &a[i]);
if (a[0] < a[n - 1])
{
a[0]=t;
a[0]=a[n-1];
a[n-1]=t;
}
if (n % 2 == 1)
printf("%d %d %d", a[0], a[n/2], a[n - 1]);
else
{
if((a[n / 2 - 1] + a[n / 2])%2==0)
printf("%d %d %d", a[0], (a[n / 2 - 1] + a[n / 2])/2, a[n - 1]);
else printf("%d %0.1f %d", a[0], (a[n / 2 - 1] + a[n / 2])/2+0.5, a[n-1]);
}
return 0;
}
1. 输入数据要求2行,第二行数据输入格式是多个整数,并用空格间隔。而你用for循环scanf, 明显数据获取方式就不符合题意。
int n,i,t,a[100000];
scanf("%d", &n);
for (i = 0; i < n; i++)
scanf("%d", &a[i]);
2. int a[100000]; 要分配接近400K的栈空间,这在有些系统中可能跑不起来;
3. t使用前没有赋值,按你的意思应该是交换数据,是写反了吧(t=a[0])。
if (a[0] < a[n - 1])
{
a[0]=t;
a[0]=a[n-1];
a[n-1]=t;
}