CCF CSP 2019-3-1 小中大 C语言100分
小中大 完成时间11-21 16:30 代码长度448B C 正确 100 耗时15ms 空间使用2.906MB
思路:因为输出整数不能带.0所以要分情况:
1、n是奇数,mid=a[n/2],所以mid是int
2、n是偶数,但a[n/2]+a[n/2+1]是偶数,所以mid=(a[n/2]+a[n/2+1])/2,int型
3、n是偶数,但a[n/2]+a[n/2+1]是奇数,所以mid=(a[n/2]+a[n/2+1])/2,float型,这种涉及到类型强制转换,因为int无法输出小数,float无法取余2判断是奇数还是偶数。
分完情况后就可以写代码了
以下为100分C语言代码:
#include<stdio.h>
int main()
{
int n,i,max,min,m;
float mid;
int a[100001];
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
if(a[0]<=a[n-1])
{
max=a[n-1];
min=a[0];
}
else
{
max=a[0];
min=a[n-1];
}
if(n%2)
{
m=a[n/2];
printf("%d %d %d",max,m,min);
}
else
{
m=(a[n/2]+a[n/2-1]);
if(m%2)
{
mid=(float)m/2;
printf("%d %.1f %d",max,mid,min);
}
else printf("%d %d %d",max,m/2,min);
}
return 0;
}