怎么就错了?

P1914 小书童——凯撒密码

黑影刺客 @ 2021-02-24 16:40:03

#include<cstdio>
using namespace std;
int main(){
    char abc[50],n;
    scanf("%d",&n);
    scanf("%s",abc);
    for(int i=0;i<50;i++){
        if(abc[i]='\0'){
            break;
        }
        for(int j=1;j<=3;j++){
            abc[i]--;
            if(abc[i]<'a'){
                abc[i]='z';
            }
        }
    }
    for(int i=0;i<50;i++){
        if(abc[i]='\0'){
            break;
        }
        printf("%c",abc[i]);
    }
    return 0;
}

洛谷测试点的输入:3 a 洛谷测试点的输出:d


by Textbook_blasphemy @ 2021-02-24 16:56:47

strlen()了解一下

算了,懒得at了


by hjxhjx @ 2021-02-24 16:57:46


by hjxhjx @ 2021-02-24 16:58:35

@黑影刺客


by 黑影刺客 @ 2021-02-24 17:01:58

@hjxhjx

只有两个AC


by hjxhjx @ 2021-02-24 17:09:06

@黑影刺客 没有改超过字符A就回到Z的代码


by hjxhjx @ 2021-02-24 17:16:25

@黑影刺客

另外提几点建议:

  1. 数组尽量定义在所有函数的外部,即作为全局变量定义。这样的数组可以保证全部被设为 0,这在以后会有不少好处
  2. 数组尽量多申请一点内存,比如这题 n≤50 ,最好定义为 int abc[55];
  3. 如果是读入字符串,可以使用strlen(abc)来获得字符串abc的长度,可以使用for(int i=0;i<strlen(abc);i++)

上一页 |