求助了,用VS没问题,但是提交就五个WA,哇哇哇......

P1914 小书童——凯撒密码

虽然VS很强,但它还没有聪明到足以自动查错的地步呀QwQ
by ddwqwq @ 2019-04-10 02:33:24


~~虽然 VS 很强,但它还没有聪明到足以和 GNU GCC 编译效果完全一样啊~~ 为防止换行符的问题(Windows 与 Unix 系的差别),最好用 ``scanf("%s", str)`` 的形式输入字符串,用 ``<string.h>`` 中的 ``strlen(str)`` 获取字符串长度。 比如把代码写成这样: ```c int n, len; char li[55]; scanf("%d%d", &n, li + 1); len = strlen(li + 1); for (int i = 1; i <= len; ++i) // do something ``` 这样写对于平台差异的容错性更好。 (另:直接在输入后执行 ``n %= 26`` 会好写不少啊……最多只会减一次 26)
by LoctStrider @ 2019-04-10 07:03:33


上面打错了…… ```c scanf("%d%s", &n, li + 1); ```
by LoctStrider @ 2019-04-10 07:05:37


@[LKC314](/space/show?uid=39951) 谢谢大佬,改成你说的那样我就过了 一开始我用 ```c while (getchar() != '\n') continue; ``` 消除换行符的影响,结果直接五个RE了,真的奇奇怪怪.....
by shadowest @ 2019-04-10 12:50:15


我在Linux(Ubuntu 16.04 LTS)下写的代码,终端运行好像也还没什么问题,为什么交到洛谷这儿就5个WA了? 据我所知洛谷用的Linux。 代码如下: ```cpp #include<bits/stdc++.h> using namespace std; int main() { int n; cin >> n; string src; string rst; getline(cin,src); n %= 26; for(int i=0;i<(int)src.length();i++) { if(src[i] + n > 'z') rst[i] = src[i] + n - 26; else rst[i] = src[i] + n; } for(int i=0;i<(int)src.length();i++) cout << rst[i]; return 0; } ```
by whhsteven @ 2019-07-14 18:27:29


@[shadowest](/space/show?uid=187419) 对了,你是怎么配置VS的?我想用VS写C好像从来没有成功过。 ~~现在用VS写C++好像还挺爽的~~~
by whhsteven @ 2019-07-14 18:34:28


|