概述
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
看看这个,定义数组的长度为251,可以实现最长250位的两个整数相加.
#include
#include
main()
{int i;
char str1[251]={0};
char str2[251]={0};
char str_rut[252]={0};
int len_str1,len_str2,len_rut=0;
int flag=0; /*定义初始变量*/
clrscr();
printf("please input the first value:n");
scanf("%s",str1);
printf("please input the second value:n");
scanf("%s",str2); /*输入数据*/
len_str1=strlen(str1)-1;
len_str2=strlen(str2)-1;
while(len_str1>=0&&len_str2>=0)
{ *(str_rut+len_rut)=*(str1+len_str1)+*(str2+len_str2)+flag-48;
len_rut++;
flag=0;
if(*(str_rut+len_rut-1)>=58)
{ *(str_rut+len_rut-1)-=10;
flag=1;
}
len_str1--;
len_str2--;
}
while(len_str1>=0)
{
*(str_rut+len_rut)=*(str1+len_str1)+flag;
len_rut++;
flag=0;
if(*(str_rut+len_rut-1)>=58)
{ *(str_rut+len_rut-1)-=10;
flag=1;
}
len_str1--;
}
while(len_str2>=0)
{
*(str_rut+len_rut)=*(str2+len_str2)+flag;
len_rut++;
flag=0;
if(*(str_rut+len_rut-1)>=58)
{ *(str_rut+len_rut-1)-=10;
flag=1;
}
len_str2--;
}
if(flag==1)
*(str_rut+len_rut)=49;
len_str1=strlen(str1);
len_str2=strlen(str2);
len_str1=strlen(str1);
len_str2=strlen(str2);
strrev(str_rut);
printf("n");
if(len_str1>len_str2)
{
printf(" %sn",str1);
printf("+ ");
for(i=1;i<=len_str1-len_str2;i++)
printf(" ");
printf("%sn",str2);
printf("--");
for(i=1;i<=len_str1;i++)
printf("-");
printf("n=");
if(flag==0) printf(" ");
printf("%sn",str_rut);
}
else if(len_str1
{ printf(" ");
for(i=1;i<=len_str2-len_str1;i++)
printf(" ");
printf("%sn",str1);
printf("+ %sn",str2);
printf("--");
for(i=1;i<=len_str2;i++)
printf("-");
printf("n=");
if(flag==0) printf(" ");
printf("%sn",str_rut);
}
else
{ printf(" %sn",str1);
printf("+ %sn",str2);
printf("--");
for(i=1;i<=len_str1;i++) printf("-");
printf("n=");
if(flag==0) printf(" ");
printf("%sn",str_rut);
}
system("pause");
}
最后
以上就是勤奋冬瓜为你收集整理的两个超长正整数的加法c语言,二个超长正整数的相加的全部内容,希望文章能够帮你解决两个超长正整数的加法c语言,二个超长正整数的相加所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复