在线编译器 C

#include <stdio.h> #include <string.h> int main() { int k,n ; char s[1001]; scanf("%d",&k); n=strlen(s); k%=n; printf("%s%s",s+n-k,s); return 0; }
这段代码试图将字符串循环右移k位,但存在一个关键问题:在读取字符串之前就计算了它的长度。

- 你在调用strlen(s)时,变量s还没有被赋值,此时s的内容是未初始化的,导致n的值是随机的。
- 应该在读取字符串之后再计算长度,即把n=strlen(s);放在scanf("%s",s);之后。