思路是把输入的要相加的两个数转化成字符串存储在字符数组a,b中,再从低位(个位)开始相加,每次分别从两个数组中取一个字符,将其转为int在相加(注意进位!!),相加后结果转成char后存储在字符数组c中,再从个位开始输出c数组即可。 #include<stdio.h> #include<stdlib.h> #include<string.h> void add(char a[],char b[],char back[]) { int i,j,k,up,x,y,z,l; if(strlen(a)>strlen(b)) l=strlen(a)+2; else l=strlen(b)+2; char *c; c=(char*)malloc(l*sizeof(char)); i=strlen(a)-1; j=strlen(b)-1; k=0; up=0; while(i>=0||j>0) { if(i<0) x='0'; else x=a[i]; if(j<0) y='0'; else y=b[j]; z=x-'0'+y-'0'; if(up) z+=1; if(z>9) {up=1;z%=10;} else up=0; c[k++]=z+'0'; i--;j--; } if(up) c[k++]='1'; c[k]='/0'; i=0; for(k-=1;k>=0;k--) back[i++]=c[k]; back[i]='/0'; }