《程序设计基础习题》由会员分享,可在线阅读,更多相关《程序设计基础习题(10页珍藏版)》请在金锄头文库上搜索。
1、本文格式为Word版,下载可任意编辑程序设计基础习题 7.8 习题 1.编制一个C程序,从键盘输入一个正整数,假设该数为素数,那么输出该素数,否那么输出该数的全体因子(除去1与自身)。 2.编制一个C程序,从键盘输入一个正整数N,然后计算并输出 S=1?21?22?2|N| 结果计算并输出 T=1?111?(?1)K?1 23K其中K?S的整数片面。 3.编制一个C程序,计算并输出多项式的值 Sn?1?05.x?05.(05.?1)205.(05.?1)(05.?2)305.(05.?1)?(05.?n?1)nx?x?x 2!3!n!的值,直到 |Sn-Sn-1|0.000001 为止。其中x
2、从键盘输入。 4. 编制一个C程序,计算以下级数和: sn=1+(2/1)+(3/2)+(5/3)+(8/5)+(13/8)+?+(an/an-1) 其中n1,由键盘输入;s1=1。 5.编制一个C程序,计算并输出以下级数之和: x2x3xne?1?x? 2!3!n!其中n与x从键盘输入。 x 6.编制一个C程序,输出能写成两个数平方之和的全体三位数。 7.假设一个数恰好等于它的全体因子(包括1但不包括自身)之和,那么称之为“完数”。例如,6的因子为1、2、3,且1+2+3=6,即6是一个“完数”。编制一个C程序,计算并输出1000以内的全体“完数”之和。 8.编制一个C程序,从键盘输入30个
3、实数,分别计算并输出以下5个量:全体正数之和,全体负数之和,全体数的十足值之和,正数的个数,负数的个数。 9. 100元钱买100只鸡,母鸡3元/只,公鸡2元/只,小鸡0.5元/只。编制一个C程序,制定买鸡方案。 10. 设A,B,C,D,E五人,每人额头上贴了一张或黑或白的纸。五人对坐,每人都可以看到其他人额头上的纸的颜色,但都不知道自己额头上的纸的颜色。五人相互查看后开头说话: A说:我望见有三人额头上贴的是白纸,一人额头上贴的是黑纸。 B说:我望见其他四人额头上贴的都是黑纸。 C说:我望见有一人额头上贴的是白纸,其他三人额头上贴的是黑纸。 D说:我望见四人额头上贴的都是白纸。 E什么也没
4、说。 现在已知额头上贴黑纸的人说的都是真话,额头上贴白纸的人说的都是假话。编制一个C程序,确定这五人中谁的额头上贴白纸,谁的额头上贴黑纸? 11. 探索1000以内最小的10个素数与最大的10个素数(去掉重复的素数),计算并输出这20个素数之和。 概括要求: (1) 画出计算过程的布局化流程图。 (2) 虽然1000以内素数个数超过20个,但仍要求考虑1000以内不够10个最小素数与10个最大素数,以及最小的10个素数与最大的10个素数有重复的处境。 (3) 输出要有文字说明。输出形式为 zuixiaosushu:素数1,素数2,?,素数10 zui da sushu:素数1,素数2,?素数1
5、0 sushuzhi 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依次按同样
6、的方法,将剩下的苹果分为五份,吃掉多余的一个苹果后拿走自己的一份苹果。编程计算原来至少有多少个苹果?A、B、C、D、E各得到多少个苹果? 概括要求: (1) 画出计算过程的布局化流程图。 (2) 输出要有文字说明。 (3) 在程序内部加必要的解释(至少有三处)。 方法说明: 采用逐步探索的方法。 设当前探索的苹果数为n。假设n得志以下条件: n-1(多余的一个被吃掉)后要能被5整除; 拿走一份后,余下的四份苹果数为4*(n-1)/5。 按上述策略连续举行五次调配,假设每次调配时均得志其中的条件,那么探索的n即为原来的苹果数x。 为了第一次能调配,探索从6开头。 根据调配策略,结果A,B,C,D
7、,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、的解释(至少有三处)。 8.5 习题 1. 编写一个函数sabc(),根据给定的三角形三条边长a,b,c,函数返回三角形的面积。 2. 编写一个计算阶乘值的函数p()(该函数为双精度实型);再编写一个主函数,从键 m!盘输入两个正整数m与n(mn),通过调用函数p(),计算的值(即求Anm)。 (m?n)! 3. 编写一个函数,计算并返回给定正整数m与n的最大公约数。 4. 编写一个主函数,调用例8.3中的函数sushu(),输出小于1000的最大五个素数。 5. 编写一个主函数,调用例8.3中的函数sushu(),验证6到1000中的全体偶数均能表示成两个素数之和。 6. 编写一个递归函数,
9、计算并返回菲波那契(Fibonacci)数列中第n项的值。菲波那契数列的定义如下: Fib(1)=1,Fib(2)=1 Fib(n)=Fib(n-1)+Fib(n-2) 7. 编写一个递归函数,计算并返回阿克玛(Ackermann)函数值。阿克玛函数的定义如下: ?x?1?x?0Ack(n,x,y)?1?2?Ack(n?1,Ack(n,x,y?1),x)n?0n?1且y?0n?2且y?0 n?3且y?0n?4且y?0n?0且y?0其中n,x,y均为非负整数。 8. 编写计算n!的递归函数。 9. 编写一个递归函数,其功能是将一个正整数n转换成字符串(要求各字符之间用一个空格分隔)输出。例如,输
10、入的正整数为735,应输出字符串“7 3 5”。其中正整数在主函数中从键盘输入,要求判断其输入的合理性。 10. 计算并输出500以内的全体“亲近数”对,并输出全体“完数”之和。 概括要求: (1) 编写一个函数facsum(n),返回给定正整数n的全体因子(包括1但不包括自身)之和。 (2) 编写一个主函数,调用(1)中的函数facsum(n),探索并输出500以内的全体“亲近数”对以及计算全体“完数”之和。 (3) 分别画出函数facsum(n)和主函数计算过程的布局化流程图。 (4) 在输出每对“亲近数”时,要求小数在前、大数在后,并去掉重复的数对。例如,220与284是一对“亲近数”,
11、而284与220也是一对“亲近数”,此时只要求输出220与284这对“亲近数”。 (5) 输出要有文字说明(英文或汉语拼音)。输出时每对“亲近数”用一对圆括号括起来,两数之间用逗号分隔,且全体的“亲近数”对占一行。输出形式为 各对“亲近数” “完数”之和 (6) 在程序内部加必要的解释(至少有三处)。 (7) 将两个函数分别放在两个文件中举行编译、连接并运行。 (8) 将两个函数放在一个文件中举行编译、连接并运行。 方法说明: 假设自然数M的全体因子(包括1但不包括自身,下同)之和为N,而N的全体因子之和为M,那么称M与N为一对“亲近数”。例如,6的全体因子之和为1+2+3=6,因此,6与它自
12、身构成一对“亲近数”;又如,220的全体因子之和为1+2+4+5+10+11+20+22+44+55+110=284,而284的全体因子之和为1+2+4+71+142=220,因此,220与284为一对“亲近数”。 假设一个自然数的全体因子之和恰好等于它自身,那么称该自然数为“完数”。例如,6不仅与它自身构成一对“亲近数”,且6是一个“完数”。 11. 计算并输出 ?k!的值。 ?概括要求: (1) 编写一个计算k!的递归函数,其函数名返回k!的值。 (2) 编写一个主函数,首先从键盘输入m和n的值(要求nm0),然后调用(1)中的函数计算 ?k!的值。 ? (3) 在计算k!的递归函数中,要
13、检查形参k的合理性,当k0时,应输出出错信息,并返回0值。 (4) 在主函数中应检查从键盘输入的数据的合理性,对于不合理的输入,应输出出错信息,并不再调用计算。 (5) 分别输入(m, n)=(-3, 7), (0, 0), (1, 7), (9, 13), (9, 4)运行你的程序。 3. 利用变步长梯形求积法计算定积分。 概括要求: (1) 编写一个函数st(a, b, eps)(要求该函数放在独立的文件中),其功能是利用变步长梯形求积法计算定积分 s?baf(x)dx 其中eps为精度要求。 要求画出该函数处理的布局化流程图。 (2) 编写一个主函数以及计算被积函数值的函数fun(x),
14、在主函数中调用(1)中的函数st(a, b, eps),计算并输出以下积分值 s?841dx x精度要求为eps=0.0001。 要求主函数与函数fun(x)放在同一个文件中。 (3) 编写另一个主函数以及计算被积函数值的函数fun(x),在主函数中调用(1)中的函数st(a, b, eps),计算并输出以下积分值 11s?dx ?1x2?1精度要求为eps=0.00001。 同样要求主函数与函数fun(x)放在同一个文件中。 方法说明: 变步长梯形求积法的根本步骤如下: 利用梯形公式计算积分。即取 n=1,h=b-a 那么有 ?hTn?2?f(xk?0n?1k)?f(xk?1) 其中xk=a+kh。 将求积区间再二等分一次(即由原来的n等分变成2n等