int getlength(char a[]){
int i=0;
while(a[i])
i++;
return i;
}/*返回字符串的長度*/
int chartoint(char a){
return a-48;
}/*將字符編程整形*/
void creatarray(char a[],char b[]){
printf("請輸入第壹個數:");
scanf("%s",a);
printf("請輸入第二個數:");
scanf("%s",b);
}/*創建數組*/
void go(char a[],char b[],int s[]){
int alength=getlength(a);
int blength=getlength(b);
int i=alength-1;
int j=blength-1;
int k;/*s數組下標*/
int slength;
if(alength>blength)
slength=alength;
else
slength=blength;
k=slength;
while(i>=0&&j>=0)
s[k--]=chartoint(a[i--])+chartoint(b[j--]);
while(i>=0)
s[k--]=chartoint(a[i--]);
while(j>=0)
s[k--]=chartoint(b[j--]);
k=slength;
while(k>=2){
if(s[k]>=10){
s[k-1]++;
s[k]-=10;
}
k--;
}
printf("兩數之和為:");
if(s[1]>=10){
s[0]=1;
s[1]-=10;
for(i=0;i<=slength;i++)
printf("%d",s[i]);
}
else{
for(i=1;i<=slength;i++)
printf("%d",s[i]);
}
printf("\n");
}
void main(){
char a[1000],b[1000];
int s[1000];
int lab;
lab1: creatarray(a,b);
go(a,b,s);
printf("請輸入1繼續(想退出按其他數字鍵):");
scanf("%d",&lab);
if(lab==1)
goto lab1;
}
//該程序最高可求1000位數的加法運算(更高位數妳可相應設置),對於求減法和乘法也就大同小異了,這裏不再贅述,妳自己模仿修改壹下吧