该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
#include
#include
#include
#include
#include
#define MAX 101
#define N 1000
#define M 250000
/*函数功能:利用字符串实现超长数加减法运算 */
void jianfa(int a[],int b[],int f);
int lena,lenb,da=1,db=1; /* 把lena,lenb设为全局变量,lena纪录第一个超长型数组的位数,lenb纪录第二个超长型数组的位数*/
char b1[MAX], b2[MAX]; /*纪录需要计算的两个超长型数据 */
void input(int a1[],int a2[]) /*函数input为输入函数,用来纪录两个待计算的超型数据,以数组首地址为参数.以实现返回两个超长型数据*/
{
FILE *fp1;
if((fp1=fopen("xxx.txt","a+"))==NULL)
{ printf("\n cannot creat!");
exit(0);
}
int i,fa=1,fb=1;
printf("请输入第一个数:\n");
scanf ( "%s", b1);
fputs(b1,fp1);
fputs(" , ",fp1);
printf("请输入第二个数:\n"); /*输入两个超长型数据*/
scanf("%s",b2);
fputs(b2,fp1);
lena = strlen( b1 ); /*lena纪录b1的位数*/
lenb = strlen( b2 ); /*lenb纪录b2的位数*/
if(b1[0]=='-') { lena--; da=-1;fa=0;} /*判断数组的符号*/
if(b2[0]=='-') { lenb--; db=-1;fb=0;}
for (i=0; i
for (i=0; i
}
void jiafa(int a[],int b[],int f) /*超长型数据加法运算 */
{
FILE *fp1;
int i,c[MAX+1]={0},s;
if((fp1=fopen("xxx.txt","a+"))==NULL)
{ printf("\n cannot creat!");
exit(0);
}
if(da*db>0||f)
{
if(lena>lenb) s=lena;
else s=lenb; /*用s纪录结果的最大位数*/
for(i=0;i
{
c[i]=a[i]+b[i]+c[i];
c[i+1]=(int)c[i]/10; /*c[i+1]代表进位*/
c[i]=(int)c[i]%10; /*超长数加法运算过程*/
}
if(c[s]) s++; /*判断最后结果的位数*/
fputs("\n两者之和:\n",fp1);
if(da<0&&f||da<0) {printf("-");fputc('-',fp1);}
for(i=s-1;i>=0;i--)
{printf("%d",c[i]); fprintf(fp1,"%d",c[i]);} /*输出结果*/
}
else jianfa(a,b,1);
}
void jianfa(int a[],int b[],int f) /*超长数减法运算*/
{
FILE *fp1;
int i,u=0,c[MAX+1]={0},s;
if((fp1=fopen("xxx.txt","a+"))==NULL)
{ printf("\n cannot creat!");
exit(0);
}
fputs("\n两者之差:\n",fp1);
if(da*db>0||f)
{
if(lena>lenb) s=lena;
else /*用s纪录结果的最大位数*/
{ s=lenb;
for(i=s;a[i]<=b[i]&&i>=0;i--)
if(a[i]
}
if(!u) /*超长数减法运算过程*/
for(i=0;i
{
if(a[i]
{ a[i+1]--;
a[i]+=10;
}
c[i]=a[i]-b[i];
}
else /*当a
for(i=0;i
{
if(b[i]
{ b[i+1]--;
b[i]+=10;
}
c[i]=b[i]-a[i];
}
while(!c[s-1]&&s>1) s--; /*判断最后结果的位数*/
if(f&&(da>0&&u||da<0&&!u)||da>0&&(db>0&&u||u&&!f)) {printf("-");fputc('-',fp1);}
if(da<0&&db<0&&!u) {printf("-");fputc('-',fp1);} /*如果u为真是输出负号*/
for(i=s-1;i>=0;i--) {printf("%d",c[i]);fprintf(fp1,"%d",c[i]);}
}
else jiafa(a,b,1);
}
找不到哪里错了。。。