C语言编程:亲密数与日期计算
需积分: 25 184 浏览量
更新于2024-08-05
1
收藏 117KB PDF 举报
"这是一份关于蓝桥杯竞赛的C语言试题及答案,包含寻找亲密数、计算世纪末星期问题以及解决马虎算式的题目。"
1. **寻找亲密数**:
- 亲密数是两个不同的正整数,它们的因子之和相等。例如,284和220就是亲密数,因为284的所有因子之和(1 + 2 + 4 + 71 + 142 = 220)等于220,而220的所有因子之和(1 + 2 + 4 + 55 + 110 = 284)等于284。
- 给定的代码使用了两个嵌套循环来寻找1到10000之间的亲密数对。外层循环遍历a,内层循环计算a的因子之和并赋值给b。接着,再用一个内循环计算b的因子之和并赋值给n。如果n等于a,且a和b不相等,那么这对数就被认为是亲密数,并打印出来。
2. **世纪末的星期**:
- 题目要求找出未来距离我们最近的一个世纪末(以99结尾的年份),其12月31日是星期日。
- 提供的代码首先将1999年12月31日设定为星期五,然后通过累加每个年份的天数来确定下一个世纪末的星期几。考虑到闰年的情况,代码中有一个条件判断来处理闰年(能被4整除但不能被100整除或能被400整除的年份)和平年(其余年份)的天数差异。
- 循环不断迭代直到找到满足条件的年份,即累加的天数对7取余为0且年份以99结尾,此时打印出这个年份。
3. **马虎的算式**:
- 题目描述了一个数学巧合,即两个不同的乘法表达式结果相同,如36 * 495 = 396 * 45 = 17820。
- 求解形如ab*cde=adb*ce的算式,其中abcde是1到9之间互不相同的数字,不包括0。
- 这类问题可以通过排列组合来解决,找出所有可能的组合,然后验证这些组合是否满足条件。对于这个问题,它实际上是一个数字排列的问题,涉及到数字的全排列和条件判断。
总结这三个知识点,我们可以看到蓝桥杯竞赛的C语言题目涵盖了算法、数学逻辑和编程技巧。寻找亲密数涉及到了整数因子的计算,世纪末的星期问题需要理解日期与星期的转换,而马虎的算式则测试了对数字特性及乘法规律的理解。这些题目对于提升编程思维和问题解决能力是非常有益的。
2022-11-17 上传
2024-05-09 上传
2021-01-20 上传
2021-03-16 上传
2022-10-16 上传
2021-08-01 上传
2021-03-16 上传
2021-10-25 上传