您的位置:首页 > 编程语言 > C语言/C++

CODEVS 3115高精度练习之减法

2016-10-16 17:30 281 查看
#include<stdio.h>
#include<string.h>
#include<iostream>
using namespace std;
int main(){
freopen("3115.in","r",stdin);
freopen("3115.out","w",stdout);
char a[510],b[510];
int c[510],i=0,j=0,k=0,x=0,y=0,tw=0;
memset(a,0,sizeof(a));memset(b,0,sizeof(b));memset(c,0,sizeof(c));
scanf("%s",a);scanf("%s",b);
x=strlen(a);y=strlen(b);
a[x]='\0';b[y]='\0';
if(x<y){
printf("-");
swap(a,b);
}
else if(x==y){
k=1;
for(j=0;j<x;j++)
if(a[j]<b[j]) {
k=0;break;
}
if(k==0){
printf("-");
swap(a,b);
}
}
k=0;
/*printf("\n");
for(i=0;i<y;i++) printf("%d ",a[i]-'0');
printf("\n");
for(i=0;i<x;i++) printf("%d ",b[i]-'0');*/
i=strlen(a)-1; j=strlen(b)-1; /*cout<<i<<' '<<j;*/
while(i>=0){
if(j<0) {
if((a[i]-'0')<0){
a[i-1]--;
c[k]=10+(a[i]-'0');
k++;i--;
}
else c[k]=(a[i]-'0');k++;i--;
}
else {
if(a[i]>=b[j]){
c[k]=(a[i]-'0')-(b[j]-'0');
k++;i--;j--;
}
else{
a[i-1]--;
c[k]=10+(a[i]-'0')-(b[j]-'0');
k++;i--;j--;
}
}
}
k--;int fz=0;
for(i=k;i>=0;i--) if(c[i]!=0||fz==1){
printf("%d",c[i]);fz=1;
}
return 0;
}


第4天

盲点:swap
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c语言