帮忙修改一下代码~大位数减法~
刚刚久久的同学仿照久久的大位数加法写了个大位数减法~运行结果出了点问题~还有这个代码没有考虑小数减大数的负数问题~大家帮忙看看~久久要抽空忙别的了
~~~
程序代码:#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;
}





~你往这方面想会被w版揍的
~那同学说其实是一个小问题~就是在原来的代码基础上改了一下~
~~
~