C语言上机考试题二 (60分)
对下面的各题编写函数完成其操作,并在主函数中调用它输出结果
(用函数指针调用的加5分)。要求对任何一道题不看任何书在25分钟
内完成程序设计,运行无误。
1. 德国数学家哥德巴赫曾猜测:任何大于6 的偶数都可以分解成
两个素数的和。但有些偶数可以分解成多种素数对的和,如:
10 3+7 ,10 5+5 ,即10可以分解成两种不同的素数对。试求
n 1234可以分解成多少种不同的素数对 (注: A+B与B+A认为
是相同素数对)。 (提示:先利用求素数的函数求出小于n 的
所有素数存于数组中,然后对数组操作求素数对数。答案:
25 )
3
2. 求方程x -2x-5 0在区间[1.5,2.5]上的一个实根。 要求:按四舍
五入的方式精确到小数点后第二位。 (提示:先编写两个分别
3 2
求F(x) x -2x-5和F’(x) 3 x -2 的函数,再以区间的中点为起点
用牛顿迭代法求之。答案:2.09 )
3. 定义一个带参数的宏实现两个数的交换,利用它编写一个能对
任意长度的数组降序排序的函数实现对一个数组排序。要求:
函数形参用指针作参数;数组长度不超过20 ,数组实际长度和
数组元素的赋值从键盘输入,分别输出排序前和排序后的结
果。
4. 斐波那契数列的前二项是1,1,其后每一项都是前面两项之
和,求第40个斐波那契数。 (要求使用数组,答案:
102334155 )
5. 水仙花数是一个三位正整数,它等于它的各位数字的立方之和.
例如:153 1^3+5^3+3^3,所以153是水仙花数. 试求最大的水仙
花数。 (答案:407 )
6. 求[500,2500]之间按递增顺序的素数中的第25大的素数。 (答
案:2309 )
7. “完全数”是指一个数恰好等于它的因子之和 (除自身外),例
如:6 =1+2 +3 。求[1,1000]之间所有完全数之和。 (答案:
530 )
8. 若某整数N 的所有因子之和等于N 的倍数,则N称为多因子完备
数,如数28,其因子之和1+2+4+7+14+28 56 2*28 ,28是多因子完
备数。求[1,700]之间第二大多因子完备数。 (答案:496 )
9. 已知24有8个因子(即:1,2 ,3 ,4 ,6 ,8 ,12 ,24) ,而24正好
被8整除。求[1,100]之间第10个能被其因子数目整除的数。
(答案:56 )
10. 求[1, 1000]之间前20个能同时被5和7整除的数之和。 (答
案:7350 )