C语言基本算法

上传人:re****.1 文档编号:484561201 上传时间:2023-04-21 格式:DOC 页数:22 大小:122.50KB
返回 下载 相关 举报
C语言基本算法_第1页
第1页 / 共22页
C语言基本算法_第2页
第2页 / 共22页
C语言基本算法_第3页
第3页 / 共22页
C语言基本算法_第4页
第4页 / 共22页
C语言基本算法_第5页
第5页 / 共22页
点击查看更多>>
资源描述

《C语言基本算法》由会员分享,可在线阅读,更多相关《C语言基本算法(22页珍藏版)》请在金锄头文库上搜索。

1、经典C语言算法2009年08月17日 星期日16:51C语言的学习要从基础开始,这里是100个经典的算法-1 C语言的学习要从基础开始, 这里是100个经典的算法题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?程序分析:兔子的规律为数列1,1,2,3,5,8,13,21程序源代码:main()long f1,f2;int i;f1=f2=1;for(i=1;i=20;i+) printf(%12ld %12ld,f1,f2);if(i%2=0) printf(n);/*控制输出,每行四个 */f

2、1=f1+f2;/*前两个月加起来赋值给第三个月*/f2=f1+f2;/*前两个月加起来赋值给第三个月*/上题还可用一维数组处理,you try!题目:判断101-200之间有多少个素数,并输岀所有素数。程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数程序源代码:#include math.hmain()int m,i,k,h=0,leap=1; printf(n);for(m=101;m=200;m+) k=sqrt(m+1);for(i=2;i=k;i+)if(m%i=0)leap=0;break;if(leap) printf

3、(%-4d,m);h+;if(h%10=0)printf(n);leap=1;printf(nThe total is %d,h);题目:打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如: 153是一个“水仙花数”,因为 153=1的三次方 5 的三次方 3 的三次方。程序分析:利用 for 循环控制 100-999个数,每个数分解出个位,十位,百位。 程序源代码:main()int i,j,k,n; printf(water flowernumber is:);for(n=100;n1000;n+)i=n/100;/* 分解出百位 */ j=n/1

4、0%10;/* 分解出十位 */ k=n%10;/* 分解出个位 */ if(i*100+j*10+k=i*i*i+j*j*j+k*k*k)printf(%-5d,n); printf(n);题目:将一个正整数分解质因数。例如:输入90,打印出 90=2*3*3*5程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:(1) 如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。(2) 如果nk,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,重复执行第一步。(3) 如果 n 不能被 k 整除,则用 k+1 作为 k 的值,重复执行第一

5、步。程序源代码:/* zheng int is divided yinshu*/main()int n,i;printf(nplease input a number:n); scanf(%d,&n);printf(%d=,n);for(i=2;i=90 分的同学用 A 表示, 60-89分之间的用B表示,60分以下的用C表示。程序分析:(ab)?a:b这是条件运算符的基本例子。程序源代码:main()int score;char grade;printf(please input a scoren); scanf(%d,&score); grade=score=90?Ascore=60?B:

6、C); printf(%d belongs to %c,score,grade);题目:输入两个正整数m和n,求其最大公约数和最小公倍数。程序分析:利用辗除法程序源代码:main()int a,b,num1,num2,temp; printf(please input two numbers:n); scanf(%d,%d,&num1,&num2);if(num1 temp=num1;num1=num2;num2=temp;a=num1;b=num2;while(b!=0)/* 利用辗除法,直到 b 为 0 为止 */ temp=a%b;a=b;b=temp;printf(gongyueshu

7、:%dn,a); printf(gongbeishu:%dn,num1*num2/a);题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数程序分析:利用 while 语句 ,条件为输入的字符不为 n.程序源代码:#include stdio.h main()char c;int letters=0,space=0,digit=0,others=0; printf(please input some charactersn);while(c=getchar()!=n) if(c=a&c=A&c=0&c=9) digit+;elseothers+;printf(all in a

8、ll:char=%d space=%d digit=%d others=%dn,letters,space,digit,others);题目:求 s=a+aa+aaa+aaaa+aa.a勺值,其中 a是一个数字。例女口2+22+222+2222+22222(此时共有 5 个数相加 ),几个数相加有键盘控制程序分析:关键是计算出每一项勺值。程序源代码:main()int a,n,count=1;long int sn=0,tn=0; printf(please input a and nn); scanf(%d,%d,&a,&n); printf(a=%d,n=%dn,a,n); while(c

9、ount=n)tn=tn+a;sn=sn+tn;a=a*10;+count;printf(a+aa+.=%ldn,sn);题目:一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1 23.编程找出 1000以内的所有完数。程序源代码:main()static int k10 ;int i,j,n,s; for(j=2;j1000;j+)n=-1;s=j;for(i=1;i if(j%i)=0) n+;s=s-i;kn=i;if(s=0)printf(%d is a wanshu,j); for(i=0;i printf(%d,k); printf(%dn,k n );题目:一球从

10、100 米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第 10 次落地时,共经过多少米?第 10 次反弹多高?程序源代码:main()float sn=100.0,hn=sn/2;int n;for(n=2;n=10;n+)sn=sn+2*hn;/* 第 n 次落地时共经过的米数 */ hn=hn/2; /* 第 n 次反跳高度 */printf(the total of road is %fn,sn); printf(the tenth is %f metern,hn);,第二天又吃了余下的题目:一只猴子摘了 N 个桃子第一天吃了一半又多吃了一个一半又多吃了一个 ,到第十天的时

11、候发现还有一个 .程序源代码:/* 猴子吃桃问题 */ main()int i,s,n=1;for(i=1;i10;i+)s=(n+1)*2 n=s;printf( 第一天共摘了 %d 个桃 n,s); 迭代法求方程根/* 迭代法求一个数的平方根 */#define Epsilon 1.0E-6 /* 控制解的精度 */#includemain()float a,x0,x1;printf( 请输入要求的数 :); scanf(%f,&a);x0=a/2;x1=(x0+a/x0)/2; while(fabs(x1-x0)=Epsilon)x0=x1;x1=(x0+a/x0)/2;printf(%

12、f 的平方根: %f.5n,x1);/* 上题的另一种算法 */#define Epsilon 1.0E-6 /* 控制解的精度 */#include #include main()float num,pre,this;doscanf(%f,&num);/* 输入要求平方根的数 */ while(numEpsilon);/* 用解的精度,控制循环次数 */ printf(the root is %f,this);用牛顿迭代法 求方程 2*x*x*x-4*x*x+3*x-6 的根/* 牛顿迭代法 */#define Epsilon 1.0E-6 /* 控制解的精度 */#includemain(

13、)float x1,x0=1.5;x1=x0-(2*x0*x0*x0-4*x0*x0+3*x0-6)/(6*x0*x0-8*x0+3); while(fabs(x1-x0=Epsilon)x0=x1; x1=x0-(2*x0*x0*x0-4*x0*x0+3*x0-6)/(6*x0*x0-8*x0+3);printf( 方程的根为 %fn,x1);用二分法求上题/* 二分法 */#define Epsilon 1.0E-5 /* 控制解的精度 */#includemain()folat x1,x2,x0,f1,f2,f0;x0=(x1+x2)/2;f0=2*x0*x0*x0-4*x0*x0+3*x0-6; /* 求中点的函数值 */

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 活动策划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号