07 程序举例ppt课件_第1页
07 程序举例ppt课件_第2页
07 程序举例ppt课件_第3页
07 程序举例ppt课件_第4页
07 程序举例ppt课件_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、C 语言程序设计语言程序设计主讲:E-mail:1;.一些实际问题的解决n取数字问题n分硬币问题n因子、完数问题n数列问题n解简单方程n勾股数、弦数问题n其他2;.取数字问题n设某四位数的千位数字平方与十位数字的平方之和等于百位数字的立方与个位数字的立方之和,例如,对于四位数:3201, 32+02=23+13。试问所有这样的四位数之和是多少?(97993)n分析:关键在于怎么求出一个四位数的各位上的数字。3;.main() int i,a,b,c,d; long s=0; for( i=1000; i10000; x- )a=x/10000; b=x%10000/1000; c=x%1000

2、/100; d=x%100/10; e=x%10; if( a*a+b*b+c*c+d*d+e*e100 ) break; printf(“Max : %ldn”, x); 5;.取数字问题设某四位数的千位数字与十位数字的和等于百位数字与个位数字的积,例如,对于四位数:9512,9+1=5*2,试问所有这样的四位数之和是多有一个三位数满足下列条件: (1)此三位数的三位数字各不相同; (2)此三位数等于它的各位数字的立方和。试求所有这样的三位数之和。有一个三位数满足下列条件: (1)此三位数的三位数字各不相同; (2)此三位数等于它的各位数字的立方和。试求所有这样的三位数中最大的一个是多少?

3、有一个三位数满足下列条件: (1)此三位数的三位数字各不相同; (2)此三位数等于它的各位数字的立方和。试求这种三位数共有多少个? “水仙花数”是指三位数,其各位数字的三次方之和等于该数本身,例如:153=13+33+53,故153是水仙花数,求100,999所有水仙花数之和。回文数是指正读和反读都一样的正整数。求出1000,9999以内的所有回文数的个数。 6;.分硬币问题n有30个人在一家小饭店里用餐,其中有男人、女人和小孩,每个男人花了3先令,每个女人花了2先令,每个小孩花了1先令,共花去50先令。如果要求男人、女人和小孩都有人参与,试求有多少种方案分配男人、女人和小孩的人数。(9)n分

4、析:利用穷举法的思想,把所有可能的数据组合一一验证。注意要满足题设所有要求,一是人数总共为30,二是钱花去50。7;.main() int a, b, c, i=0; for( a=1; a17; a+ ) for( b=1; b25; b+ ) for( c=1; c30; c+ ) if( a+b+c=30 & 3*a+2*b+c=50 ) i+; printf(“ Result: %d , i); getch ();8;.分硬币问题n50元的整币兑换成5元、2元和1元币值(要求三种币值均有)的方法有多少种。(106)main()int i, j, k, s=0; for( i=1

5、; i50; i+) for( j=1; j25; j+) for( k=1; k10; k+) if ( i+2*j+5*k=50 ) s+; printf ( The num is : %d n , s );9;.分硬币问题n把一张一元钞票,换成一分、二分和五分硬币,每种至少8枚,问有多少种方案?n50元的整币兑换成5元、2元和1元币值(三种币值均有、缺少一种或两种都计算在内)的方法有多少种。n用100元买100只鸡,大公鸡5元1只,母鸡3元1只,小鸡1元3只。问各能买多少只? 10;.因子、完数问题n若一个正整数的各真因子之和(不包括自身)等于其本身,那么该正整数称为完数。例如:6有3个

6、真因子,分别是1、2、3,而6=1+2+3,所以6就是一个完数。编写程序计算10,1000之间所有完数的和。(524)n分析:关键是怎么求出一个正整数的真因子的和。那么我们首先要判断该正整数有哪些因子。11;.因子、完数问题n比方我们输入一个正整数,然后求该正整数的所有真因子的和。main() int x,n,s=0; scanf(“%d”,x); for(n=1;nx;n+) if(x%n=0)s+=n; printf(“s=%dn”,s);12;.main() int x,m,sum=0,s, ; for (x=10; x=1000; x+) if (s=x) sum+=x; printf

7、(sum=%d,sum); s=0; =x/2+1; for (m=1; m ; m+) if ( x%m=0 ) s+=m; 13;.因子、完数问题n已知24有8个正整数因子(即:1,2,3,4,6,8,12,24),而24正好能被其因子数8整除,求正整数10,100之间有多少个正整数能被其因子的个数整除。分析:关键是如何求出每个正整数的因子的个数。对于24,我们假设从n=1开始,到n=24结束,只要24能整除n,那么意味着n是24的一个因子。14;.因子、完数问题n解法:main() int x, i, , num=0; for(x=10; x=100; x+) if(x%y=0) num

8、+; printf(n%dn,num); for(i=1; i=x; i+) if(x%i=0) y+;15;.因子、完数问题n一个数如果恰好等于它的所有真因子之和,这个数就称为“完数”。例如, 6的真因子为1,2,3,而6=1+2+3,因此,6是“完数”。求1,1000之间的最大完数。n一个数如果恰好等于它的所有真因子之和,这个数就称为“完数”。例如,6的真因子为1,2,3,而6=1+2+3,因此,6是“完数”。求1,1000之间的第二大完数。n求200,300之间有奇数个不同因子的最大的整数(在计算因子个数时,包括该数本身)。n求200,300之间第二大有奇数个不同因子的整数(在计算因子个

9、数时,包括该数本身)。n已知24有8个正整数因子(即:1,2,3,4,6,8,12,24),而24正好能被其因子数8整除,求正整数10,100之间有多少个正整数能被其因子的个数整除。16;.数列问题n求2+4+6+8+60的和。main( ) int x, sum=0 ; for ( x=2; x=60; x+=2 ) ; printf ( “sum=%d n”, sum );17;.数列问题n当n的值为50时,计算下列公式之值: t = 1+1/22+1/32+1/n2(按四舍五入的方式精确到小数点后第四位)。n分析:仍然采用累加法,n从1变化到50,每次将1/n2加到总和当中去。注意整个计

10、算过程中数据的类型。18;.main( ) int n; float t=0; for ( n=1; n=50; n+) t = t+1.0/(n*n) ; printf( “t is: n , t ) ;19;.数列问题n已知:s=2/1+3/2+4/3+(n+1)/n, 求s不超过50的最大值(按四舍五入的方式精确到小数点后第三位)。(49.395)n分析:当n=1,s=2/1 当n=2,s=2/1+3/2 当n=3,s=2/1+3/2+4/3 一直到某一项s50,那么我们不再累加。20;.main( ) int n; float s=0 , k; for (n=1; s=50; n+)

11、k=s; s+=1.0*(n+1)/n ; printf ( Result: %.3f n“ , k) ; 21;.数列问题n计算y=1+2/3+3/5+4/7+n/(2*n-1)的值, n=50, 要求:按四舍五入的方式精确到小数点后第二位。(26.47)n当n的值为25时,计算下列公式的值: s=1+1/1!+1/2!+1/3!+1/n!要求:按四舍五入的方式精确到小数点后第四位。n已知:A1=1, A2=1/(1+A1), A3=1/(1+A2), A4=1/(1+A3), , 求A50.(按四舍五入的方式精确到小数点后第三位)。n利用格里高利公式:/4=1-1/3+1/5-1/7+1/

12、9-1/11+-1/99,求的值。要求:按四舍五入的方式精确到小数点后第二位。 22;.解简单方程n求方程8x-5y=3,在|x|=150, |y|=200内的整数解。试问这样的整数解中|x|*|y|的最大值是多少? (24676)n分析:x在-150到150之间取值,y在-200到200之间取值,对于这两个区间任意一组数据组合,判断其是否满足方程,如果满足则求出|x|*|y| ,然后逐次比较。23;.#include math.hmain() int x, y, t, max=0; for (x=-150; x=150; x+) for (y=-200; y=200; y+) if (8*x

