请问编译器正常,平台显示 "编译错误"怎么回事?

P1255 数楼梯

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;
    }
}

|