0136于佳扬


私信TA

用户名:Dirge0136

访问量:15355

签 名:

等  级
排  名 551
经  验 4382
参赛次数 1
文章发表 46
年  龄 0
在职情况 学生
学  校 重庆理工大学
专  业

  自我简介:


解题思路:

注意事项:

参考代码:

#include

#define N 100

int main()

{

    char a[100];

    int i,j;

    i=0;j=0;

    while(gets(a))

    {

        for(i=0;i<N;i++)

        {

            if(a[i]=='\0')

            {

                break;

            }

            j++;

        }

        for(i=0;i<j;i++)

        {

            if(a[i]!=' ')

            {

                printf("%c",a[i]);

            }

        }

        printf("\n");

    }

    return 0;

}

这个代码是错误的,是第一次写出来的,会发现当你第一次输入一个很长的字符串后,会把每一位都记在一个数组中。比如我第一次输入10个字符,则a[0]到a[9]都代表着一个字符,如果我在第二次只输入了一个三个字符的字符串,那我只应该存在了a[0]到a[2]中,但是我再输出时,会将第一次所记录的a[3]到a[9]都输出出来,从而导致结果错误,所以由这里就可以知道我们不应该把每个字符串中的每个字符都存起来,于是经过修改得到以下的程序:

#include

#include

#define N 100

int main()

{

    char a[100];

    int m,n;

    while(gets(a))

    {

        m=strlen(a);

        for(n=0;n<m;n++)

        {

            if(a[n]!=' ')

            {

                printf("%c",a[n]);

            }

        }

        printf("\n");

    }

    return 0;

}

这个程序用到了strlen,strlren可以直接得出字符串的有效长度,使用这种函数,我们就可以不再去一个一个赋值从而得知长度,同时也可以避免出现像第一个程序出现的那种情况。这个程序中输出了不是空格的字符,从而起到了筛选掉空格的效果。



 

0.0分

9 人评分

  评论区

挺喜欢你这个代码的对于新手小白很友好,五星好评
2023-11-19 11:39:15
为什么不能用while(gets(a)!=EOF)?
2022-01-23 17:34:49
EOF是啥意思,咋搞?
2020-12-09 18:44:33
  • «
  • 1
  • »