鱼C论坛

 找回密码
 立即注册
查看: 1713|回复: 4

[已解决]pintia上的一题 ,新生求助

[复制链接]
发表于 2020-11-16 20:31:26 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include<stdio.h>
int main(){
    char a[100];
    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[j]);
    }
    printf("\n");
    return 0;
}
应用字符数组存储从键盘输入一行字符(100个以内),用户输入整数i和n的值,编写算法输出该字符串中从第i个字符开始的n个字符。
提示:若i<1则认为i=1,若字符串剩余的字符不够n个则输出剩余的全部字符。
输入
I love China!
8 8          总是输出不了预期结果
最佳答案
2020-11-16 23:56:03
936241151 发表于 2020-11-16 23:15
不对呀,还是什么都输出不了,

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

  1. // 输出字符串中第 i 个字符之后的 n 个字符
  2. #include<stdio.h>
  3. int main()
  4. {
  5.         char a[100];
  6.         int i, n, j,k = 0;
  7.         while((a[k] = getchar()) != '\n')
  8.                 k++;
  9.         scanf("%d%d", &i, &n);
  10.         for (j = i;j <= i + n;j++)
  11.         {
  12.                 printf("%c", a[j]);
  13.         }
  14.         printf("\n");
  15.         return 0;
  16. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-11-16 21:05:42 | 显示全部楼层
将第5行 scanf("%s\n",&a); 改为:scanf("%s",a); 试试
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-11-16 23:15:00 | 显示全部楼层
风过无痕1989 发表于 2020-11-16 21:05
将第5行 scanf("%s\n",&a); 改为:scanf("%s",a); 试试

不对呀,还是什么都输出不了,
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-16 23:56:03 | 显示全部楼层    本楼为最佳答案   
936241151 发表于 2020-11-16 23:15
不对呀,还是什么都输出不了,

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

  1. // 输出字符串中第 i 个字符之后的 n 个字符
  2. #include<stdio.h>
  3. int main()
  4. {
  5.         char a[100];
  6.         int i, n, j,k = 0;
  7.         while((a[k] = getchar()) != '\n')
  8.                 k++;
  9.         scanf("%d%d", &i, &n);
  10.         for (j = i;j <= i + n;j++)
  11.         {
  12.                 printf("%c", a[j]);
  13.         }
  14.         printf("\n");
  15.         return 0;
  16. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-11-17 09:05:44 | 显示全部楼层
风过无痕1989 发表于 2020-11-16 23:56
那种改法,输入的字符串中间不能有空格。若中间有空格,则用下面这个程序

   for (j = i;j <= i + n;j++)   要改成这个for (j =i-1;j<=i+n-2;j++)
但是while((a[k] = getchar()) != '\n')
                k++;      是什么意思,搞不懂这一部
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-7-5 06:22

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表