资源描述:
《08年暑期实践的几十个c语言算法》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、C语言的学习要从基础,100个经典的算法题目1:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?__________________________________________________________________程序分析:兔子的规律为斐波那契(Fibonacci)数列1,1,2,3,5,8,13,21....______________________________________________
2、_____________________程序源代码:#include"stdafx.h"//斐波那契(Fibonacci)数列voidmain(){longf1,f2;inti;f1=f2=1;for(i=1;i<=20;i++){printf("%12ld%12ld",f1,f2);if(i%2==0)printf("");/*控制输出,每行四个*/f1=f1+f2;/*前两个月加起来赋值给后一个月*/f2=f1+f2;/*前两个月加起来赋值给后一个月*/}}上题还可用一维数组处理,youtry!题
3、目2:判断101-200之间有多少个素数,并输出所有素数。质数(又称为素数)就是在所有比1大的整数中,除了1和它本身以外,不再有别的约数,这种整数叫做质数或素数。__________________________________________________________________程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。_____________________________________________________
4、______________程序源代码:#include"stdafx.h"#include"math.h"voidmain(){intm,i,k,h=0,leap=1;printf("");for(m=100;m<=200;m++)//计算100~200之间的素数{k=sqrt(m+1);//计算m+1的平方根for(i=2;i<=k;i++)if(m%i==0)//如果能被整除,则表明此数不是素数{leap=0;break;}if(leap)//如果leap=1,该数为素数{printf("%-6d
5、",m);h++;//记录100~200之间素数的个数,并控制输出格式if(h%10==0)//一行显示十个数字printf("");}leap=1;}printf("100~200之间的素数为%d个",h);}题目3:打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个“水仙花数”,因为153=1的三次方+5的三次方+3的三次方。__________________________________________________
6、________________程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。___________________________________________________________________程序源代码:如出现errorC2018:unknowncharacter'0xa1',只需重新编排一下程序格式即可!voidmain(){inti,j,k,n;printf("'waterflower'numberis:"); for(n=100;n<1000;n++
7、) { i=n/100;/*分解出百位*/ j=n/10%10;/*分解出十位*/ k=n%10;/*分解出个位*/ if(i*100+j*10+k==i*i*i+j*j*j+k*k*k) { printf("%-5d",n); } }printf("");}题目4:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。__________________________________________________________________程序分析:对n进行分
8、解质因数,应先找到一个最小的质数k,然后按下述步骤完成:(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。(2)如果n