本文共 1770 字,大约阅读时间需要 5 分钟。
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
看看这个,定义数组的长度为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(" %s\n",str1);
printf("+ ");
for(i=1;i<=len_str1-len_str2;i++)
printf(" ");
printf("%s\n",str2);
printf("--");
for(i=1;i<=len_str1;i++)
printf("-");
printf("\n=");
if(flag==0) printf(" ");
printf("%s\n",str_rut);
}
else if(len_str1
{ printf(" ");
for(i=1;i<=len_str2-len_str1;i++)
printf(" ");
printf("%s\n",str1);
printf("+ %s\n",str2);
printf("--");
for(i=1;i<=len_str2;i++)
printf("-");
printf("\n=");
if(flag==0) printf(" ");
printf("%s\n",str_rut);
}
else
{ printf(" %s\n",str1);
printf("+ %s\n",str2);
printf("--");
for(i=1;i<=len_str1;i++) printf("-");
printf("\n=");
if(flag==0) printf(" ");
printf("%s\n",str_rut);
}
system("pause");
}
转载地址:http://lusxl.baihongyu.com/