iponika @ 2023-10-08 22:53:02
#include<stdio.h>
#include<stdlib.h>
//97a~122z
int main(void)
{
int n, i = 0;
char str[50] = {0};
scanf("%d", &n);
getchar();
gets(str);
//while((str[i] = getchar()) != EOF)
// ++i;
str[i] = 0;
for(i = 0; str[i] != 0; ++i)
str[i] = (str[i] + n - 97) % 26 + 97;
printf("%s", str);
system("pause");
return 0;
}
by Linune_Gump @ 2023-10-08 23:03:28
不太理解为啥VSCode上可以,很容易就会发现,不管你输入啥都不会有输出。因为
str[i] = 0;
for(...; str[i] != 0; ...)
所以这个for根本不会被执行
顺便提一嘴,system("pause")不知道在你谷行不行,反正看着很难受
至于怎么改嘛……不太懂为什么要让str[i]=0,这个判断条件也不是很理解。嗯,其他应该没什么,改了应该就能A了
by Linune_Gump @ 2023-10-08 23:08:50
@Linune_Gump 其实……改了还不行
这个写代码的习惯上好像不是很正统,,,算法性的问题就是上面的两条
by iponika @ 2023-10-10 23:51:48
@Linune_Gump 呃呃,抱歉,在vscode上可以运行的是把gets注释掉,然后把下面被注释的两行恢复,而且还要把EOF换成'\n'的版本。 str[i]=0是为了用0替换掉'\n',给刚输入的字符串标记尾部。我觉得既然i==0,那个for还是会执行的吧? 关于system("pause"),孩子昨天刚用上调试器,原谅则个,,,
by iponika @ 2023-10-10 23:52:33
@iponika 这个回复系统怎么换行啊...
by Linune_Gump @ 2023-10-21 16:46:18
@iponika 哦哦哦我明白了,你要不看看注释完那个while之后i会是多少(狗头)
markdown的换行的话就是敲两个换行。