C课后练习-第5章
qq_41994314
这个作者很懒,什么都没留下…
展开
-
6-8 九连环数列(递归版)
在国外的一本数学书中收录了各种各样的数列,其中就有这样一个数列:1, 2, 5, 10, 21, 42, 85, 170, 341, …起先大家都感到莫名其妙,不知道它有什么用。它既非等差数列,又非等比数列,也不是一些非常有名的数列。后经人指点,大家才恍然大悟,原来它是九连环数列。第 1 项为 1,表明解开 1 个环需 1 步;第 2 项为 2,表明解开 2 个环需要 2 步;…,以此类推,第 9 项为 341,表明解开 9 个环需要 341 步,…,以此类推。请编写递归函数,求九连环数列中任一项的值原创 2020-11-23 14:37:49 · 2611 阅读 · 0 评论 -
7-3 梅森数
形如2n −1的素数称为梅森数(Mersenne Number)。例如22−1=3、23 −1=7都是梅森数。1722年,双目失明的瑞士数学大师欧拉证明了231 −1=2147483647是一个素数,堪称当时世界上“已知最大素数”的一个记录。本题要求编写程序,对任一正整数n(n<20),输出所有不超过2n−1的梅森数。输入格式:输入在一行中给出正整数n(n<20)。输出格式:按从小到大的顺序输出所有不超过2n −1的梅森数,每行一个。如果完全没有,则输出“N原创 2020-11-18 18:12:23 · 541 阅读 · 0 评论 -
7-2 王小二分饼
王小二自夸刀工不错,有人放一张大的煎饼在砧板上,问他:“饼不许离开砧板,切n刀最多能分成多少块?”输入格式:输入只有一行,为一个非负整数n,n的值不超过100。输出格式:输出有一行,为饼的数量。输入样例1:2输出样例1:4输入样例2:3输出样例2:7#include <stdio.h>int main(){ int i,n,sum=0; scanf("%d",&n); for(i=1;i<=n;i++) {原创 2020-11-18 18:09:50 · 484 阅读 · 0 评论 -
6-6 十进制转换二进制
本题要求实现一个函数,将正整数n转换为二进制后输出。函数接口定义:void dectobin( int n );函数dectobin应在一行中打印出二进制的n。建议用递归实现。裁判测试程序样例:#include <stdio.h>void dectobin( int n );int main(){ int n; scanf("%d", &n); dectobin(n); return 0;}/* 你的代码将被嵌在这里 */原创 2020-11-18 18:08:06 · 643 阅读 · 0 评论 -
6-7 递归实现顺序输出整数
本题要求实现一个函数,对一个整数进行按位顺序输出。函数接口定义:void printdigits( int n );函数printdigits应将n的每一位数字从高位到低位顺序打印出来,每位数字占一行。裁判测试程序样例:#include <stdio.h>void printdigits( int n );int main(){ int n; scanf("%d", &n); printdigits(n); return 0;}原创 2020-11-18 18:00:22 · 1232 阅读 · 0 评论 -
6-5 递归计算Ackermenn函数
本题要求实现Ackermenn函数的计算,其函数定义如下:函数接口定义:int Ack( int m, int n );其中m和n是用户传入的非负整数。函数Ack返回Ackermenn函数的相应值。题目保证输入输出都在长整型范围内。裁判测试程序样例:#include <stdio.h>int Ack( int m, int n );int main(){ int m, n; scanf("%d %d", &m, &n); pri原创 2020-11-18 17:58:44 · 229 阅读 · 0 评论 -
7-1 掉入陷阱的数字
对任意一个自然数N0,先将其各位数字相加求和,再将其和乘以3后加上1,变成一个新自然数N1;然后对N1重复这种操作,可以产生新自然数N2;……多次重复这种操作,运算结果最终会得到一个固定不变的数Nk,就像掉入一个数字“陷阱”。本题要求对输入的自然数,给出其掉入“陷阱”的过程。输入格式:在一行内给出一个自然数N0 (N0 <30000)。输出格式:对于输入的N0,逐行输出其掉入陷阱的步骤。第i行描述N掉入陷阱的第i步,格式为: i:Ni(i≥1)。当某一步得到的自然数结果原创 2020-11-16 13:42:16 · 108 阅读 · 0 评论 -
6-4 弹球距离
设有一个球从高度为h米的地方落下,碰到地面后又弹到高度为原来p倍的位置,然后又落下,再弹起,再落下…。请编写函数求初始高度为h的球下落后到基本停下来(高度小于给定阈值TOL)时在空中所经过的路程总和。函数接口定义:double dist( double h, double p );其中h是球的初始高度,p是球弹起高度与弹起前落下高度的比值;函数dist要返回球下落后到基本停下来时在空中所经过的路程总和。注意:当弹起的高度小于裁判程序定义的常数TOL时,弹起的距离不计算在内。裁判测试程序样例:#原创 2020-11-16 13:42:36 · 378 阅读 · 0 评论 -
6-3 使用函数求余弦函数的近似值
本题要求实现一个函数,用下列公式求cos(x)的近似值,精确到最后一项的绝对值小于e:cos(x)=x0 /0!−x2/2!+x4/4!−x6/6!+⋯函数接口定义:double funcos( double e, double x );其中用户传入的参数为误差上限e和自变量x;函数funcos应返回用给定公式计算出来、并且满足误差要求的cos(x)的近似值。输入输出均在双精度范围内。裁判测试程序样例:#include <stdio.h>#include <ma原创 2020-11-16 13:42:52 · 697 阅读 · 0 评论 -
6-2 判断满足条件的三位数
本题要求实现一个函数,统计给定区间内的三位数中有两位数字相同的完全平方数(如144、676)的个数。函数接口定义:int search( int n );其中传入的参数int n是一个三位数的正整数(最高位数字非0)。函数search返回[101, n]区间内所有满足条件的数的个数。裁判测试程序样例:#include <stdio.h>#include <math.h>int search( int n );int main(){ int number原创 2020-11-16 13:43:08 · 196 阅读 · 0 评论 -
6-1 使用函数统计指定数字的个数
本题要求实现一个统计整数中指定数字的个数的简单函数。函数接口定义:int CountDigit( int number, int digit );其中number是不超过长整型的整数,digit为[0, 9]区间内的整数。函数CountDigit应返回number中digit出现的次数。裁判测试程序样例:#include <stdio.h>int CountDigit( int number, int digit );int main(){int number, digit;原创 2020-11-16 13:43:26 · 1221 阅读 · 1 评论 -
5-1 为鼓励居民节约用水,自来水公司采取按用水量阶梯式计价的办法,居民应交水费y(元)与月用水量x(吨)相关:当x不超过15吨时,y=4x/3;超过后,y=2.5x−10.5。请编写程序实现水费的计
5-1为鼓励居民节约用水,自来水公司采取按用水量阶梯式计价的办法,居民应交水费y(元)与月用水量x(吨)相关:当x不超过15吨时,y=4x/3;超过后,y=2.5x−10.5。请编写程序实现水费的计算,要求定义和调用函数fun(x)计算水费,其中x的类型是double,函数类型是double。#include <stdio.h>double fun(double x);int main(){double x, y;scanf ("%lf", &x);fun(x);pr原创 2020-11-16 13:43:41 · 32258 阅读 · 1 评论