我是靠谱客的博主 飞快小海豚,最近开发中收集的这篇文章主要介绍NOI / 1.7编程基础之字符串 23:过滤多余的空格 和我一样的低智力人适用,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

刚刚同学问了这题,记录一下思考的过程

描述

一个句子中也许有多个连续空格,过滤掉多余的空格,只留下一个空格。

输入

一行,一个字符串(长度不超过200),句子的头和尾都没有空格。

输出

过滤之后的句子。

样例输入

Hello
world.This is
c language.

样例输出

Hello world.This is c language.

代码如下:

//我的想法是按照顺序表的结构,通过循环对表中元素进行简单的移动.
/*主要问题有两个:
1. 如何判断是否有多余空格
2. 如何将空格去掉*/
#include<stdio.h>
#include<string.h>
char a[205];
int len, s, j,n=0,k,x;/*这里定义了一个很重要的计数器 n ,
它兼任了 判断 多余空格 和 作为 循环变量 进行对数组的 去空格 操作;*/
int main()
{
int i;
gets(a);
len = strlen(a);
for (i = 0; i <= len - 1; i++)
{
if (a[i] == ' ')//检测到第一个空格,开始判断是否有多余空格
{
n = 0;
for (j = i; j <= len - 1; j++)/*循环内用 计数器 n 对空格计数,
若检测到 非空格 ,结束循环*/
{
if (a[j] == ' ')n++;
else break;
}
if (n > 1)// 如果 空格数 超过1 则将后面的每一个数往前覆盖 1 个位置
{
for (k =0;k<=n-2;k++)/*若有2个空格 往前覆盖1轮
推广得 有n个空格 往前覆盖n-1轮*/
{
for(x=i+1;x<=len-1;x++)//每次对相邻两个数组元素进行操作,从第2个空格开始
a[x] = a[x + 1];// 一定要操作到a[len],因为它是结束标志 
len = len - 1;
}
}
}// if语句内完成对多余空格的判断和对多余空格的去除
}
printf("%s", a);
return 0;
}
//需要注意的是 使用gets输入 会自动在字符串末尾添上  所以在覆盖过程中 ,也要跟着一起往前移动,

最后

以上就是飞快小海豚为你收集整理的NOI / 1.7编程基础之字符串 23:过滤多余的空格 和我一样的低智力人适用的全部内容,希望文章能够帮你解决NOI / 1.7编程基础之字符串 23:过滤多余的空格 和我一样的低智力人适用所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(69)

评论列表共有 0 条评论

立即
投稿
返回
顶部