程序设计基础习题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
7.8 习题
1. 编制一个C 程序,从键盘输入一个正整数,如果该数为素数,则输出该素数,否则输出该数的所有因子(除去1与自身)。
2. 编制一个C 程序,从键盘输入一个正整数N ,然后计算并输出 S=12||1222N ++++
最后计算并输出
T=1121311
1-+-+-+ ()K K
其中K S =的整数部分。
3. 编制一个C 程序,计算并输出多项式的值 S x x x n n x n n
=++
-+--++--+1050505120505105230505105123..(.)!.(.)(.)!.(.)(.)!
的值,直到 |S n -S n-1|<0.000001 为止。其中x 从键盘输入。
4. 编制一个C 程序,计算下列级数和:
s n =1+(2/1)+(3/2)+(5/3)+(8/5)+(13/8)+…+(a n /a n-1) 其中n ≥1,由键盘输入;s 1=1。
5. 编制一个C 程序,计算并输出下列级数之和:
e x x x x n x
n
=+++++12323!!!
其中n 与x 从键盘输入。
6. 编制一个C 程序,输出能写成两个数平方之和的所有三位数。
7. 如果一个数恰好等于它的所有因子(包括1但不包括自身)之和,则称之为“完数”。例如,6的因子为1、2、3,且1+2+3=6,即6是一个“完数”。编制一个C 程序,计算并输出1000以内的所有“完数”之和。
8. 编制一个C 程序,从键盘输入30个实数,分别计算并输出以下5个量:所有正数之和,所有负数之和,所有数的绝对值之和,正数的个数,负数的个数。
9. 100元钱买100只鸡,母鸡3元/只,公鸡2元/只,小鸡0.5元/只。编制一个C 程序,制定买鸡方案。
10. 设A ,B ,C ,D ,E 五人,每人额头上贴了一张或黑或白的纸。五人对坐,每人都可以看到其他人额头上的纸的颜色,但都不知道自己额头上的纸的颜色。五人相互观察后开始说话:
A 说:我看见有三人额头上贴的是白纸,一人额头上贴的是黑纸。
B 说:我看见其他四人额头上贴的都是黑纸。
C 说:我看见有一人额头上贴的是白纸,其他三人额头上贴的是黑纸。
D 说:我看见四人额头上贴的都是白纸。
E 什么也没说。
现在已知额头上贴黑纸的人说的都是真话,额头上贴白纸的人说的都是假话。编制一个
C程序,确定这五人中谁的额头上贴白纸,谁的额头上贴黑纸?
11. 寻找1000以内最小的10个素数与最大的10个素数(去掉重复的素数),计算并输出这20个素数之和。
具体要求:
(1) 画出计算过程的结构化流程图。
(2) 虽然1000以内素数个数超过20个,但仍要求考虑1000以内不够10个最小素数与10个最大素数,以及最小的10个素数与最大的10个素数有重复的情况。
(3) 输出要有文字说明。输出形式为
zui xiao su shu :素数1,素数2,…,素数10
zui da su shu :素数1,素数2,…素数10
su shu zhi he :和的具体值
(4) 在程序内部加必要的注释(至少有三处)。
方法说明:
对于某个(从小到大与从大到小)自然数k,开始时置标志flag为0,然后对2到k中的自然数j进行检测,当发现j是k的因子,就置flag为1,表示不必再对别的自然数进行检测,因为此时已经可以确定k不是素数了,只有当2到k中的所有自然数都不是k的因子(即flag保持为0)时,说明k为素数,输出k,并进行累加。
12. A、B、C、D、E五人分苹果。A将所有的苹果分为五份,将多余的一个苹果吃掉后再拿走自己的一份苹果;B将剩下的苹果分为五份,将多余的一个苹果吃掉后再拿走自己的一份苹果;C、D、E依次按同样的方法,将剩下的苹果分为五份,吃掉多余的一个苹果后拿走自己的一份苹果。编程计算原来至少有多少个苹果?A、B、C、D、E各得到多少个苹果?
具体要求:
(1) 画出计算过程的结构化流程图。
(2) 输出要有文字说明。
(3) 在程序内部加必要的注释(至少有三处)。
方法说明:
采用逐步试探的方法。
设当前试探的苹果数为n。如果n满足下列条件:
n-1(多余的一个被吃掉)后要能被5整除;
拿走一份后,余下的四份苹果数为4*(n-1)/5。
按上述策略连续进行五次分配,如果每次分配时均满足其中的条件,则试探的n即为原来的苹果数x。
为了第一次能分配,试探从6开始。
根据分配策略,最后A,B,C,D,E五人得到的苹果数(不包括吃掉的一个苹果)可以按如下公式依次计算:
a=(x-1)/5
b=(4*a-1)/5
c=(4*b-1)/5
d=(4*c-1)/5
e=(4*d-1)/5
13. 某单位要在A,B,C,D,E,F六人中选派若干人去执行一项任务,选人的条件如下:
(1) 若C不去,则B也不去;
(2) C 和D 两人中去一个;
(3) D 和E 要么都去,要么都不去; (4) A ,B ,F 三人中要去两个; (5) C 和F 不能一起去:
(6) E 和F 两人中至少去一个。 问应该选哪几个人去? 具体要求:
(1) 画出计算过程的结构化流程图。 (2) 输出要有文字说明。
(3) 在程序内部加必要的注释(至少有三处)。
8.5 习题
1. 编写一个函数sabc(),根据给定的三角形三条边长a ,b ,c ,函数返回三角形的面积。
2. 编写一个计算阶乘值的函数p()(该函数为双精度实型);再编写一个主函数,从键盘输入两个正整数m 与n(m ≥n),通过调用函数p(),计算
m m n !
()!
- 的值(即求 A m n )。
3. 编写一个函数,计算并返回给定正整数m 与n 的最大公约数。
4. 编写一个主函数,调用例8.3中的函数sushu(),输出小于1000的最大五个素数。
5. 编写一个主函数,调用例8.3中的函数sushu(),验证6到1000中的所有偶数均能表示成两个素数之和。
6. 编写一个递归函数,计算并返回菲波那契(Fibonacci )数列中第n 项的值。菲波那契数列的定义如下:
Fib(1)=1,Fib(2)=1
Fib(n)=Fib(n-1)+Fib(n-2)
7. 编写一个递归函数,计算并返回阿克玛(Ackermann)函数值。阿克玛函数的定义如下:
Ack n x y x n x n y n y n y n y Ack n Ack n x y x n y (,,)(,(,,),)
=+=======≥=--≠≠⎧⎨
⎪⎪⎪⎩⎪⎪⎪
1
0100201302401100
且且且且且 其中n ,x ,y 均为非负整数。 8. 编写计算n!的递归函数。
9. 编写一个递归函数,其功能是将一个正整数n 转换成字符串(要求各字符之间用一个空格分隔)输出。例如,输入的正整数为735,应输出字符串“7 3 5”。其中正整数在主函数中从键盘输入,要求判断其输入的合理性。
10. 计算并输出500以内的所有“亲密数”对,并输出所有“完数”之和。 具体要求:
(1) 编写一个函数facsum(n),返回给定正整数n 的所有因子(包括1但不包括自身)之和。