输入一个代码:
#include<iostream>
using namespace std;
char *ladd(char *s1,char *s2)
{ int n1,n2,n;
char *res,c=0;
n1=strlen(s1);
n2=strlen(s2);
n=n1>n2?n1:n2;
res=new char[n+2];
for(int i=n+1;i>=0;i--)
res[i]=i>n-n1?s1[i-n-1+n1]:'0'; for(int i=n;i>=0;i--)
{ char tchar;
tchar=i>n-n2?res[i]-n2?res[i]-'0'+s2[i-n+n2-1]-'0'+c:res[i]-'0'+c; c=tchar>9?1:0;
res[i]=c>0?tchar-10+'0':tchar+'0'; }
return res;
}
int main()
{
char num1[100],num2[100],*num; cin>>num1>>num2; num=ladd(num1,num2);
cout<<num1<<"+"<<num2<<"="<<num<<endl; delete[]num;
return 0;}
程序报错:
报错①:[Error] ‘strlen’ was not declared in this scope
关于改错,这个帖子给了很详细的解答:
https://blog.youkuaiyun.com/qq_45554689/article/details/109082242?utm_source=app&app_version=4.11.0&code=app_1562916241&uLinkId=usr1mkqgl919blen
报错②:[Error] expected primary-expression before ‘;’ token
报错③:[Error] expected ‘:’ before ‘;’ token
把这两个放在一起说,是因为他们貌似属于同范畴问题(新人瑟瑟发抖)
出现这两个问题
是因为前面的代码有你的输入错误
因此改错的着重点在于检查前面有没有你输入错的地方
综上所述,改正后的代码如下:
#include<iostream>
#include<cstring>
using namespace std;
char *ladd(char *s1,char *s2)
{
int n1,n2,n;
char *res,c=0;
n1=strlen(s1);
n2=strlen(s2);
n=n1>n2?n1:n2;
res=new char[n+2];
for(int i=n+1;i>=0;i--)
res[i]=i>n-n1?s1[i-n-1+n1]:'0';
for(int i=n;i>=0;i--)
{
char tchar;
tchar=i>n-n2?res[i]-'0'+s2[i-n+n2-1]-'0'+c:res[i]-'0'+c;
c=tchar>9?1:0;
res[i]=c>0?tchar-10+'0':tchar+'0';
}
return res;
}
int main()
{
char num1[100],num2[100],*num;
cin>>num1>>num2;
num=ladd(num1,num2);
cout<<num1<<"+"<<num2<<"="<<num<<endl;
delete[]num;
return 0;
}
成功输出: