07 程序举例

上传人:少*** 文档编号:243135285 上传时间:2024-09-16 格式:PPT 页数:41 大小:366KB
返回 下载 相关 举报
07 程序举例_第1页
第1页 / 共41页
07 程序举例_第2页
第2页 / 共41页
07 程序举例_第3页
第3页 / 共41页
点击查看更多>>
资源描述
*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,C,语言程序设计,主讲:,李 果,E-mail,:,lg228069,一些实际问题的解决,取数字问题,分硬币问题,因子、完数问题,数列问题,解简单方程,勾股数、弦数问题,其他,取数字问题,设某四位数的千位数字平方与十位数字的平方之和等于百位数字的立方与个位数字的立方之和,例如,对于四位数:,3201,,,32+02=23+13,。试问所有这样的四位数之和是多少?,(97993),分析:关键在于怎么求出一个四位数的各位上的数字。,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/100;,d=x%100/10; e=x%10;,if( a*,a+b,*,b+c,*,c+d,*,d+e,*e,=,100 ) break; ,printf(“Max,: %ldn”, x); ,取数字问题,设某四位数的千位数字与十位数字的和等于百位数字与个位数字的积,例如,对于四位数:,9512,,,9+1=5*2,,试问所有这样的四位数之和是多,有一个三位数满足下列条件,: (1),此三位数的三位数字各不相同,; (2),此三位数等于它的各位数字的立方和。试求所有这样的三位数之和。,有一个三位数满足下列条件,: (1),此三位数的三位数字各不相同,; (2),此三位数等于它的各位数字的立方和。试求所有这样的三位数中最大的一个是多少?,有一个三位数满足下列条件,: (1),此三位数的三位数字各不相同,; (2),此三位数等于它的各位数字的立方和。试求这种三位数共有多少个?,“水仙花数”是指三位数,其各位数字的三次方之和等于该数本身,例如:,153=13+33+53,,故,153,是水仙花数,求,100,,,999,所有水仙花数之和。,回文数是指正读和反读都一样的正整数。求出,1000,,,9999,以内的所有回文数的个数。,分硬币问题,有,30,个人在一家小饭店里用餐,其中有男人、女人和小孩,每个男人花了,3,先令,每个女人花了,2,先令,每个小孩花了,1,先令,共花去,50,先令。如果要求男人、女人和小孩都有人参与,试求有多少种方案分配男人、女人和小孩的人数。(,9,),分析:利用穷举法的思想,把所有可能的数据组合一一验证。注意要满足题设所有要求,一是人数总共为,30,,二是钱花去,50,。,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,();,分硬币问题,50,元的整币兑换成,5,元、,2,元和,1,元币值(要求三种币值均有)的方法有多少种。,(106),main(),int i, j, k, s=0;,for(,i=1,; 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 );,分硬币问题,把一张一元钞票,换成一分、二分和五分硬币,每种至少,8,枚,问有多少种方案,?,50,元的整币兑换成,5,元、,2,元和,1,元币值(三种币值均有、缺少一种或两种都计算在内)的方法有多少种。,用,100,元买,100,只鸡,大公鸡,5,元,1,只,母鸡,3,元,1,只,小鸡,1,元,3,只。问各能买多少只,?,因子、完数问题,若一个正整数的各真因子之和(不包括自身)等于其本身,那么该正整数称为完数。例如:,6,有,3,个真因子,分别是,1,、,2,、,3,,而,6=1+2+3,,所以,6,就是一个完数。编写程序计算,10,,,1000,之间所有完数的和。(,524,),分析:关键是怎么求出一个正整数的真因子的和。那么我们首先要判断该正整数有哪些因子。,因子、完数问题,比方我们输入一个正整数,然后求该正整数的所有真因子的和。,main(),int x,n,s=0;,scanf(“%d”,x,);,for(n=1;nx;n+),if(x%n=0)s+=n;,printf(“s,=%dn”,s);,main(),int x,m,sum=0,s,k,;,for (x=10; x=1000; x+),if (s=x) sum+=x;,printf(sum,=%d,sum);,s=0;,k,=x/2+1;,for (m=1; m,k,; m+),if (,x%m,=0 ) s+=m;,因子、完数问题,已知,24,有,8,个正整数因子(即:,1,,,2,,,3,,,4,,,6,,,8,,,12,,,24,),而,24,正好能被其因子数,8,整除,求正整数,10,,,100,之间有多少个正整数能被其因子的个数整除。,分析:关键是如何求出每个正整数的因子的个数。对于,24,,我们假设从,n=1,开始,到,n=24,结束,只要,24,能整除,n,,,那么意味着,n,是,24,的一个因子。,因子、完数问题,解法:,main(),int,x, i,y, num=0;,for(x=10; x=100; x+),if(x%y,=0) num+;,printf(n%dn,num,);,y=0;,for(i=1; i=x; i+),if(x%i=0) y+;,因子、完数问题,一个数如果恰好等于它的所有真因子之和,这个数就称为“完数”。例如, 6,的真因子为,1,,,2,,,3,,而,6=1+2+3,,因此,,6,是“完数”。求,1,,,1000,之间的最大完数。,一个数如果恰好等于它的所有真因子之和,这个数就称为“完数”。例如,,6,的真因子为,1,,,2,,,3,,而,6=1+2+3,,因此,,6,是“完数”。求,1,1000,之间的第二大完数。,求,200,300,之间有奇数个不同因子的最大的整数,(,在计算因子个数时,包括该数本身,),。,求,200,300,之间第二大有奇数个不同因子的整数,(,在计算因子个数时,包括该数本身,),。,已知,24,有,8,个正整数因子(即:,1,,,2,,,3,,,4,,,6,,,8,,,12,,,24,),而,24,正好能被其因子数,8,整除,求正整数,10,,,100,之间有多少个正整数能被其因子的个数整除。,数列问题,求,2+4+6+8+60,的和。,main( ),int x,sum=0,;,for ( x=2; x=60; x+=2 ),sum+=,x,;,printf ( “sum=%d n”, sum );,数列问题,当,n,的值为,50,时,计算下列公式之值,:,t = 1+1/2,2,+1/3,2,+1/n,2,(,按四舍五入的方式精确到小数点后第四位,),。,分析:仍然采用累加法,,n,从,1,变化到,50,,每次将,1/n,2,加到总和当中去。注意整个计算过程中数据的类型。,main( ),int n;,float t=0;,for ( n=1; n=50; n+),t = t+1.0/(n*n) ;,printf( “t is:,%.4f,n , t ) ;,数列问题,已知:,s=2/1+3/2+4/3+(n+1)/n,求,s,不超过,50,的最大值(按四舍五入的方式精确到小数点后第三位)。,(49.395),分析:当,n=1,s=2/1,当,n=2,s=2/1+3/2,当,n=3,s=2/1+3/2+4/3,一直到某一项,s50,,,那么我们不再累加。,main( ),int n;,float,s=0,k,;,for (n=1;,s=50,;,n+),k,=,s,;,s+=1.0*(n+1)/n ;,printf ( Result:,%.3f,n“ ,k,) ;,数列问题,计算,y=1+2/3+3/5+4/7+n/(2*n-1),的值, n=50,要求:按四舍五入的方式精确到小数点后第二位。,(26.47),当,n,的值为,25,时,计算下列公式的值,: s=1+1/1!+1/2!+1/3!+1/n!,要求:按四舍五入的方式精确到小数点后第四位。,已知:,A1=1, A2=1/(1+A1), A3=1/(1+A2), A4=1/(1+A3), ,求,A50.,(,按四舍五入的方式精确到小数点后第三位)。,利用格里高利公式:,/4=1-1/3+1/5-1/7+1/9-1/11+-1/99,,求,的值。要求:按四舍五入的方式精确到小数点后第二位。,解简单方程,求方程,8x-5y=3,在,|x|=150, |y|=200,内的整数解。试问这样的整数解中,|x|*|y|,的,最大值,是多少?,(24676),分析:,x,在,-150,到,150,之间取值,,y,在,-200,到,200,之间取值,对于这两个区间任意一组数据组合,判断其是否满足方程,如果满足则求出,|x|*|y|,,,然后逐次比较。,#include math.h,main(), int x, y, t,max=0;,for (x=-150; x=150; x+),for (y=-200; y=200; y+),if (8*x-5*y=3),t= abs(x) *,abs(y,);,if (maxt),max=t;,printf (max=%dn“ ,max,);,解简单方程,已知,AB, A,和,B,均为正整数,且,A*B=716699,,求,A+B,的,最小值,。,(1836),分析:若,A,初值为,1,,然后递增到,716699,,对于每个,A,,,B=716699/A,。,求最小值,那么我们先假定,x,代表结果,,x,初值为一个较大的数,比如,716700,,,A+B,肯定比,716700,小,对于每一组符合条件的,A+B,,,我们拿出来和,x,进行比较,如果比,x,小,则,x=A+B,。,main(),long a,b,min=716700,;,for(a=1; a=716699; a+),b=716699/a ;,if(a*b=716699),if(a+b y z),则(,x,y,z,),称为方程的一个解。试求方程的所有整数解中,,|x|+|y|+|z|,的最大值。(或最小值),已知,X,Y,Z,为三个正整数,且,X,2,+Y,2,+Z,2,=25,2,,求,X+Y+Z,的最大值。,(,x,y,z,),满足方程:,x,2,+y,2,+z,2,=55,2,(,注:要求,x y z),则(,x,y,z,),称为方程的一个解。试求方程的整数解(包括负整数解)的个数。,求方程,9X-19Y=1,在,|X|100,|Y|50,内共有多少组整数解,?,勾股数、弦数问题,若某正整数平方等于某两个正整数平方之和,称该正整数为弦数。例如:由于,3,2,+4,2,=5,2,,则,5,为弦数,求,131,,,200,之间最小的弦数。,(135),分析:判断一个数,a,是否为弦数,关键是能否找到另两个数,b,和,c,,,这两个数字的平方的和恰好为,a,的平方。,main(),int a,b,c,min=200;,for(a=131;a200;a+),for(b=1;ba;b+),for(c=b;ca;c+),if(c*c+b*b=a*a),if(amin)min=a;,printf(min,= %dn, min);,getch,();,勾股数、弦数问题,若某整数平方等于某两个正整数平方之和的正整数称为弦数。例如:由于,3,2,+4,2,=5,2,,则,5,为弦数,求,100,,,200,之间弦数的个数。,(55),分析:从,100,到,200,之间的每个数,k,我们展开判断,看能否找到另两个数,i,和,j,,使得,i,2,+j,2,等于,k,2,,只要满足该条件,那,k,就是弦数。,main(),int i, j, 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 ),n+;,printf(n,is:%dn, , n);,n is:77,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+;,goto mm;,mm: k+;,printf(n,is:%dn, , n);,勾股数、弦数问题,勾股弦数是满足公式:,A2+B2=C2 (,假定,ABC),的一组正整数(,A,,,B,,,C,),,例如,(,3,,,4,,,5,)是勾股弦数,因为:,32+42=52,。求,A,,,B,均小于,25,且,A+B+C=100,的勾股弦数的个数。,(11),#include,main(),int a,b,c,n=0;,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,的倒勾股数有多少组?,2,倒勾股数是满足公式:,1/A2+1/B2=1/C2,的一组正整数(,A,,,B,,,C,),例如,(,156,,,65,,,60,)是倒勾股数,因为:,1/1562+1/652=1/602,。假定,ABC,,求,A,,,B,,,C,均小于或等于,100,的倒勾股数有多少组?,5,勾股弦数是满足公式:,A2+B2=C2 (,假定,ABC),的一组正整数(,A,,,B,,,C,),例如,(,3,,,4,,,5,)是勾股弦数,因为:,32+42=52,。求,A,,,B,,,C,均小于或等于,100,的勾股弦数中,A+B+C,的最大值。,240,若某正整数平方等于某两个正整数平方之和,称该正整数为弦数。例如:由于,32+42=52,,则,5,为弦数,求,131,,,200,之间最小的弦数。,135,a,b,c,d,e,类,设有十进制数字,a,b,c,d,和,e,,它们满足下列式子:,abcd,*e=,bcde,(a,不等于,0,,,e,不等于,0,或,1),,求满足上述条件的四位数,abcd,的个数。,(2),分析:关键是如何处理每一位数字和这个数字整体之间的关系。,main(),int,i,a,b,c,d,e,k,=0;,for(i,=1000;i=9999;i+),a=i/1000;,b=i%1000/100;,c=i%100/10;,d=i%10;,for(e,=2;e0; day-) n=(n+1)*2;,printf ( Result : %d n“ ,n);,某国今年国民生产总值为,45600,亿元,若今后每年以,8%,的增长率增长,编程计算多少年后能实现国民生产总值翻两番?所谓翻两番,其实就是达到当前值的四倍。(,19,年),main(), int year=0;,float x=45600,y;,y=4*x;,while(1),year+;,x=x*1.08;,if (x=,y,) break;,printf (%d n“ ,year,);,求,1,到,100,之间所有整数的立方的和。,(25502500),main( ),long,x,sum,=0;,for(x,=,1,; x=100; x+),sum+=x*x*x;,printf,(,sum=%,ld,n,sum);,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 小学资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!