C++常见代码
 猴子吃桃问题 
	猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个。
	第二天早上又将剩下的桃子吃掉一半,又多吃了一个。
	以后每天早上都吃了前一天剩下的一半零一个。
	到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。
void f2() { /* 猴子吃桃问题 猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个。 第二天早上又将剩下的桃子吃掉一半,又多吃了一个。 以后每天早上都吃了前一天剩下的一半零一个。 到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。 */ int day,x1,x2; day=9; x2=1; while (day>0) { x1=(x2+1)*2; x2=x1; day--; } cout<<"total="<<x1<<endl; return;
猴子吃桃递归问题
int f2new(int n) { //猴子吃桃问题递归 int num; if (n==10) { return 1; } else { num=(f2new(n+1)+1)*2; } return num; } void f2taozi() { cout<<f2new(1)<<endl; }
求1000以内的完数;例如:6=1+2+3
void f1() { /* 求1000以内的完数;例如:6=1+2+3 */ int k[11]; int i,a,n,s; for (a=2;a<=6;a++) //a<=1000 { n=0; s=a; for (i=1;i<a;i++) { // if ((a%i)==0) { n++; s=s-i; k[n]=i; //将找到的因子赋给k[1],...,k[10] } //输出 i,a,n,s ,k[n]的值 cout<<"i="<<i<<" a= "<<a<<" n="<<n<<" s="<<s<<" k["<<n<<"]="<<k[n]<<endl; } if (s==0) { cout<<a<<" is a 完数"<<endl; cout<<"its factorys are: "; for (i=1;i<n;i++) { cout<<k[i]<<" "; } cout<<k[n]<<endl; } } return ; }
辗转相除法 求最大公约数和最小公倍数
/* 辗转相除法算法步骤:两个数中用较大的数除以较小的数,再用出现的余数(第一余数)去除除数, 再用出现的余数(第二余数)去除第一余数,如此反复,直到最后余数为0为止。 得到最后的除数就是这两个数的最大公约数。 辗转相除法算,又名欧几里德算法 ,是求最大公约数的一种方法 。 以除数和余数反复做除法运算,最终当余数为0时,取当前算式除数为最大公约数。 例如: 1999/615=3 (余数152) 615/152=4 (余数7) 152/7=21 (余数5) 7/5=1 (余数2) 5/2=2 (余数1) 2/1=2 (余数0) 至此,得出1997和615的最大公约数为1 */ void f3() { int p,r,m,n,t; m=9; n=13; if (n<m) { t=n; n=m; m=t; } p=m*n; while (m!=0) { r=n%m; n=m; m=r; } cout<<"最大公约数为:"<<n<<endl; cout<<"最小公倍数为:"<<p/n<<endl; return; }
 
                    
                 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号