yaoxinmail @ 2024-05-07 16:43:37
/tmp/compiler_lira2tui/src: In function ‘int add(char, char, char*)’:
/tmp/compiler_lira2tui/src:7:9: 错误:‘strrev’ was not declared in this scope; did you mean ‘strsep’?
7 | strrev(s1);
| ^~
| strsep
代码如下:
#include<iostream>
#include<cstring>
using namespace std;
#define maxn 10050
int add(char* s1, char* s2, char* buf){
if (strlen(s1) > strlen(s2)) return add(s2,s1,buf);
strrev(s1);
strrev(s2);
char* p=s1;
char* q=s2;
char* r=buf;
int cx = 0;
while(*p){
int t = (*p -'0') + (*q-'0') +cx;
*r = t % 10 +'0';
cx = t / 10;
p++; q++; r++;
}
while(*q){
int t = *q-'0' + cx;
*r = t % 10 +'0';
cx = t / 10;
q++; r++;
}
if(cx==1) {
*r = '1';
r++;
}
*r='\0';
strrev(buf);
return 0;
}
int main(){
char a[maxn],b[maxn],c[maxn];
memset(a,0,maxn); memset(b,0,maxn); memset(c,0,maxn);
int n;
cin>>n;
a[0]='2' ;
b[0]='1';
for(int i=3; i<=n ; i++ ){
strcpy(c,a);
add(b,c,a);
strcpy(b,c);
}
cout<<a<<endl;
return 0;
}
by yaoxinmail @ 2024-05-07 16:45:26
看错误提示 是未声明strrev 函数。 可是头文件已经包括从string了。 而且在Devc++里面运行正常
by WANGXIAO_ @ 2024-05-07 16:56:09
这个strrev有一部分的编译器不支持,洛谷的编译器就不支持,建议换一种写法,希望对你有帮助。
by Bismuth_Sulfate @ 2024-05-25 20:48:00
希望能对你提供一些帮助
void strrev(string &n){
char t;
for(int i = 0;i < n.size()/2;++i){
t = n[i];
n[i] = n[n.size()-i-1];
n[n.size()-i-1]=t;
}
}