渴望学到知识的菜鸟


私信TA

用户名:ldhskd

访问量:30312

签 名:

这小伙子人行,能处!

等  级
排  名 115
经  验 7669
参赛次数 1
文章发表 48
年  龄 18
在职情况 学生
学  校
专  业

  自我简介:

解题思路:

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分

43 人评分

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换万能编程问答  

代码解释器

代码纠错

SQL生成与解释

  评论区

#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];
            }  
        }
    
    }
    
    

    
    
    
    
    
}
2023-04-25 15:13:30
注意,本题数据已经加强!!
2022-10-27 17:54:04
#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;
}
2022-03-31 21:07:08
这题用continue行吗?
2022-01-05 19:12:14
都没有结束条件啊,不是要输出“End of file”吗?
2021-12-30 19:14:31
多个空格失效的处理方法可以是在“ a[j] = '\0';”这句后面加个“i=i-1”
2021-12-10 20:40:04
#include <stdio.h>
#include <string.h>
void fun(char a[]){
        int j,n,i;
        n=strlen(a);
        for(i=0;i<n;i++)
        {
            if(a[i]==' ')
            {
                for(j=i;j<n-1;j++)
                {
                    a[j]=a[j+1];

                }

            }
        }
        for(i=0;i<n;i++)
        {printf("%c",a[i]);}
        printf("\n");


}
int main(){
      char a[1000];
      while(gets(a))
      {
          fun(a);
          }

}
这为什么错了啊
2021-11-18 16:49:45
可是有许多连续的空格就失效了
2021-11-04 19:19:21