69,382
社区成员
发帖
与我相关
我的任务
分享
if(j>=0&&k <0)
{
x2[k]='W';
printf("x2's address=%#x\n",x2); //输出数组的起始地址
printf("x2[%d]'s address=%#x\n",k,&x2[k]); //看是否存在越界
}
#include <stdio.h>
#include <string.h>
#include <windows.h>
void main()
{
char x1[1000]={0},x2[1000]={0};
char *add=x1, *sum=x2, *result, *tmp, flag=0;
int len_add=0, len_sum=0, t,i=0;
printf("请输入运算次数(<20):");
scanf("%d",&t);
if(t <1 ||t>20)
return;
while(0<t--)
{
i=0; flag=0; fflush(stdin);
add=x1, sum=x2;
printf("请输入加数和被加数:\n");
scanf("%s%s",x1,x2);
if(strlen(x1)<strlen(x2)) //把最长的作为加数
{
add=x2;
sum=x1;
}
len_add=strlen(add);
len_sum=strlen(sum);
tmp=result=(char *)malloc(len_add+2); //多分配两个空间,即最高位进位和字符串的结尾
memset(result,'0',len_add-len_sum+1); //把被加数缺的前面几位用'0'补齐
strcpy(result+len_add-len_sum+1, sum); //把被加数的内容拷贝到后面几位中
add+=len_add-1;
result+=strlen(result)-1;
while(0<len_add--) //运算
{
*result+=*add+flag-'0';
flag=0;
if(*result>'9')
{
*result-=10;
flag=1;
}
result--;
add--;
}
*result+=flag; //最高位进位调整
while(*result=='0')
result++;
result=strlen(result)==0?result-1:result;
printf("\n%s\n+\n%s\n=\n%s\n",x1,x2,result);
free(tmp);
}
}
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
int main()
{
string num1("3254387423432253424432");
string num2("125489982374892345");
int len=(num1.length()>num2.length()? num1.length():num2.length())+1;
string num1temp=string((len-num1.length()),'0')+num1;
string num2temp=string((len-num2.length()),'0')+num2;
string s(len,'0');
int i=len;
for(int carry=0;i>0;i--,carry/=10)
{
carry+=num1temp[i]-'0'+num2temp[i]-'0';
s[i]=char(carry%10+'0');
}
cout<<s.substr(s.find_first_not_of('0'));
system("pause");
return 0;
}
#include <stdio.h>
#include <string.h>
void main()
{
int i,t,flag,j,k,l,sum[1000];
char x1[1000],x2[1000];
scanf("%d",&t);
if(t <1 ||t>20)
return;
for(i=0;i <t;i++)
{
scanf("%s%s",x1,x2);
l=0;flag=0;
for(j=strlen(x1)-1,k=strlen(x2)-1;;j--,k--)
{
if(j==-1&&k <=-1 ||j <=-1&&k==-1)
break;
if(j>=0&&k <0)
x2[k]='0';
if(j <0&&k>=0)
x1[j]='0';
if(1==flag)
sum[l]=x1[j]+x2[k]+1-96;
else
sum[l]=x1[j]+x2[k]-96;
flag=0;
if(sum[l]>9)
flag=1;
sum[l]=sum[l]%10;
l++;
}
printf("Case %d:\n%s + %s = ",i+1,x1,x2);
if(flag==1)
printf("1");
for(j=l-1;j>=0;j--)
printf("%d",sum[j]);
printf("\n\n");
}
}