收藏 分享(赏)

100个经典C语言题目.doc

上传人:fmgc7290 文档编号:6102835 上传时间:2019-03-27 格式:DOC 页数:85 大小:704KB
下载 相关 举报
100个经典C语言题目.doc_第1页
第1页 / 共85页
100个经典C语言题目.doc_第2页
第2页 / 共85页
100个经典C语言题目.doc_第3页
第3页 / 共85页
100个经典C语言题目.doc_第4页
第4页 / 共85页
100个经典C语言题目.doc_第5页
第5页 / 共85页
点击查看更多>>
资源描述

1、1100 个经典 C 语言程序1 绘制余弦曲线在屏幕上用 “*”显示 0360 度的余弦函数 cos(x)曲线*问题分析与算法设计如果在程序中使用数组,这个问题十分简单。但若规定不能使用数组,问题就变得不容易了。关键在于余弦曲线在 0360 度的区间内,一行中要显示两个点,而对一般的显示器来说,只能按行输出,即:输出第一行信息后,只能向下一行输出,不能再返回到上一行。为了获得本文要求的图形就必须在一行中一次输出两个 “*”。为了同时得到余弦函数 cos(x)图形在一行上的两个点,考虑利用 cos(x)的左右对称性。将屏幕的行方向定义为 x,列方向定义为 y,则 0180 度的图形与 18036

2、0 度的图形是左右对称的,若定义图形的总宽度为 62 列,计算出 x 行 0180 度时 y 点的坐标m,那么在同一行与之对称的 180360 度的 y 点的坐标就 应为 62-m。程序中利用反余弦函数 acos 计算坐标 (x,y)的对应关系。使用这种方法编出的程序短小精炼,体现了一定的技巧。*程序说明与注释#include#includevoid main()double y;int x,m;for(y=1;y=-1;y-=0.1) /*y 为列方向,值从 1 到 -1,步长为 0.1*/m=acos(y)*10; /*计算出 y 对应的弧度 m,乘以 10 为图形放大倍数 */for(x

3、=1;x#include void main()double y;int x,m,n,yy;for(yy=0;yy#includevoid main()double y;int x,m;for(y=10;y=-10;y-)m=2.5*sqrt(100-y*y); /*计算行 y 对应的列坐标 m, 2.5 是屏幕纵横比调节系数因为屏幕的行距大于列距,不进行调节显示出来的将是椭圆 */for(x=1;xvoid main()int integer,i,max,min,sum;max=-32768; /*先假设当前的最大值 max 为 C 语言整型数的最小值 */min=32767; /*先假设当

