C语言编程:亲密数与日期计算

需积分: 25 2 下载量 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语言题目涵盖了算法、数学逻辑和编程技巧。寻找亲密数涉及到了整数因子的计算,世纪末的星期问题需要理解日期与星期的转换,而马虎的算式则测试了对数字特性及乘法规律的理解。这些题目对于提升编程思维和问题解决能力是非常有益的。