蓝桥杯刷题第三天

本文介绍了使用C++解决一道简单的模拟题,通过数组存储数字并进行排序来计算最大值、最小值和平均值。讨论了代码中可能的易错点,如浮点型数据处理和简化除法操作,以及使用STL库函数优化解法。
摘要由CSDN通过智能技术生成

最近感觉有点烦躁和浮躁!难绷

P8717

类型:模拟题

解法:#include<bits/stdc++.h>

using namespace std;

int main()

{

int min,max,n,i;

double average=0,sum=0;

scanf("%d",&n);

int a[n];

for(i=0;i<n;i++){

scanf("%d",&a[i]);

sum+=a[i];

}

average=sum/n;

sort(a,a+n);

min=a[0],max=a[n-1];

printf("%d\n%d\n%.2f",max,min,average);

return 0;

}

分析:我的代码相对来说时比较容易想到的,先通过数组来储存数字,然后对数字进行排序,进而求出最大值和最小值以及平均值,难度较小的模拟题;

易错点:浮点型数据的处理和求平均值的被除数容易写成非n数。

改进点:因为题目感觉过于简单,不想浪费太多时间,就简单看了下官方解法。

我是用的方法时间复杂度是n*log(n)(排序的时间复杂度)。我觉得可以学到的有对于类型转换(double)直接实现int转换或者*1.0也可以实现,同时直接除于n然后输出也是可以改进的点,更加简单啦!将数组开大点可以进一步减少代码行数,但是挤压了空间,增加了空间复杂度,不可取!

对于输出的控制小数点位数在cout中可以采用fixed与setprecision(n)连用可以控制小数点后的位数但我觉得没有我写的好记,哈哈哈。排序完直接对最大值和最小值的输出也是可以改进的一个点

解法二:可以采用stl中的min和max函数!

直接对输入的数据进行判断,最后输出,减少了数组的操作!而且时间复杂度相对于上着小。但是看情况喽,本人有时候比较懒,只想简单点写。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值