帮忙修改一下代码~大位数减法~
刚刚久久的同学仿照久久的大位数加法写了个大位数减法~运行结果出了点问题~还有这个代码没有考虑小数减大数的负数问题~大家帮忙看看~久久要抽空忙别的了~~~程序代码:
#include<stdio.h> #include<string.h> #define N 101 //先默认数组a比b长 void Init(char a[]); char* fun(char a[],char b[],char c[]); int main() { char a[N+1]={0}; char b[N+1]={0}; char c[N+2]={0}; Init(a); Init(b); printf("%s\n",fun(a,b,c)); return 0; } void Init(char a[]) //输入函数 { char c=0; int i=1; a[0]='0'; while ((c=getchar())!='\n') a[i++]=c; } char* fun(char a[],char b[],char c[]) { char* pa=a+strlen(a)-1; char* pb=b+strlen(b)-1; char* pc=c+N-2; int k; if((*pa-'0')<(*pb-'0')) //修改部分 { *pa+=10; if(*(pa-1)=='0') { for(k=1;*(pa-k)=='0';k++) *(pa-k)='9'; *(pa-k)-=1; } else if(*(pa-1)!='0') { *(pa-1)-=1; } //pa变化 *pc=((*pa-'0')-(*pb-'0')); } // *pc=((*pa-'0')+(*pb-'0')); else if((*pa-'0')>=(*pb-'0')) { *pc=((*pa-'0')-(*pb-'0')); } //*(pc-1)+=1; *pc+='0'; // 每次一个运行后都同时向后推 --pc; if (pa!=a) --pa; if (pb!=b) --pb; return pc+1; }