PAT甲级 1012 The Best Rank

这道题逻辑的实现上其实坑不多,主要分为三部分。

  1. 声明一个结构数组保存每个学生的成绩,写一个循环录入数据
  2. 依照晴神的实现还需要一个记录排名的二维数组rank[1000000][4],并写一个循环分四次将A,C,M,E的排名计算并放入rank[][]中,主要复杂度在这一部分,其实也就O(n)的级别。
  3. 根据给出的query ID来分别给出各个学生的排名和对应科目字符。

代码就没必要列出来了,主要是有这么一个小坑,我卡了很久。

我自己按照自己的思路写了一遍后,提交后一直出现段错误,和晴神笔记里的代码仔细对比也没发现什么错误。后来我才发现,之所以会发生段错误——栈溢出,是因为我将上面的rank[1000000][4]这个数组声明在了main函数里头。

这里要说一下,main函数中的局部变量是存放在系统栈里头,而全局变量是定义在静态存储区,允许申请的空间较大,所以一般像数组元素超过 1 0 6 10^6 106的数组就不应该放在main里头,否则会发生段错误的情况,当我将rank[][]定义在了main之外就顺利通过了。
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值