C程序设计语言-练习1-12
题目: 编写一个程序,以每行一个单词的形式打印其输入。
分析: 单词是一个不包含空格,制表符或换行符的字符序列。思路很简单,
如果一个字符不是空白字符就打印出来,如果一个单词已到结尾就打印一个
换行符。可以这样判断一个单词是否到结尾:前一个字符是单词的组成部分,
当前字符不是单词的组成部分。
1 #include <cstdio>
2
3 using namespace std;
4
5 int main()
6 {
7 const int OUT = 1; //字符不是单词的组成部分
8 const int IN = 0; //字符是单词的组成部分
9
10 int pre = OUT, curr = OUT;
11
12 int c;
13 while( (c = getchar()) != EOF )
14 {
15 if( c == ' ' || c == '\n' || c == '\t' )
16 {
17 pre = curr;
18 curr = OUT;
19 //是否遇到单词结尾
20 if( pre == IN && curr == OUT )
21 {
22 printf("\n");
23 }
24 }
25 else
26 {
27 pre = curr;
28 curr = IN;
29 putchar(c);
30 }
31 }
32 return 0;
33 }
34
2
3 using namespace std;
4
5 int main()
6 {
7 const int OUT = 1; //字符不是单词的组成部分
8 const int IN = 0; //字符是单词的组成部分
9
10 int pre = OUT, curr = OUT;
11
12 int c;
13 while( (c = getchar()) != EOF )
14 {
15 if( c == ' ' || c == '\n' || c == '\t' )
16 {
17 pre = curr;
18 curr = OUT;
19 //是否遇到单词结尾
20 if( pre == IN && curr == OUT )
21 {
22 printf("\n");
23 }
24 }
25 else
26 {
27 pre = curr;
28 curr = IN;
29 putchar(c);
30 }
31 }
32 return 0;
33 }
34
当然,这个程序可以使用C++的string。