【CCF】小中大(C++)

输入:整数个数n,n个有序(从小到大或从大到小)整数
输出:从大到小输出最大数,中位数,最小数。中位数如果是小数要求四舍五入保留一位小数,如果是整数直接输出
AC代码

#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
    long n,min,max;
    double mid; 
    cin>>n;
    double a[n];
    for(long i=0;i<n;i++)cin>>a[i];
    //从小到大排序 
    if(a[0]<a[n-1]){
        min = a[0],max=a[n-1];
    }
    //从大到小排序 
    else if(a[0]>=a[n-1]){
        max = a[0],min=a[n-1];
    } 
    //总数是偶数,中位数=/2 
    if(n%2==0){
        mid = (a[(n/2)-1]+ a[n/2])/2;  
    }
    //奇数个,中位数最中间 
    else{
        mid = a[n/2];
    }
    if((int)mid!=mid&&int((mid+0.05)*10.0)!=int(mid*10.0)){ //四舍五入保留一位小数
        if(mid>=0)
        mid=((int)((mid+0.05)*10.0))/10.0;   
        else if(mid<0)
        mid=((int)((mid-0.05)*10.0))/10.0;   
    }
    cout<<max<<" ";
    if((int)mid!=mid)
    cout<<fixed<<setprecision(1)<<mid;  //输出格式保留一位小数
    else if((int)mid == mid)
    cout<<(int)mid;
    cout<<" "<<min;
    return 0;
 } 

注意事项(主要注意中位数):
1.中位数判断是否为整数,如果是整数强制转为int整型输出。
2.四舍五入保留1位小数方法:(double型数据a)

//五入
if(int((a+0.05)*10.0)!=int(a*10.0)){
    a=((a+0.05)*10.0)/10/0;
}
//四舍
else{
   a=(a*10.0)/10.0;
}
cout<<fixed<<setpresition(1)<<a;

注意要得到小数结果,式子中参与运算的数据一定要有小数。
全是整型数据得到的结果为整型。
int a = 3,b = 2;
doule result = a/b;
则result = 1;
double result = a/b*1.0;
则result = 1.5

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值