c语言 CCF 201903-1小中大的两种做法(100分)

c语言 CCF 201903-1小中大的两种做法(100分)

题目地址:
在这里插入图片描述
本题要注意认真审题,思路不难,细节在于需要以分数形式输出时四舍五入保留一位小数,否则以整数形式输出
(1)normal做法 //学习到了printf("%.1f",变量)的用法
补充一下printf("%.nf",变量)可以保留n位小数输出该变量

int main(){
	int n;
	int detect=0;//用于判断是否需要以分数形式表示
	int min,max,mid2;
	float mid1;
	scanf("%d",&n);
	int a[n];
	for(int i=0;i<n;i++)
	scanf("%d",&a[i]);
	//得到最小数和最大数
	if(a[0]<a[n-1]){
	min=a[0];
	max=a[n-1];
	}else{
		min=a[n-1];
		max=a[0];
	}
	//得到中位数
	if(n%2==0){
	if((a[n/2]+a[n/2-1])%2!=0){
		detect=1;
		mid1=(a[n/2]+a[n/2-1])/2+0.5;
	}else mid2=(a[n/2]+a[n/2-1])/2;
	}else
	mid2=a[(n-1)/2];
	if(detect)
	printf("%d %.f %d",max,mid1,min);
	else
	printf("%d %d %d",max,mid2,min);
	return 0;
}

方法2:不走寻常路,嘿嘿。
这是我在不会printf("%.1f",变量)的用法时想到的
因为需要以分数形式输出时化为小数仅有n.5的形式出现,n实际上是该数在整除形势下保留的整数部分,所以可以不需要另外定义float的变量,只需要在整数变量后加上.5即可,这种方法并不是直接计算得出的结果,仁者见仁,大家可以参考一下

#include<stdio.h>
int main(){
	int n;
	int detect=0;//用于判断是否需要以分数形式表示
	int min,max,mid;
	scanf("%d",&n);
	int a[n];
	for(int i=0;i<n;i++)
	scanf("%d",&a[i]);
	//得到最小数和最大数
	if(a[0]<a[n-1]){
	min=a[0];
	max=a[n-1];
	}else{
		min=a[n-1];
		max=a[0];
	}
	//得到中位数
	if(n%2==0){
	mid=(a[n/2]+a[n/2-1])/2;
	if((a[n/2]+a[n/2-1])%2!=0){
		detect=1;
	}
	}else
	mid=a[(n-1)/2];
	if(detect)
	printf("%d %d.5 %d",max,mid,min);
	else
	printf("%d %d %d",max,mid,min);
	return 0;
}

发布了1 篇原创文章 · 获赞 0 · 访问量 15
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 游动-白 设计师: 上身试试

分享到微信朋友圈

×

扫一扫,手机浏览