加、减、乘、除
#include<iostream.h>
#include<string.h>
//using namespace std;
int Big(char* str1,char* str2);
char* ClearFrontZero(char* str);
void ToSameDigits(char* str1,char* str2);
char* Plus(char* str1,char* str2,char* str3=NULL);
char* Subtract(char* str1,char* str2,char* str3=NULL);
char* Multiply(char* str1,char* str2,char* str3);
char* Division(char* str1,char* str2,char* str3,char* str4);
int main()
{}
//实现
int Big(char* str1,char* str2)
{
int len1=strlen(str1), len2=strlen(str2);
if(len1>len2)
return 1;
if(len1==len2)
{
int judge=strcmp(str1,str2);
if(judge>0)
return 1;
if(judge==0)
return 0;
}
return -1;
}
char* ClearFrontZero(char* str)
{
char* p=str;
while(*p=='0')
p++;
strcpy(str,p);
if(str[0]=='\0')
{
str[0]='0';str[1]='\0';
}
return str;
}
void ToSameDigits(char* str1,char* str2)
{
int i;
int len1=strlen(str1), len2=strlen(str2);
int len=len1>len2?len1:len2;
int less=len-len1;
for(i=len1;i>=0;i--)
str1[i+less+1]=str1[i];
for(i=0;i<=less;i++)
str1[i]='0';
less=len-len2;
for(i=len2;i>=0;i--)
str2[i+less+1]=str2[i];
for(i=0;i<=less;i++)
str2[i]='0';
}
char* Plus(char* str1,char* str2,char* str3)
{
int len,i;
if(str3==NULL)
str3=str1;
else
strcpy(str3,str1);
ToSameDigits(str3,str2);
len=strlen(str3);
for(i=len-1;i>=0;i++)
{
str3[i]=str3[i]+str2[i]-'0';
if(str3[i]>'9')
{
str3[i]-=10; str3[i-1]+=1;
}
}
ClearFrontZero(str2);
return ClearFrontZero(str3);
}
char* Subtract(char* str1,char* str2,char* str3)
{
int i;
if(str3==NULL)
str3=str1;
else
strcpy(str3,str1);
ToSameDigits(str3,str2);
int len=strlen(str3);
for(i=len-1;i>=0;i--)
{
if(str3[i]<str2[i])
{
str3[i]+=10; str3[i-1]-=1;
}
str3[i]=str3[i]-str2[i]+'0';
}
ClearFrontZero(str2);
return ClearFrontZero(str3);
}
char* Multiply(char* str1,char* str2,char* str3)
{
int i;
char j;
int len1=strlen(str1), len2=strlen(str2);
strcpy(str3,"0");
for(i=len2-1;i>=0;i--)
{
for(j='0';j<str2[i];j++)
{
Plus(str3,str1); ClearFrontZero(str1);
}
str1[len1]='0'; str1[len1+1]='\0'; len1++;
}
str1[len1-len2]='\0';
return ClearFrontZero(str3);
}
char* Division(char* str1,char* str2,char* str3,char* str4)
{
int i;
str3[0]=str4[0]='\0';
if(strcmp(str2,"1")==0)
{
strcpy(str3,str1);
str4[0]='0'; str4[1]='\0';
return str3;
}
int len1=strlen(str1), len3=strlen(str3);
for(i=0;i<len1;i++)
{
int len4=strlen(str4);
str4[len4]=str1[i]; str4[len4+1]='\0';
str3[len3]='0'; str3[len3+1]='\0';
while(Big(str4,str2)!=-1)
{
str3[len3]+=1; Subtract(str4,str2);
ClearFrontZero(str4); ClearFrontZero(str2);
}
len3++;
}
return ClearFrontZero(str3);
}