dream_illusion 2021-03-14 16:11 采纳率: 100%
浏览 47
已采纳

CCF201903-1怎么拿满分,感觉没错但只有60,求各位帅哥和大漂亮回答

#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条回答 默认 最新

  • 随缘|为而不争 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; 
    	}	
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?