虽然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