936241151 发表于 2020-11-16 20:31:26

pintia上的一题 ,新生求助

#include<stdio.h>
int main(){
    char a;
    int i,n,j;
    scanf("%s\n",&a);
    scanf("%d %d",&i,&n);
    for(j=i-1;j<=i-2+n;j++){
      printf("%c",a);
    }
    printf("\n");
    return 0;
}
应用字符数组存储从键盘输入一行字符(100个以内),用户输入整数i和n的值,编写算法输出该字符串中从第i个字符开始的n个字符。
提示:若i<1则认为i=1,若字符串剩余的字符不够n个则输出剩余的全部字符。
输入
I love China!
8 8          总是输出不了预期结果

风过无痕1989 发表于 2020-11-16 21:05:42

将第5行 scanf("%s\n",&a); 改为:scanf("%s",a); 试试

936241151 发表于 2020-11-16 23:15:00

风过无痕1989 发表于 2020-11-16 21:05
将第5行 scanf("%s\n",&a); 改为:scanf("%s",a); 试试

不对呀,还是什么都输出不了,

风过无痕1989 发表于 2020-11-16 23:56:03

936241151 发表于 2020-11-16 23:15
不对呀,还是什么都输出不了,

那种改法,输入的字符串中间不能有空格。若中间有空格,则用下面这个程序

// 输出字符串中第 i 个字符之后的 n 个字符
#include<stdio.h>
int main()
{
        char a;
        int i, n, j,k = 0;
        while((a = getchar()) != '\n')
                k++;
        scanf("%d%d", &i, &n);
        for (j = i;j <= i + n;j++)
        {
                printf("%c", a);
        }
        printf("\n");
        return 0;
}

936241151 发表于 2020-11-17 09:05:44

风过无痕1989 发表于 2020-11-16 23:56
那种改法,输入的字符串中间不能有空格。若中间有空格,则用下面这个程序

{:10_323:}   for (j = i;j <= i + n;j++)   要改成这个for (j =i-1;j<=i+n-2;j++)
但是while((a = getchar()) != '\n')
                k++;      是什么意思,搞不懂这一部
页: [1]
查看完整版本: pintia上的一题 ,新生求助