/*===================================== 过滤多余的空格 总时间限制: 1000ms 内存限制: 65536kB 描述 一个句子的每个单词之间也许有多个空格,过滤掉多余的空格,只留下一个空格 输入 一个字符串(长度不超过200),句子的头和尾都没有空格。 输出 过滤之后的句子 样例输入 Hello world.This is c language. 样例输出 Hello world.This is c language. 思路: 输入字符串a,用gets输入。 用两个下标i、j分别指向数组a,a[i]是将要被移动的字符, a[j]是将要被a[i]覆盖的单元。 开始时i、j都指向a[0]。 从左向右扫描a数组,遇到非空格字符a[i]直接复制到a[j]. 遇到空格字符则看a[j]的前一个是否空格,若是空格则新 出现的空格是多余的,否则新出现的空格是需要保留的。 ======================================*/
1 #include<stdio.h> 2 #include<string.h> 3 int main() 4 { 5 char a[205]; 6 int i,j,len; 7 freopen("5.in","r",stdin); 8 gets(a); 9 len=strlen(a); 10 for(i=0,j=0;i<len;i++)//i是扫描原数组a的下标,j是调整后的下标。 11 { 12 if(a[i]!=' ')//非空格字符 13 { 14 a[j]=a[i]; 15 j++; 16 } 17 else 18 {//遇到空格 19 if(a[j-1]!=' ')//a[j]的前一个不是空格 20 { 21 a[j]=a[i]; 22 j++; 23 } 24 } 25 } 26 a[j]='\0'; 27 printf("%s\n",a); 28 return 0; 29 }