📄 高精度.cpp
字号:
#include<iostream>
using namespace std;
#include<string.h>
void change(char *a);
void add(char *a,char *b,char *c);
//void mul(char *a,char *b,char *c);
int main()
{
char a[1000]={'0'},b[1000]={'0'},c[1001]={'0'};
while(cin>>a>>b)
{
add(a,b,c);
change(c);
int i=0;
while(c[i]!='\0')
cout<<c[i++];
cout<<endl;
}
return 0;
}
void change(char *a)
{
char ch;
int i,n;
n=strlen(a);
for(i=0;i<n/2;i++)
{
ch=a[i];
a[i]=a[n-1-i];
a[n-1-i]=ch;
}
}
void add(char *a,char *b,char *c)
{
int i;
int len1,len2,k1,k,k2;
len1=strlen(a);
len2=strlen(b);
change(a);
change(b);
if(len1>len2)
k1=len1,len1=len2,len2=k1;
k=0;
for(i=0;i<len1;i++)
{
k=(a[i]-'0')+(b[i]-'0')+k;
k2=k;
c[i]='0'+k2%10;
k=k/10;
}
if(strlen(a)<strlen(b))
for(;i<len2;i++)
{
k=(b[i]-'0')+k;
k2=k;
c[i]='0'+k2%10;
k=k/10;
}
else
for(;i<len2;i++)
{
k=(a[i]-'0')+k;
k2=k;
c[i]='0'+k2%10;
k=k/10;
}
if(k>0)
c[i]='0'+k,len2++;
}
/*
void mul(char *a,char *b,char *c)
{
int i;
int len1,len2,k1,k,k2;
len1=strlen(a);
len2=strlen(b);
change(a);
change(b);
if(len1>len2)
k1=len1,len1=len2,len2=k1;
k=0;
for(i=0;i<len1;i++)
{
k=(a[i]-'0')*(b[i]-'0')+k;
k2=k;
c[i]='0'+k2%10;
k=k/10;
}
if(strlen(a)<strlen(b))
for(;i<len2;i++)
{
k=(b[i]-'0')+k;
k2=k;
c[i]='0'+k2%10;
k=k/10;
}
else
for(;i<len2;i++)
{
k=(a[i]-'0')+k;
k2=k;
c[i]='0'+k2%10;
k=k/10;
}
if(k>0)
c[i]='0'+k,len2++;
}
*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -