PAT段错误记录

刚开始用C++写算法,刷PAT 甲组的题,就被段错误泼了一大盆冷水。。。

心中一万匹某马类动物飘过

改了n遍代码,终于找到了错误的出处,暂且记录下来,只知道段错误是访问了不能访问的内存,但是不知道为什么改成这样就可以了:

输入数据的时候,用scanf(),不要用cin,就没有这样的问题了,至少现在遇到的是这样,以后还有再说。。

scanf("%d %d %d %d",&bmax,&snum,&problems,&rnum);
//    cin>>bmax>>snum>>problems>>rnum;

另外推荐便博主写的,很全很不错

http://blog.youkuaiyun.com/jk110333/article/details/19685127

### 关于PAT乙级1028题目的格式错误解决方案 对于PAT乙级1028题目中的格式错误问题,通常涉及输入输出格式不匹配或是特定条件下的边界情况未被妥善处理。为了确保程序能正确读取和解析输入数据,并按照规定格式输出结果,在编写代码时需特别注意几个方面。 #### 输入验证与预处理 当遇到像`gets()`这样的函数可能导致编译失败的情况时,应当寻找替代方案以安全地获取多行字符串输入[^3]。推荐采用标准库提供的其他方法如getline()或scanf()配合指针操作来完成相同功能的同时规避潜在风险。此外,针对可能出现的特殊字符(例如空格、逗号等),应提前做好清理工作,去除不必要的空白符并对非法字符做出适当响应。 #### 数据存储结构的选择 考虑到本题需要统计每个人的信息并最终筛选出符合条件的对象,选用合适的数据容器至关重要。列表(list)是一个不错的选择因为它支持动态增长而且访问速度快;如果追求更高的性能,则可以尝试哈希表(dict),利用键值对映射快速定位目标记录。无论哪种方式都务必保证内部元素遵循统一的标准模式以便后续检索使用。 #### 结果呈现规则 最后也是最容易忽视的一环就是如何优雅地展示计算所得的结果。严格按照官方文档所描述的形式组织答案文本,包括但不限于日期格式化、姓名拼接顺序等方面的要求。特别是涉及到年龄比较的部分,要精确到天数级别从而避免因精度损失引发误判。 ```python import sys from datetime import datetime def solve(): n = int(input()) oldest_name, youngest_name = "", "" min_age, max_age = float('inf'), -float('inf') for _ in range(n): name, gender, birthday_str = input().split() try: birthdate = datetime.strptime(birthday_str, "%Y/%m/%d") age_days = (datetime.now() - birthdate).days if age_days < min_age: min_age = age_days youngest_name = name if age_days > max_age: max_age = age_days oldest_name = name except ValueError as e: continue print(f"{oldest_name} {youngest_name}") if __name__ == "__main__": solve() ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值