解题思路:

注意事项:

参考代码:

#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.0分

9 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 4 条评论

凌辰 1年前 回复TA
挺喜欢你这个代码的对于新手小白很友好,五星好评
JCW 2年前 回复TA
为什么不能用while(gets(a)!=EOF)?
0136于佳扬 4年前 回复TA
@加了笔海带 循环中的判断条件用EOF的话,只有按ctrl+z就可以退出循环
加了笔海带 4年前 回复TA
EOF是啥意思,咋搞?