alwaysmissme
余五阳
2019-12-01 11:10
采纳率: 80%
浏览 267

请问输入为什么只能输一行以及代码为何无法运行?

题目描述
给定一个字符串长度为 n 的字符串 s1 (10 < n < 100) , 求出将字符串循环向左移动 k位的字符串 s2 (1 < k < n) , 例如:字符串 abcdefghijk , 循环向左移动 3 位就变成 defghijkabc

输入描述
输入仅两行,第一行为左移的位数 k , 第二行为字符串 s1 .

输出描述
输出仅一行,为将字符串 s1 左移 k位得到的字符串 s2 .

样例输入
3
abcdefghijk
样例输出
defghijkabc

#include<stdio.h> 
#include<string.h>
#define N 110
int main ()
{
    char s1[110];
    char s2[110];
    char s3[110];
    int i,j,m,n,k,z;
    scanf("%d",&k);
    for(i=0;i<n;i++)
    scanf("%s",&s1[i]);
    {
     for(i=0;i<n-k;i++)
    {
        s2[i]=s1[i+k];
    }
    for(z=0;i<n;z++,i++)
    {
        s2[i]=s1[z];
    }
    for(i=0;i<n;i++)
    printf("%s\n",s2[i]);
}
    return 0;
}
  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

1条回答 默认 最新

  • qtchen_1988
    qtchen_1988 2019-12-01 11:45
    已采纳

    你只给k赋值,没看你给n赋值,然后for循环用到n了;

    #include<stdio.h>
    #include<string.h>
    #define N 100
    int main ()
    {
        char s1[N];
        char s2[N];
        memset(s1,0x0,N);
        memset(s2,0x0,N);
        int i,n,k;
        scanf("%d",&k);
        getchar();
        gets(s1);
        n = strlen(s1);
        for(i=0;i<n;i++)
        {
            if(i<k)
                s2[(n-k)+i] = s1[i];
            else
                s2[i-k] = s1[i];
        }
        s2[i] = '\0';
        printf("%s\n",s2);
        return 0;
    }
    
    点赞 评论

相关推荐