问题描述:从键盘上的输入一句话,直到按回车键为止,这些字符被原样输出,但若有连续的一个以上的空格时只输出一个空格。
例如,输入:I am a teacher.,输出I am a teacher.
笔者的code:
1 #include "stdafx.h" 2 3 int main() 4 { 5 char c(‘\0‘), m(‘\0‘); 6 7 do 8 { 9 c = getchar(); 10 if ( (m == ‘ ‘) && (c == ‘ ‘)) 11 { 12 putchar(‘\b‘); 13 } 14 putchar(c); 15 m = c; 16 17 } while (c != ‘\n‘); 18 19 return 0; 20 }
老师的code:
1 #include <stdio.h> 2 int main( ) 3 { 4 char c, frontIsSpace=0; //frontIsSpace用于记忆前面的符号是否为空格,是空格,值为1,不为空格,为0 5 while ((c=getchar())!=‘\n‘) 6 { 7 if (c!=‘ ‘) 8 { 9 frontIsSpace=0; //在读入下一个字符后,当前的字符,就是下一次所谓前一个,其值不是空格,故赋值为0 10 putchar(c) ; 11 } 12 else if (frontIsSpace==0) //如果前一个不是空格,当前的这个空格是要输出的 13 { 14 putchar(c); //输出的是空格 15 frontIsSpace=1; //在读入下一个字符后,就需要知道,当前的字符,也就是下一次所谓前一个,其值是空格,故赋值为1 16 } 17 } 18 return 0; 19 }
感想:
这道题第一次做,干想是很困难的。这个时候就可以写“伪代码”或画流程图,不要嫌麻烦,其实可以大大提高效率。比如本题在写代码之前就可以,写个伪代码:
输入字符》利用中间变量判断前一个字符是否为space》
1. 是:输出退格
2. 否:输出字符(数据处理)
》将字符存储至中间变量 》返回循环
=
原文地址:https://www.cnblogs.com/miyazakehime/p/9130133.html
时间: 2024-11-10 16:23:09