解题思路:

gets函数的原型是char * gets(char *s);当读取成功的时候返回s,所以这个程序里p的值是和a的值相同的。当gets读取发生错误时返回NULL

while(gets(a))就是只要a能读取成功就一直循环


这样我们就完成了循环的步骤


之后,创建函数,实现出现空格后,把空格后的所有字符向前移一位,从而实现清除空格的效果


不过,需要注意的是,当吧所有字符向前移动一位后,最后一位字符却没有消失

比如:1 2 3 3 4 5 6 7 8 9 把这个数组从第二个3开始向前移动一位

那就是 1 2 3 4 5 6 7 8 9 9  ,就是把后一个赋值给前一个,不过这样的话,最后有一个值是重复的,那就要把最后一个值给设置成结束,也就是'\0'




参考代码:

#include <stdio.h>
#include <string.h>
void fun(char a[])
{
    int i, j;
    for (i = 0; i < strlen(a); i++)
    {
        if (a[i] == ' ')
        {
            for (j = i; j < strlen(a) - 1; j++)
                a[j] = a[j + 1];
            a[j] = '\0';
        }
    }
}
int main()
{
    char a[101];
    while (gets(a))
    {
        fun(a);
        puts(a);
    }
    return 0;
}


点赞(0)
 

0.0分

39 人评分

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

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

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

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

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

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

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

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

评论列表 共有 20 条评论

一个特别固执的人 1年前 回复TA
@验题君 这道题没思路...求解
故人 1年前 回复TA
#include<stdio.h>
#include<string.h>
int main()
{
	  char a[100];
    while (gets(a))
    {
        ga(a);
        puts(a);
    }
    
	return 0;
}
void ga(char a[100])
{
    int len,k=0;
    len=strlen(a);
    for(int i=0;i<len;i++)
    {
        if(a[i]==' ')
        {   
            k=i;
            for(k;k<len;k++)
            {
                a[k]=a[k+1];
            }  
        }
    
    }
    
    

    
    
    
    
    
}
un 1年前 回复TA
@佬饕 @Chumey 666
春风十里 1年前 回复TA
@乐业 可以的
十九 1年前 回复TA
@佬饕 @Chumey niupi
ZERO 2年前 回复TA
@青索 我帮你优化了一下#include<stdio.h> int main() { 	char c; 	while(scanf("%c",&c)!=EOF) 	{ 	    if(c!=&#039; &#039;) printf("%c",c); 	} 	return 0; }
DAILAO 2年前 回复TA
@乐业 两个连续的其实也可以的 我拿continue做的但是最后没通过 再电脑上可以运行的
验题君 2年前 回复TA
注意,本题数据已经加强!!
杨硕 2年前 回复TA
@青索 还真没想到直接怎么做
青索 2年前 回复TA
#include<stdio.h>
int main()
{
    char n;
    while(~(scanf("%c",&n)))
    {
        if(n=='\n')
            printf("\n");
        else if(n==' ')
            printf("");
        else
            printf("%c",n);
    }
	return 0;
}