#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;
}

CCF201903-1怎么拿满分,感觉没错但只有60,求各位帅哥和大漂亮回答
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- 随缘|为而不争 2021-03-16 10:22关注
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; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报