13、-5*y=3) t= abs(x) * abs(y); if (maxt) max=t; printf (max=%dn“ , max ); 24;.解简单方程n已知AB, A和B均为正整数,且A*B=716699,求A+B的最小值。(1836)n分析:若A初值为1,然后递增到716699,对于每个A,B=716699/A。求最小值,那么我们先假定x代表结果,x初值为一个较大的数,比如716700,A+B肯定比716700小,对于每一组符合条件的A+B,我们拿出来和x进行比较,如果比x小,则x=A+B。25;.main() long a,b,min=716700; for(a=1; a=716

14、699; a+) if(a+b y z),则(x,y,z)称为方程的一个解。试求方程的所有整数解中,|x|+|y|+|z|的最大值。(或最小值)n已知X,Y,Z为三个正整数,且X2+Y2+Z2=252,求X+Y+Z的最大值。n(x,y,z)满足方程:x2+y2+z2=552(注:要求 x y z),则(x,y,z)称为方程的一个解。试求方程的整数解(包括负整数解)的个数。n求方程9X-19Y=1,在|X|100,|Y|50内共有多少组整数解?27;.勾股数、弦数问题n若某正整数平方等于某两个正整数平方之和,称该正整数为弦数。例如:由于32+42=52,则5为弦数,求131,200之间最小的弦数

15、。(135)n分析:判断一个数a是否为弦数,关键是能否找到另两个数b和c,这两个数字的平方的和恰好为a的平方。28;.main()int a,b,c,min=200; for(a=131;a200;a+) printf(min = %dn, min); getch();29;.勾股数、弦数问题n若某整数平方等于某两个正整数平方之和的正整数称为弦数。例如:由于32+42=52,则5为弦数,求100,200之间弦数的个数。(55)n分析:从100到200之间的每个数k我们展开判断,看能否找到另两个数i和j,使得i2+j2等于k2,只要满足该条件,那k就是弦数。30;.main() int i, j

16、, k, n=0; for( k=100; k=200; k+) for( j=1; jk; j+ ) for( i=j+1; ik; i+ ) if ( i*i + j*j = k*k ) printf(n is:%dn , n);n is:7731;.main() int i, j, k, n=0; for( k=100; k=200; ) for( j=1; jk; j+ ) for( i=j+1; ik; i+ ) if ( i*i + j*j = k*k ) n+; printf(n is:%dn , n);32;.勾股数、弦数问题n勾股弦数是满足公式: A2+B2=C2 (假定AB

17、C)的一组正整数(A,B,C),例如,(3,4,5)是勾股弦数,因为:32+42=52。求A,B均小于25且A+B+C=100的勾股弦数的个数。 (11)33;. for( a=1; a25; a+ ) for( b=a+1; b25; b+ ) c=sqrt(a*a+b*b); if( c*c=a*a+b*b & a+b+cBC,求A,B,C之和小于100的倒勾股数有多少组? 2n倒勾股数是满足公式: 1/A2+1/B2=1/C2 的一组正整数(A,B,C),例如,(156,65,60)是倒勾股数,因为:1/1562+1/652=1/602。假定ABC,求A,B,C均小于或等于100

18、的倒勾股数有多少组?5n勾股弦数是满足公式: A2+B2=C2 (假定ABC)的一组正整数(A,B,C),例如,(3,4,5)是勾股弦数,因为:32+42=52。求A,B,C均小于或等于100的勾股弦数中A+B+C的最大值。240n若某正整数平方等于某两个正整数平方之和,称该正整数为弦数。例如:由于32+42=52,则5为弦数,求131,200之间最小的弦数。 13535;.a,b,c,d,e类 n设有十进制数字a,b,c,d和e,它们满足下列式子:abcd*e=bcde (a不等于0, e不等于0或1),求满足上述条件的四位数abcd的个数。(2)n分析:关键是如何处理每一位数字和这个数字整体之间的关系。36;.mai

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论