葛成功之路 2019-12-01 11:10 采纳率: 87.5%
浏览 321
已采纳

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

题目描述
给定一个字符串长度为 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 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;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 微信会员卡接入微信支付商户号收款
  • ¥15 如何获取烟草零售终端数据
  • ¥15 数学建模招标中位数问题
  • ¥15 phython路径名过长报错 不知道什么问题
  • ¥15 深度学习中模型转换该怎么实现
  • ¥15 HLs设计手写数字识别程序编译通不过
  • ¥15 Stata外部命令安装问题求帮助!
  • ¥15 从键盘随机输入A-H中的一串字符串,用七段数码管方法进行绘制。提交代码及运行截图。
  • ¥15 TYPCE母转母,插入认方向
  • ¥15 如何用python向钉钉机器人发送可以放大的图片?