加法
#include<stdio.h>
#include<string.h>
int main(){
char a[1000],b[1000];
while(scanf("%s%s",a+1,b+1)==2){
a[0]='0';
b[0]='0';
int leng1=strlen(a)-1,leng2=strlen(b)-1;
if(leng1>=leng2){
for(int i=0; i<leng2; i++){ /*由于字符可以直接转ascii码进行运算,所以无需转数字/*
a[leng1-i]=a[leng1-i]+b[leng2-i]-'0';
}
for(int i=leng1; i>=1; i--){
if(a[i]>'9'){
a[i-1]++;
a[i]-=10;
}
}
if(a[0]=='1')printf("1");
for(int i=1; i<=leng1; i++)printf("%c",a[i]);
putchar('\n');
}
else{
for(int i=0; i<leng1; i++){
b[leng2-i]=b[leng2-i]+a[leng1-i]-'0';
}
for(int i=leng2; i>=1; i--){
if(b[i]>'9'){
b[i-1]++;
b[i]-=10;
}
}
if(b[0]=='1')printf("1");
for(int i=1; i<=leng2; i++)printf("%c",b[i]);
putchar('\n');
}
}
}
减法
#include<stdio.h>
#include<string.h>
int main(){
char a[1000],b[1000],temp[1000];
int c[1000],d[1000],tem;//减法的话,需要判断正负//
while(scanf("%s%s",a,b)==2){
int leng1=strlen(a),leng2=strlen(b);
if(leng1==leng2){
if(strcmp(a,b)==0){
printf("0\n");
continue;
}
if(strcmp(a,b)<0){
strcpy(temp,b);
strcpy(b,a);
strcpy(a,temp);
tem=leng1;
leng1=leng2;
leng2=tem;
printf("-");
}
}
if(leng1<leng2){
strcpy(temp,b);
strcpy(b,a);
strcpy(a,temp);
tem=leng1;
leng1=leng2;
leng2=tem;
printf("-");
}
for(int i=0; i<leng1; i++)c[i]=a[i]-'0';
for(int i=0; i<leng2; i++)d[i]=b[i]-'0';
for(int i=1; i<=leng2; i++)c[leng1-i]=c[leng1-i]-d[leng2-i];
for(int i=leng1-1; i>=1; i--){
if(c[i]<0){
c[i]+=10;
c[i-1]--;
}
}
int p=0;
while(c[p]==0)p++;//将多余的0删除//
for(int i=p; i<leng1; i++)printf("%d",c[i]);
putchar('\n');
}
}