不知道为什么全错了。求助大佬!

P1914 小书童——凯撒密码

RUNINTO @ 2019-10-23 19:11:15

#include <bits/stdc++.h>
using namespace std;

int main(void)
{
    char data[60];//a = 97
    int len;
    int add;

    cin>>add;
    getchar();
    gets(data);
    len = strlen(data);

    for (int i = 0; i <= len - 1; i++)
        data[i] = ((data[i]- 'a') + add)%26 + 'a';

    for(int j = 0; j <= len - 1; j++)
    {
        cout<<data[j];
    }

    return 0;
 } 

by 0nullptr @ 2019-10-23 19:29:48

@RUNINTO

gets函数不稳定,用scanf


by RUNINTO @ 2019-10-23 20:36:27

@一个python屑 通过啦!!!太感谢了

可不可以再麻烦你简单的介绍一下为什么gets不稳定?


by 0nullptr @ 2019-10-23 20:48:42

@RUNINTO

举个常见的例子,\text{Windows}下换行符是\r\n\text{Linux}下是\n。那么如果一道题的数据是在\text{Windows}下生成的,由于平台差异,在使用gets函数时,在\text{Linux}下,会把\r也读入字符串内,造成字符串长度变长,而在\text{Windows}下则不会读入\r。这也是你这道题无法通过的原因。


by RUNINTO @ 2019-10-27 18:30:34

@一个python屑 原来是这样!十分感谢哦


|