为什么我输出之后后面有很多个正方形(本地)

P1914 小书童——凯撒密码

zzyxl_qaq @ 2021-09-10 07:15:54

求改```

include<bits/stdc++.h>

using namespace std; int main(){ char ch[50]; int n; cin>>n; scanf("%s",ch); for(int i=0;i<=strlen(ch);i++){ ch[i]+=n; if(ch[i]>='z'){ ch[i]-=26; }

}
for(int i=0;i<strlen(ch);i++){
    cout<<ch[i];
}
return 0;

}


by zzyxl_qaq @ 2021-09-10 07:16:26

#include<bits/stdc++.h>
using namespace std;
int main(){
    char ch[50];
    int n;
    cin>>n;
    scanf("%s",ch);
    for(int i=0;i<=strlen(ch);i++){
        ch[i]+=n;
        if(ch[i]>='z'){
            ch[i]-=26;
        }

    }
    for(int i=0;i<strlen(ch);i++){
        cout<<ch[i];
    }
    return 0;
}

by 钟智丞 @ 2021-09-10 07:38:32

#include<bits/stdc++.h>
using namespace std;
int main(){
    string ch;
    int n;
    cin>>n;
    cin>>ch;
    for(int i=0;i<ch.length();i++){
        ch[i]+=n;
        if(ch[i]>'z'){
            ch[i]-=26;
        }

    }
    cout<<ch;
    return 0;
}

这样就好了呀,修改别用char数组,要用string,可以变化长度。

用cin cout来输入输出。 strlen改成.length(),因为你的数组开的大小太大了,上个程序残留的导致数组空着的空间不干净,大于z了一减就变方框了


by w23c3c3 @ 2021-09-10 08:35:09

@你永不独行 上面那个循环把=去掉就好了把


by zzyxl_qaq @ 2021-09-12 08:33:22

@w23c3c3 谢谢dl


|