C/C++
Mar
10
一、辗转相除法:
大数除以小数 余数1
小数除以余数1 余数2
余数1除以余数2 余数3
若余数3为0,则余数2为所求,否则一直辗转相除
二、更相减损法
大数除以小数 余数1
小数除以余数1 余数2
余数1除以余数2 余数3
若余数3为0,则余数2为所求,否则一直辗转相除
int gys(int m,int n)
{
int t,r;
if(m<n)
{t=m;m=n;n=t;}
r=m%n;
while(r!=0)
{
m=n;
n=r;
r=m%n;
}
return n;
}
{
int t,r;
if(m<n)
{t=m;m=n;n=t;}
r=m%n;
while(r!=0)
{
m=n;
n=r;
r=m%n;
}
return n;
}
二、更相减损法
int jsf(int a,int b)
{
while(a!=b)
{
if(a>b)
a-=b;
else
b-=a;
}
return b;
}
{
while(a!=b)
{
if(a>b)
a-=b;
else
b-=a;
}
return b;
}
Nov
1
不使用中间变量实现strlen函数,(strlen为c语言里面求字符串长度库函数)。给出了一个函数声明:
int strlen(const char *p);
int strlen(const char *p);
#include<iostream.h>
int strlen_my(const char *p);
void main()
{
const char *p="wenxueba.net";
int length=strlen_my(p);
cout<<length<<endl;
}
int strlen_my(const char *p)
{
if(p==NULL)
{
return 0;
}
if(*p=='\0')
{
return 0;
}
else
return 1+strlen_my(++p);
}
int strlen_my(const char *p);
void main()
{
const char *p="wenxueba.net";
int length=strlen_my(p);
cout<<length<<endl;
}
int strlen_my(const char *p)
{
if(p==NULL)
{
return 0;
}
if(*p=='\0')
{
return 0;
}
else
return 1+strlen_my(++p);
}







