double getPower(double x,int y)
{
int i;
double result=1;
if(y<0)
return 1.0/getPower(x,-y);
else if(0==y)
return 1;
else
for(i=0;i return result; } 注:接收x和y,返回x的y次幂。注意这里只能处理y为整数的情况。 2.斐波那契数列 int Fibonacci_sequence(int n) { int i,a=1,b=1,sum=0; for(i=0;i sum+=b>a?a:b; b>a?a+=b:b+=a; } return sum; } 注:接收n,返回前n项斐波那契数列的和。 3.阶乘 double factorial(int n) { int i; double result=1; for(i=1;i<=n;i++) result *= i; return result; } 注:接收n,求n的阶乘。为了防止数据溢出,固返回值是double类型,使用时请注意。 4.判断回文数 bool symm(long n) { long i,m; i=n; m=0; while(i) { m=m*10+i%10; i=i/10; } return (n==m); } 注:接收n,判断n是否为回文数。函数为布尔型,返回“真”或“假”。 5.判断水仙花数 bool Narcissi_few(int n) { int ge,shi,bai; ge = n%10; shi = n/10%10; bai = n/100; return (n==pow(ge,3)+pow(shi,3)+pow(bai,3)); } 注:接收n,判断n是否为水仙花数。是,结果为真;否则为假。且本函数存在pow( )数学库函数,需要程序开头有# include 6.判断素数 bool prime(int n) { int i, a; if(1==n) return false; a = sqrt(n); for(i=2;i<=a;i++) if(0==n%i) return false; return true; } 注:接收n,判断n是否为素数。是,结果为真;否则为假。且本函数存在sqrt( )数学库函数,需要程序开头有# include 7.求n介勒让德多项式 double IPE(int n,float x) { if(0==n) return 1; else if(1==n) return x; else return ((2*n-1)*x*IPE(n-1,x)-(n-1)*IPE(n-2,x))/n; } 注:IPE(legendre polynomial expansion)勒让德多项式。这里只是n(n>0,不可判断!)阶勒让德多项式,具体请看本函数。 8.正整数的倒序输出 int Inverted(int n) { int back=0; while(n>0) { back=back*10+n%10; n=n/10; } return back; } 注:接收n,返回n的倒序。(注意,本函数不具有判断n是否为正整数的功能,输入负数会出现错误!) 9.正整数个位求和 int sum(int n) { int back=0; while(n>0) { back=back+n%10; n=n/10; } return back; } 注:接收n,返回n各个位数上数字之和。(注意,本函数不具有判断n是否为正整数的功能,输入负数会出现错误!) 10.字符串的比较 int mystrcmp(char *s,char *t) { while(*s&&*t&&*s==*t) { s++; t++; } return *s-*t; } 注:比较两个字符串的大小,注意返回的是s与t的第一个不同字符的ASCLL码表数值的差。 11.字符串的倒序输出 void Inverted(char *p) { int i=0,j=0; char s[20]; while(*(p+i)) { s[i]=*(p+i); i++; } while(*(p+j)) { *(p+j)=s[i-1]; j++,i--; } } 注:接收一个字符串,输出给字符串的倒序。(注意,本函数会把倒序后的字符串覆盖在原字符串上,原字符串会消失,如有需要请注意保存!) 12.字符串的长度 int mystrlen(char *s) { int i=0; while(*s) { s++; i++; } return i; } 注:求一个字符串的长度。 13.字符串复制 void mystrcpy(char *s,char *t) { while((*s++=*t++)!='\\0') { ; } } 注:把字符串t复制到s上;注意s将被覆盖!