4、前的最小值 min 为 C 语言整型数的最大值 */sum=0; /*将求累加和变量的初值置为 0*/for(i=1;imax)max=integer; /*通过比较筛选出其中的最高分 */if(integervoid main()long i;int j;printf(“Please input number:“);scanf(“%ld“,for(j=999;j=100;j-)if(i%j=0)printf(“The max factor with 3 digits in %ld is:%d,n“,i,j);break;*运行结果输入: 555555输出: The max factor wi

5、th 3 digits in 555555 is:7776 6.高次方数的尾数求 13 的 13 次方的最后三位数*问题分析与算法设计解本题最直接的方法是:将 13 累乘 13 次方截取最后三位即可。但是由于计算机所能表示的整数范围有限,用这种 “正确 ”的算法不可能得到正确的结果。事实上,题目仅要求最后三位的值,完全没有必要求 13 的 13 次方的完整结果。研究乘法的规律发现:乘积的最后三位的值只与乘数和被乘数的后三位有关,与乘数和被乘数的高位无关。利用这一规律,可以大大简化程序。*程序说明与注释#includevoid main()int i,x,y,last=1; /*变量 last

6、保存求 X 的 Y 次方过程中的部分乘积的后三位 */printf(“Input X and Y(X*Y):“);scanf(“%d*%d“,for(i=1;i=2)当 J=1 或 J=N+1 时:其值为 1J!=1 且 J!=N+1 时:其值为第 N-1 行的第 J-1 个值与第 N-1 行第 J 个值之和将这些特点提炼成数学公式可表示为:1 x=1 或 x=N+1c(x,y)= c(x-1,y-1)+c(x-1,y) 其它本程序应是根据以上递归的数学表达式编制的。*程序说明与注释#includevoid main()int i,j,n=13;printf(“N=“);while(n12)s

7、canf(“%d“, /*控制输入正确的值以保证屏幕显示的图形正确 */for(i=0;ivoid printb(int,int);void main()6int x;printf(“Input number:“);scanf(“%d“,printf(“number of decimal form:%dn“,x);printf(“ its binary form:“);printb(x,sizeof(int)*8); /*x:整数 sizeof(int):int 型在内存中所占的字节数sizeof(int)*8:int 型对应的位数 */putchar(n); void printb(int

8、x,int n)if(n0)putchar(0+(unsigned)(x /*输出第 n 位 */printb(x,n-1); /*归调用,输出 x 的后 n-1 位 */*运行结果输入: 8输出:number of decimal form:8its bunary form:0000000000001000输入: -8输出: number of decimal form:-8its binary form:1111111111111000输入: 32767输出: number of decimal form:32767its binary form:0111111111111111输入: -

9、32768输出: number of decimal form:-32768its binary form:1000000000000000输入: 128输出: number of decimal form:128its binary form:000000001000000010 11.打鱼还是晒网中国有句俗语叫 “三天打鱼两天晒网 ”。某人从 1990 年 1 月 1 日起开始 “三天打鱼两天晒网 ”,问这个人在以后的某一天中是“打鱼 ”还是 “晒网 ”。*问题分析与算法设计根据题意可以将解题过程分为三步:1)计算从 1990 年 1 月 1 日开始至指定日期共有多少天;2)由于 “打鱼

10、”和 “晒网 ”的周期为 5 天,所以将计算出的天数用 5 去除;3)根据余数判断他是在 “打鱼 ”还是在 “晒网 ”;若 余数为 1, 2, 3,则他是在 “打鱼 ”否则 是在 “晒网 ”在这三步中,关键是第一步。求从 1990 年 1 月 1 日至指定日期有多少天,要判断经历年份中是否有闰年,二月为 29 天,平年为 28 天。闰年的方法可以用伪语句描述如下:如果 (年能被 4 除尽 且 不能被 100 除尽 )或 能被 400 除尽 )则 该年是闰年;否则 不是闰年。C 语言中判断能否整除可以使用求余运算 (即求模 )*程序与程序注释#includeint days(struct dat

11、e day);7struct dateint year;int month;int day;void main()struct date today,term;int yearday,year,day;printf(“Enter year/month/day:“);scanf(“%d%d%d“, /*输入日期 */term.month=12; /*设置变量的初始值:月 */term.day=31; /*设置变量的初始值:日 */for(yearday=0,year=1990;year0for(i=1;ivoid main()int i;float total=0;for(i=0;i#inclu

12、devoid main()int i8,i5,i3,i2,i1,n8,n5,n3,n2,n1;float max=0,term;for(i8=0;i8max)max=term;n1=i1;n2=i2;n3=i3;n5=i5;n8=i8;printf(“For maxinum profit,he should so save his money in a bank:n“);printf(“ made fixed deposit for 8 year: %d timesn“,n8);printf(“ made fixed deposit for 5 year: %d timesn“,n5);pri

13、ntf(“ made fixed deposit for 3 year: %d timesn“,n3);printf(“ made fixed deposit for 2 year: %d timesn“,n2);printf(“ made fixed deposit for 1 year: %d timesn“,n1);printf(“ Toal: %.2fn“,max);/*输出存款方式 */*运行结果For maxinum profit,he should so save his money in a bank:made fixed deposit for 8 year: 0timesm

14、ade fixed deposit for 5 year: 4timesmade fixed deposit for 3 year: 0timesmade fixed deposit for 2 year: 0timesmade fixed deposit for 1 year: 0timesTotal:8841.0110可见最佳的存款方案为连续四次存 5 年期。*思考题某单位对职工出售住房,每套为 2 万元。买房付款的方法是:一次交清,优惠 20%从第一年开始,每年年初分期付款:5 年交清,优惠 50%;10 年交清,优惠 10%;20 年交清,没有优惠。现在有人手中正好有 2 万元,若假定

15、在今后 20 年中物价和银行利率均保持不变,问他应当选择哪种付款方式可以使应付的钱最少?- 作者: huang01- 发布时间: 2004-10-21 17:01:57- 14 15.捕鱼和分鱼A、 B、 C、 D、 E 五个人在某天夜里合伙去捕鱼,到第二天凌晨时都疲惫不堪,于是各自找地方睡觉。日上三杆, A 第一个醒来,他将鱼分为五份,把多余的一条鱼扔掉,拿走自己的一份。 B 第二个醒来,也将鱼分为五份,把多余的一条鱼扔掉,保持走自己的一份。 C、 D、 E 依次醒来,也按同样的方法拿走鱼。问他们合伙至少捕了多少条鱼?*问题分析与算法设计根据题意,总计将所有的鱼进行了五次平均分配,每次分配时

16、的策略是相同的,即扔掉一条鱼后剩下的鱼正好分成五份,然后拿走自己的一份,余下其它的四份。假定鱼的总数为 X,则 X 可以按照题目的要求进行五次分配: X-1 后可被 5 整除,余下的鱼为 4*(X-1)、 5。若 X 满足上述要求,则 X 就是题目的解。*程序与程序注释#includevoid main()int n,i,x,flag=1; /*flag:控制标记 */for(n=6;flag;n+) /*采用试探的方法。令试探值 n 逐步加大 */for(x=n,i=1ivoid main()int i,j,n=0,x; /*n 为标志变量 */for(i=23;n=0;i+=2) /*控制

17、试探的步长和过程 */for(j=1,x=i;j=11;j+) /*完成出售四次的操作 */if(x+1)%(j+1)=0) /*若满足整除条件则进行实际的出售操作 */x-=(x+1)/(j+1);else x=0;break; /*否则停止计算过程 */if(j=5 /*输出结果 */n=1; /*控制退出试探过程 */*运行结果There are 59 fishes at first. *思考题日本著名数学游戏专家中村义作教授提出这样一个问题:父亲将 2520 个桔子分给六个儿子。分完后父亲说: “老大将分给你的桔子的 1/8 给老二;老二拿到后连同原先的桔子分 1/7 给老三;老三拿到

18、后连同原先的桔子分 1/6 给老四;老四拿到后连同原先的桔子分 1/5 给老五;老五拿到后连同原先的桔子分 1/4 给老六;老六拿到后连同原先的桔子分 1/3 给老大 ”。结果大家手中的桔子正好一样多。问六兄弟原来手中各有多少桔子?16 1.7 分数四则运算对输入的两个分数进行 +、 -、 *、 /四则运算,输出分数结果。算法分析如下:对分数 b/a 与 d/c,不管哪一种运算,其运算结果均为 y/x 形式。对结果 y/x 进行化简,约去分子分母的公因数:试用i(i=1,.,y) 对 y,x 进行试商,若能同时整除 y,x,则 y,x 同时约去公因数 i,最后打印约简的分数。程序代码如下:#i

19、ncludevoid main()long int a,b,c,d,i,x,y,z;char op;printf(“两分数 b/a,d/c 作 +, -, *, /四则运算,结果为分数。 n“);printf(“请输入分数运算式。 n“);scanf(“%ld/%ld%c%ld/%ld“,if(a=0|c=0) printf(“分母为 0 输入错误 !“);exit(0);if(op=+)y=b*c+d*a;x=a*c; /*运算结果均为 y/x*/if(op=-)y=b*c-d*a,x=a*c;if(op=*)y=b*d;x=a*c;if(op=/)y=b/c;x=a/d;z=x;12if(

20、xy) z=y;i=z;while(i1) /*y/x 分子分母约去公因数 */if(x%i=0y=y/i;continue;i-;printf(“%ld/%ld%c%ld/%ld=%ld/%ld.n“,b,a,op,d,c,y,x);- 作者: huang01- 发布时间: 2004-10-21 17:02:30- 17 17.平分七筐鱼甲、乙、丙三位鱼夫出海打鱼,他们随船带了 21 只箩筐。当晚返航时,他们发现有七筐装满了鱼,还有七筐装了半筐鱼,另外七筐则是空的,由于他们没有秤,只好通过目测认为七个满筐鱼的重量是相等的, 7 个半筐鱼的重量是相等的。在不将鱼倒出来的前提下,怎样将鱼和筐平分

21、为三份?*问题分析与算法设计根据题意可以知道:每个人应分得七个箩筐,其中有 3.5 筐鱼。采用一个 3*3 的数组 a 来表示三个人分到的东西。其中每个人对应数组 a 的一行,数组的第 0 列放分到的鱼的整筐数,数组的第 1 列放分到的半筐数,数组的第 2 列放分到的空筐数。由题目可以推出:。数组的每行或每列的元素之和都为 7;。对数组的行来说,满筐数加半筐数 =3.5;。每个人所得的满筐数不能超过 3 筐;。每个人都必须至少有 1 个半筐,且半筐数一定为奇数对于找到的某种分鱼方案,三个人谁拿哪一份都是相同的,为了避免出现重复的分配方案,可以规定:第二个人的满筐数等于第一个人的满筐数;第二个人

22、的半筐数大于等于第一个人的半筐数。*程序与程序注释#includeint a33,count;void main()int i,j,k,m,n,flag;printf(“It exists possible distribtion plans:n“);for(i=0;i3*/a00=i;for(j=i;j3*/a10=j;if(a20=7-j-a00)3)continue; /*第三个人满筐数不能 3*/if(a20=前一个人,以排除重复情况 */for(k=1;kvoid main()long int i;int count=0; /*count: 统计满足条件的五位数的个数 */for(i

23、=1000;ivoid main()int i;for(i=0;i+) /*试探商的值 */if(i*8+7)*8+1)*8+1=(34*i+15)*17+4) /*逆推判断所取得的当前 i 值是否满足关系式 */*若满足则输出结果 */printf(“The required number is: %dn“,(34*i+15)*17+4);break; /*退出循环 */*运行结果The required number is:199320 20.一个奇异的三位数一个自然数的七进制表达式是一个三位数,而这个自然数的九进制表示也是一个三位数,且这两个三位数的数码正好相反,求这个三位数。*题目分析

24、与算法设计根据题意可知,七进制和九进制表示的这全自然数的每一位一定小于 7,可设其七进制数形式为 kji(i、 j、 k 的取值分别为 16),然后设其九进制表示形式为 ijk。*程序说明与注释#includevoid main()int i,j,k;for(i=1;ivoid main()int i;for(i=1002;ivoid main()int t,a5; /*数组 a 存放分解的数字位 */long int k,i;for(i=95860;i+) /*以 95860 为初值,循环试探 */for(t=0,k=100000;k=10;t+) /*从高到低分解所取 i 值的每位数 */

25、 /* 字,依次存放于 a0a5 中 */at=(i%k)/(k/10); k/=10;if(a0=a4)printf(“The velocity of the car is: %.2fn“,(i-95859)/2.0);break;*运行结果The new symmetrical number kelometers is:95959.The velocity of the car is:50.00 *思考题将一个数的数码倒过来所得到的新数叫原数的反序数。如果一个数等于它的反序数,则称它为对称数。求不超过 1993 的最大的二进制的对称数23 23.阿姆斯特朗数如果一个正整数等于其各个数字的立

26、方和,则称该数为阿姆斯特朗数 (亦称为自恋性数 )。16如 407=43+03+73 就是一个阿姆斯特朗数。试编程求 1000 以内的所有阿姆斯特朗数。*题目分析与算法设计可采用穷举法,依次取 1000 以内的各数 (设为 i),将 i 的各位数字分解后,据阿姆斯特朗数的性质进行计算和判断。*程序说明与注释#includevoid main()int i,t,k,a3;printf(“There are follwing Armstrong number smaller than 1000:n“);for(i=2;i=10;t+) /*截取整数 i 的各位 (从高向低位 )*/at=(i%k)

27、/(k/10); /*分别赋于 a0a2*/k/=10;if(a0*a0*a0+a1*a1*a1+a2*a2*a2=i)/*判断 i 是否为阿姆斯特朗数 */printf(“%5d“,i); /*若满足条件,则输出 */printf(“n“);*运行结果There are following Armstrong number smaller than 1000:153 370 371 407- 作者: huang01- 发布时间: 2004-10-21 17:03:40- 24 24.完全数如果一个数恰好等于它的因子之和,则称该数为 “完全数 ”。*题目分析与算法设计根据完全数的定义,先计算所

28、选取的整数 a(a 的取值 11000) 的因子,将各因子累加于 m,若 m 等于 a,则可确认 a 为完全数。*程序说明与注释#includevoid main()int a,i,m;printf(“There are following perfect numbers smaller than 1000:n“);for(a=1;avoid main()int a,i,b,n;printf(“There are following friendly-numbers pair smaller than 3000:n“);for(a=1;avoid main()long mul,number,k

29、,ll,kk;printf(“It exists following automorphic nmbers small than 200000:n“);18for(number=0;number0;k*=10);/*由 number 的位数确定截取数字进行乘法时的系数 k*/kk=k*10; /*kk 为截取部分积时的系数 */mul=0; /*积的最后 n 位 */ll=10; /*ll 为截取乘数相应位时的系数 */while(k0)mul=(mul+(number%(k*10)*(number%ll-number%(ll/10)%kk;/*(部分积 +截取被乘数的后 N 位 *截取乘数的

30、第 M 位 ), %kk 再截取部分积 */k/=10; /*k 为截取被乘数时的系数 */ll*=10;if(number=mul) /*判断若为自守数则输出 */printf(“%ld “,number);*运行结果It exsts following automorphic numbners smaller than 200000:0 1 5 6 25 76 376 625 9376 90625 10937627 28.回文数打印所有不超过 n(取 nvoid main()int m16,n,i,t,count=0;long unsigned a,k;printf(“No. number

31、 its square(palindrome)n“);for(n=1;n1;i-)k+=mi-1*t;t*=10;if(k=n*n)printf(“%2d%10d%10dn“,+count,n,n*n); *运行结果No. number its square(palindrome)1 1 12 2 43 3 9194 11 1215 22 4846 26 6767 101 102018 111 123219 121 14641 - 作者: huang01- 发布时间: 2004-10-21 17:04:07- 28 29.求具有 abcd=(ab+cd)2 性质的四位数3025 这个数具有一种

32、独特的性质:将它平分为二段,即 30 和 25,使之相加后求平方,即 (30+25)2 ,恰好等于 3025 本身。请求出具有这样性质的全部四位数。*题目分析与算法设计具有这种性质的四位数没有分布规律,可以采用穷举法,对所有四位数进行判断,从而筛选出符合这种性质的四位数。具体算法实现,可任取一个四位数,将其截为两部分,前两位为 a,后两位为 b,然后套用公式计算并判断。*程序说明与注释#includevoid main()int n,a,b;printf(“There are following number with 4 digits satisfied conditionn“);for(n

33、=1000;nvoid main()int n1,nm,i,j,flag,count=0;doprintf(“Input START and END=?“);scanf(“%d%d“, /*输入求素数的范围 */while(!(n10void main()int i,n;for(i=4;i#include#define NUM 320int numberNUM; /*存放不超过 1993 的全部奇数 */int fflag(int i);void main()int i,j,count=0;printf(“there are follwing primes sequences in first

34、 row:n“);for(j=0,i=3;i1898;j-) /*从最大的素数开始向 1898 搜索 */for(i=0;numberj-number1898;i+); /*循环查找满足条件的素数 */if(numberj-number=1898) /*若两个素数的差为 1898,则输出 */printf(“(%d).%3d,.,%dn“,+count,number,numberj); int fflag(int i)int j;if(i#includeint number2105; /*存放可逆素数及素数分解后的各位数字 */int select110; /*可以放在矩阵第一行和最后一行的素

35、数的下标 */ int array45; /*4X4 的矩阵,每行 0 号元素存可逆素数对应的数组下标 */int count; /*可逆素数的数目 */int selecount; /*可以放在矩阵第一行和最后一行的可逆素数的数目 */int larray2200; /*存放素数前二、三位数的临时数组所对应的数量计数器 */int lcount2;int num(int number);int ok(int number);void process(int i);void copy_num(int i);int comp_num(int n);int find1(int i);int fin

36、d2(void);int find0(int num);void p_array(void); 23void main()int i,k,flag,cc=0,i1,i4;printf(“there are magic squares with invertable primes as follw:n“);for(i=1001;i0;number/=10) /*将素数变为反序数 */j=j*10+number%10;if(!ok(j) return 0; /*判断反序数是否为素数 */return 1;int ok(int number) /*判断是否为素数 */int i,j;if(numbe

37、r%2=0) return 0;j=sqrt(double)number)+1;for(i=3;i=1;j-,num/=10)numberj=num%10;void copy_num(int i) /*将 array0指向的素数的各位数字复制到 array 中 */int j;for(j=1;jj;int comp_num(int n) /*判断 array 中每列的前 n 位是否与可逆素数允许的前 n 位矛盾 */static int ii; /*用内部静态变量保存前一次查找到的元素下标 */static int jj; /*ii:前一次查找前二位的下标, jj:前一次查找前三位的下标 */

38、int i,num,k,*p; /*p:指向对应的要使用的前一次下标 ii 或 jj*/int *pcount; /*pcount: 指向要使用的临时数组数量的计数器 */switch(n) /*根据 n 的值选择对应的一组控制变量 */case 2:pcount=p=break;case 3:pcount=p=break;default:return 0;for(i=1;i=0(*p)+); /*否则向后找 */if(*p=*pcount)*p=0; return 0;25if(num!=larrayn-2*p)return 0; /*前 n 位不是可逆素数允许的值则返回 0*/return

39、 1;int find1(int i) /*判断列方向是否是可逆素数 */int num,j;for(num=0,j=0;j=0j+);if(j=count) j=0;return 0; if(num=numberj0) return 1;else return 0;void p_array(void) /*输出矩阵 */int i,j;for(i=0;ivoid main()int x,y,z,j=0;printf(“Folleing are possible plans to buy 100 fowls with 100 Yuan.n“);for(x=0;xvoid main()int i

40、=1; /*i 为所设的阶梯数 */while(!(i%2=1) /*满足一组同余式的判别 */printf(“Staris_number=%dn“,i);*运行结果Staris_number=119*问题的进一步讨论此题算法还可考虑求 1、 2、 4、 5 的最小公倍数 n,然后判 t(t 为 n-1) 0(mod7) 是否成立,若不成立则 t=t+n,再进行判别,直至选出满足条件的 t 值。请自行编写程序实现。2739.年龄几何张三、李四、王五、刘六的年龄成一等差数列,他们四人的年龄相加是 26,相乘是 880,求以他们的年龄为前 4 项的等差数列的前 20 项。*题目分析与算法设计设数列

41、的首项为 a,则前 4 项之和为 “4*n+6*a“, 前 4 项之积为 “n*(n+a)*(n+a+a)*(n+a+a+a)“ 。同时“1void main()int n,a,i;printf(“The series with equal difference are:n“);for(n=1;nvoid main()int i,j,k,count=1;printf(“There are follwing small exchange plans for 1 Yuan note:n“);for(i=0;ivoid main()int i,j,count=0;printf(“ RED BALL

42、WHITE BALL BLACKBALLn“);printf(“n“);for(i=0;ivoid main()int x,y,z,count=0;printf(“ Men Women Childrenn“);printf(“n“);for(x=0;xvoid main()int a,b,num1,num2,temp;printf(“Input a scanf(“%d%d“,if(num1num2) /*找出两个数中的较大值 */temp=num1; num1=num2; num2=temp; /*交换两个整数 */a=num1; b=num2;while(b!=0) /*采用辗转相除法求最大

43、公约数 */temp=a%b;a=b;b=temp;printf(“The GCD of %d and %d is: %dn“,num1,num2,a); /*输出最大公约数 */printf(“The LCM of them is: %dn“,num1*num2/a); /*输出最小公倍数 */*运行结果1.Input a void main()int i,j,k,l,m,n;printf(“Input two FENSHU:n“);scanf(“%d/%d,%d/%d“, /*输入两个分数 */m=zxgb(j,l)/j*i; /*求出第一个分数通分后的分子 */n=zxgb(j,l)/l

44、*k; /*求出第二个分数通分后的分子 */if(mn) printf(“%d/%d%d/%dn“,i,j,k,l); /*比较分子的大小 */else if(m=n) printf(“%d/%d=%d/%dn“,i,j,k,l); /*输出比较的结果 */else printf(“%d/%d16/32输入: 16/32, 4/8 输出: 16/32=4/835 44.分数之和求这样的四个自然数 p,q,r,s(pvoid main()30int p,q,r,s,count=0;printf(“The 4 fractions which sum is equal 1 are:n“);for(p=2;p=r)printf(“%2d 1/%d+1/%d+1/%d+1/%d=1n“,+count,p,q,r,s);/*输出结果 */- 作者: huang01- 发布时间: 2004-10-21 17:06:39- 36 45.将真分数分解为埃及分数分子为 1 的分数称为埃及分数,现输入一个真分数,请将该分数分解为埃及分数。如: 8/11=1/2+1/5+1/55+1/110 。*问题分析与算法设计若真分数的分子 a 能整除分母 b,则真分数经过化简就可以得到埃及分数,若真分数的分子不能整除分母,则可以从原来的分数中分解出一个分母为 b/a+1 的埃及分数。用这种方

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 网络科技 > C/C++资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报