关于长整数的加 乘,有点问题请教!!!
#include<stdio.h>#include<string.h>
#define LIMIT 80
void jia(char *ch1,char *ch2,char *ch3)
{
int len1=strlen(ch1),len2=strlen(ch2),len3,i,tmp,num1[LIMIT]={0},num2[LIMIT]={0},num3[LIMIT]={0};
for(i=len1-1;i>=0;i--)
num1[len1-1-i]=ch1[i]-48;
for(i=len2-1;i>=0;i--)
num2[len2-1-i]=ch2[i]-48;
i=0,tmp=0,len3=len1>len2?len1:len2;
while(i<len3)
{
num3[i]=num1[i]+num2[i]+tmp;
tmp=0;
if(num3[i]>=10){tmp=num3[i]/10;num3[i]%=10;}
i++;
}
if(tmp!=0){num3[i]=tmp;i++;}
len3=i;
for(i=len3-1;i>=0;i--) ch3[len3-1-i]=num3[i]+48;
ch3[len3]='\0';
}
void cheng(char *ch1,char *ch2,char *ch3)
{
int i,j,len1=strlen(ch1),len2=strlen(ch2),len3,
temp,num1[LIMIT]={0},num2[LIMIT]={0},num3[LIMIT]={0};
for(i=len1-1;i>=0;i--)
num1[len1-1-i]=ch1[i]-48;
for(i=len2-1;i>=0;i--)
num2[len2-1-i]=ch2[i]-48;
for(i=0;i<len1;i++)
{
temp=0;
for(j=0;j<len2;j++)
{
num3[i+j]+=num1[i]*num2[j]+temp;
temp=0;
if(num3[i+j]>=10)
{
temp=num3[i+j]/10;
num3[i+j]%=10;
}
}
while(temp!=0)
{
num3[i+j]+=temp;temp=num3[i+j]/10;j++;
}
}
len3=len1+len2;
while(len3>1&&num3[len3-1]==0)
len3--;
for(i=0;i<len3;i++)
ch3[len3-1-i]=num3[i]+48;
ch3[len3]='\0';
}
void main()
{
char ch1[LIMIT],ch2[LIMIT],ch3[LIMIT];
void jia(char *ch1,char *ch2,char *ch3);
void cheng(char *ch1,char *ch2,char *ch3);
printf("请输入第一个数\n");
scanf("%s",ch1);
printf("请输入第二个数\n");
scanf("%s",ch2);
printf("\n");
jia(ch1,ch2,ch3);
printf("两数之和:%s\n",ch3);
cheng(ch1,ch2,ch3);
printf("两数之积为:%s\n",ch3);
getchar();
getchar();
}
这是一个长整数加乘的代码问题有二:
1 需要一个界面类似这样
("*********主菜单*********\n");
("* 1 两数相加 *\n");
("* 2 两数相乘 *\n");
("* 3 退出 *\n");
("*************************\n");按相应的数字能有相应的功能
2 从文件读入长整数,并将运算结果保存到文件中。
希望哪位大侠把问题都解决了,或者先一个都行,小女子急需啊,把代码改了,回我就行。再次感谢!!!