1.编制一个 C 程序,从键盘输入一个正整数,如果该数为素数,则输出该素数,否则输 出该数的所有因子 (除去 1 与自身 )。
2.编制一个 C 程序,从键盘输入一个正整数
1
2
|N |
N,然后计算并输出
S=1 2
最后计算并输出
1 1 T= 1
2 3
S 的整数部分。
2 2
K 1 1 ( 1) K
其中 K
3.编制一个 C 程序,计算并输出多项式的值
S
n
5. ( 0.5 1)
2
05. ( 0.5 1)( 05. x
2)
3
1 05. x
2!
x
3!
5. ( 0.5 1) ( 0.5 n 1) n x
n!
的值,直到 |Sn-Sn-1|<0.000001 为止。其中 x 从键盘输入。
4. 编制一个 C 程序,计算下列级数和: sn=1+(2/1)+(3/2)+(5/3)+(8/5)+(13/8)+ , +(an/an-1) 其中 n≥ 1,由键盘输入;s1=1。
5.编制一个 C 程序,计算并输出下列级数之和:
x
2
3
n
e
2! 3! n! 其中 n 与 x 从键盘输入。
6.编制一个 C 程序,输出能写成两个数平方之和的所有三位数。 7.如果一个数恰好等于它的所有因子 出 1000 以内的所有“完数”之和。
8.编制一个 C 程序,从键盘输入 30 个实数,分别计算并输出以下 和,所有负数之和,所有数的绝对值之和,正数的个数,负数的个数。 定买鸡方案。
10.设A,B, C, D,E 五人,每人额头上贴了一张或黑或白的纸。五人对坐,每人都可以 看到其他人额头上的纸的颜 ,色但都不知道自己额头上的纸的颜 。色五人相互观察后开始说 话:
A 说:我看见有三人额头上贴的是白纸,一人额头上贴的是黑纸。 B 说:我看见其他四人额头上贴的都是黑纸。
C 说:我看见有一人额头上贴的是白纸,其他三人额头上贴的是黑纸。 D 说:我看见四人额头上贴的都是白纸。 E 什么也没说。
现在已知额头上贴黑纸的人说的都是真话,额头上贴白纸的人说的都是假话。编制一个 程序,确定这五人中谁的额头上贴白纸,谁的额头上贴黑纸?
C
5 个量:所有正数之
(包括 1 但不包括自身 )之和, 则称之为 “完数”。 例
如, 6 的因子为 1、2、3,且 1+2+3=6 ,即 6 是一个“完数” 。编制一个 C 程序,计算并输
1 x
x
x x
9. 100 元钱买 100 只鸡,母鸡 3 元/只,公鸡 2 元/只,小鸡 0.5 元/只。编制一个 C 程序,制
7.9 寻找 1000 以内最小的
这 20 个素数之和。 具体要求:
10 个素数与最大的 10 个素数(去掉重复的素数) ,计算并输出
(1) 画出计算过程的结构化流程图。
(2) 虽然 1000 以内素数个数超过 20 个, 但仍要求考虑 1000 以内不够 10 个最小素数与 10 个最大素数,以及最小的
10 个素数与最大的 10 个素数有重复的情况。
(3) 输出要有文字说明。输出形式为 zuixiaosushu:素数 1,素数 2,, ,素数 10 zui da sushu:素数 1,素数 2,, 素数 10 sushuzhi he:和的具体值
(4) 在程序内部加必要的注释(至少有三处) 方法说明:
对于某个(从小到大与从大到小)自然数
k,开始时置标志 flag 为 0,然后对 2 到 k 中的
。
自然数 j 进行检测,当发现 j 是 k 的因子,就置 flag 为 1,表示不必再对别的自然数进行检 测,因为此时已经可以确定
k 不是素数了,只有当 2 到 k 中的所有自然数都不是
k 的因子
(即 flag 保持为 0)时,说明 k 为素数,输出 k,并进行累加。
7.10 A 、B、C、D、E 五人分苹果。 A 将所有的苹果分为五份,将多余的一个苹果吃掉后再
拿走自己的一份苹果; B 将剩下的苹果分为五份, 将多余的一个苹果吃掉后再拿走自己的一 份苹果; C、D、E 依次按同样的方法,将剩下的苹果分为五份,吃掉多余的一个苹果后拿 走自己的一份苹果。 编程计算原来至少有多少个苹果? 具体要求:
(1) 画出计算过程的结构化流程图。 (2) 输出要有文字说明。
(3) 在程序内部加必要的注释(至少有三处) 方法说明:
采用逐步试探的方法。 设当前试探的苹果数为
n。如果 n 满足下列条件:
5 整除;
则试探的 n 即为原来的
4*(n-1)/5 。
如果每次分配时均满足其中的条件,
n-1(多余的一个被吃掉)后要能被 拿走一份后,余下的四份苹果数为 按上述策略连续进行五次分配, 苹果数 x。
为了第一次能分配,试探从 如下公式依次计算:
a=(x-1)/5 b=(4*a-1)/5 c=(4*b-1)/5 d=(4*c-1)/5 e=(4*d-1)/5
6 开始。
根据分配策略,最后 A ,B,C,D,E 五人得到的苹果数(不包括吃掉的一个苹果)可以按
。
A、B、C、D、E 各得到多少个苹果?
7.11 某单位要在
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习题
4. 编写一个函数 sabc(),根据给定的三角形三条边长a,b,c,函数返回三角形的面积。 5. 编写一个计算阶乘值的函数 盘输入两个正整数
p()(该函数为双精度实 )型
;再编写一个主函数,从键
m! n )。 (m n)! 的值 (即求 A m
m 与 n(m≥ n),通过调用函数 p(),计算
6. 编写一个函数,计算并返回给定正整数 7. 编写一个主函数,调用例 8. 编写一个主函数,调用例
示成两个素数之和。
m 与 n 的最大公约数。
8.3 中的函数 sushu(),输出小于1000 的最大五个素数。 8.3 中的函数 sushu(),验证6 到 1000 中的所有偶数均能表
Fibonacci)数列中第 n 项的值。菲波那
9. 编写一个递归函数,计算并返回菲波那契(
契数列的定义如下:
Fib(1)=1 ,Fib(2)=1
Fib(n)=Fib(n-1)+Fib(n-2)
10. 编写一个递归函数, 计算并返回阿克玛 (Ackermann) 函数值。 阿克玛函数的定义如下:
x 1 x
Ack (n,x,y)
0 1
n 0 n 1 y 0
且 n 2 y
且 n 3 y
且
0 0
2
Ack( n 1, Ack( n, x, y 1), x)
且
n 4 y 0
且
n 0 y 0
其中 n, x,y 均为非负整数。
11. 编写计算 n!的递归函数。
12. 编写一个递归函数,其功能是将一个正整数 个空格分隔)输出。例如,输入的正整数为 函数中从键盘输入,要求判断其输入的合理性。
13. 计算并输出 500 以内的所有“亲密数”对,并输出所有“完数”之和。 具体要求:
(1) 编写一个函数 facsum(n),返回给定正整数 和。
(2) 编写一个主函数,调用 数”对以及计算所有“完数”之和。
(1)中的函数 facsum(n),寻找并输出 500 以内的所有“亲密
n 的所有因子 (包括 1 但不包括自身) 之 n 转换成字符串(要求各字符之间用一
735,应输出字符串“ 7 3 5”。其中正整数在主
(3) 分别画出函数 facsum(n)和主函数计算过程的结构化流程图。
(4) 在输出每对“亲密数”时,要求小数在前、大数在后,并去掉重复的数对。例如, 220 与 284 是一对 “亲密数”,而 284 与 220 也是一对 “亲密数” ,此时只要求输出 220 与 284 这对“亲密数” 。
(5) 输出要有文字说明(英文或汉语拼音) 。输出时每对“亲密数”用一对圆括号括起 来,两数之间用逗号分隔,且所有的“亲密数”对占一行。输出形式为 各对“亲密数” “完数”之和
(6) 在程序内部加必要的注释(至少有三处)
。
(7) 将两个函数分别放在两个文件中进行编译、连接并运行。 (8) 将两个函数放在一个文件中进行编译、连接并运行。 方法说明:
如果自然数 M 的所有因子(包括
1 但不包括自身,下同)之和为
N,而 N 的所有因子之和 1+2+3=6,因此, 6 与它 1+2+4+71+142=220 ,因
。例如, 6 不仅
为 M ,则称 M 与 N 为一对“亲密数” 。例如, 6 的所有因子之和为 自 身 构 成 一 对 “ 亲 密 数 ” ; 又 如 , 220 此, 220 与 284 为一对“亲密数” 。
如果一个自然数的所有因子之和恰好等于它自身,则称该自然数为“完数” 与它自身构成一对“亲密数” ,且 6 是一个“完数” 。
的 所 有 因 子 之 和 为
1+2+4+5+10+11+20+22+44+55+110=284 ,而 284 的所有因子之和为
7.12 计算并输出
具体要求:
k !的值。
(1) 编写一个计算 k!的递归函数,其函数名返回 (2) 编写一个主函数,首先从键盘输入 函数计算
k! 的值。
k!的值。
m 和 n 的值(要求 n≥ m≥ 0),然后调用 (1)中的
(3) 在计算 k!的递归函数中,要检查形参k 的合理性,当 k<0 时,应输出出错信息,并 返回 0 值。
(4) 在主函数中应检查从键盘输入的数据的合理性,对于不合理的输入,应输出出错信 息,并不再调用计算。
(5) 分别输入 (m, n)=(-3, 7), (0, 0), (1, 7), (9, 13), (9, 4) 运行你的程序。 14. 利用变步长梯形求积法计算定积分。 具体要求:
(1) 编写一个函数 st(a, b, eps() 要求该函数放在的文件中) ,其功能是利用变步长梯 形求积法计算定积分
b
s
a
f (x) dx
其中 eps 为精度要求。
要求画出该函数处理的结构化流程图。
(2) 编写一个主函数以及计算被积函数值的函数 b, eps),计算并输出下列积分值
8
fun(x) ,在主函数中调用 (1)中的函数 st(a,
1 dx x
s
4
精度要求为 eps=0.0001。
要求主函数与函数 fun(x) 放在同一个文件中。
(3) 编写另一个主函数以及计算被积函数值的函数 st(a, b, eps),计算并输出下列积分值
1 dx 1 1 s
1
2
fun(x) ,在主函数中调用 (1)中的函数
x
精度要求为 eps=0.00001。 同样要求主函数与函数 方法说明:
变步长梯形求积法的基本步骤如下: ①利用梯形公式计算积分。即取
n=1,h=b-a
则有
n 1
fun(x) 放在同一个文件中。
h T
n
[ f (x ) f (x
k
)]
k 1
2
k 0
其中 xk=a+kh。
②将求积区间再二等分一次 (即由原来的 n 等分变成 2n 等分),在每一个小区间内仍利用梯 形公式计算。即有 T
2n
h
n 1
2 k
f (x ) f (x [ k
2 0
) f (x ) f 2
(x k )
1 ]
k 0.5
k
15.
n 1
n 1
h = 4
k 0
h
[f (x ) f (x
k
)]
2
k 0
f (x
k 0.5
)
k 1
n 1
1 = T
n
h
f (x
k 0.5
)
2 2
k 0
③判断二等分前后两次的积分值之差的绝对值是否小于所规定的误差。若条件
|T2n-Tn| T2n 即为结果;否则作如下处理: h=h/2,n=2*n ,Tn=T2n 6. 习题 10 的整型一维数组输入数据。 最后按逆序输 6. 编写一个 C 程序, 从键盘为一个长度为 出数组中的元素,并输出数组中最大元素的下标值。 7. 编写一个 C 程序,将两个长度相同的一维数组中各下标相同的对应元素相乘,并将 结果存放到另一个一维数组中。 8. 编写一个 C 程序, 从键盘为 5× 5 的一个整型二维数组输入数据。 最后输出该二维数 组中的对角线元素。 7.13 编写一个 C 程序, 从键盘为 4× 6 的一个整型二维数组输入数据。 组中最小元素的行下标与列下标。 最后输出该二维数 7.14 从键盘输入 5 行 5 列二维整型数组的数据。编制一个函数,计算二维数组中每一行 5 的一维数组中。 最后按矩阵形式输出二 中的最小值, 并将此最小值顺序存放在一个长度为 维数组中的各元素,且各行中的最小值(即一维数组中的元素)输出到相应行的右边。 7.15 编写一个 C 函数,将一个一维数组中的元素逆转。逆转是指将数组中的第一个元素 与最后一个元素进行交换, 第二个元素与倒数第二个元素进行交换, 中间一个元素为止。 以此类推, 直到数组的 7.16 编写一个 C 函数,将矩阵进行转置后输出。 7.17 设有两个整型一维有序数组 (即数组中的元素按从小到大进行排列) 数,将这两个有序数组合并存放到另一个一维数组中, ,编写一个 C 函 并保证合并后的一维数组也是有序的。 7.18 编制一个 C 程序,从键盘输入一个由 China。要求给出判断结果的提示信息。 5 个字符组成的单词,然后判断该单词是否是 7.19 编写一个 C 程序,从键盘输入 数字字符的个数。 50 个字符,并统计其中英文字母(不分大小写)与 。现某人从 2000 年 1 月 1 日起开始“三天 。其 7.20 中国有句俗语叫“三天打鱼,两天晒网” 中以后的某年某月某日从键盘输入。 打鱼,两天晒网” ,请编程判断此人在以后的某年某月某日是在“打鱼”还是在“晒网” 7.21 一辆汽车在开始出发前其里程表上的读数是一个对称数 注:所谓对称数是指从左向右读与从右向左读完全一样。 95859,后匀速行驶两小时 后,发现里程表上是一个新的对称数。问该新的对称数是多少?汽车的速度是多少? 7.22 计算多项式函数 P6(x)=1.5x 6+3.2x 5-0.8x4+1.4x3-6.5x2+0.5x-3.7 在 x=-2.3 ,-1.1,-0.6,0.8,2.1,3.6 处的函数值。 具体要求: (1) 编写一个函数,其功能是:给定一个 x 值,返回多项式函数值。 x 值。 (2) 编写一个主函数, 定义两个一维数组, 分别存放多项式的系数和需要计算的各 然后在主函数中调用 (1)中的函数逐个计算各 x 值时的多项式值。 (3) 在主函数中的输出形式为 P(x 值)=具体的多项式值 , 方法说明: 设多项式为 Pn(x)=anx n+an-1xn-1+, +a1x+a0 可以表述成如下嵌套形式: Pn(x)=( , ((anx+an-1)x+an-2)x+ , +a1)x+a0 利用上式的特殊结构,从里往外一层一层地进行计算,即按如下递推关系进行计算: u=an u=ux+ak,k=n-1 ,, , 1,0 最后计算得到的 u 即是多项式的值 Pn(x)。 7.23 产生 100 个 0~1 之间均匀分布的随机数,并将这些随机数按非递减顺序进行排序,存 放到一个一维数组中。最后输出该有序数组。 具体要求: (1) 在产生随机数的过程中,每产生一个随机数就将它插入到前面已经有序的数组中。 (2) 输出时要求每行输出 方法说明: rk=mod(2053r k-1+13849,2 16) 16 pk=rk/2 其中初值r0=1。 10 个数据,并上下对齐。 产生随机数 pk(k=1, 2, , , 100)的公式为 解决本问题的流程图如图9.4 所示。 定义数组a[100] r=1, k=0 k<100 r=mod(2053r+13849, 2 ) 16 16 p=r/2 j=k-1
Copyright © 2019- oldu.cn 版权所有 浙ICP备2024123271号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务