编写程序以每行一个单词的形式打印其输入-哪一种思路比较好,好在哪里?可以改进吗?
程序代码:/* 编写一个程序,以每行一个单词的形式打印其输入 */
/*
* 思路:
* 判断不是空格,制表符,换行就直接输出
* 如果是就自己输出换行
* 这样就可以把输入的单词以每行打印了
*/
#include <stdio.h>
int main(void)
{
int c;
while ( (c = getchar()) != EOF ) {
if (c != ' ' && c != '\t' && c != '\n'){
putchar(c);
}
else if ( c == ' ' || c == '\t' || c == '\n' )
printf("\n");
}
return 0;
}
程序代码: GNU nano 2.2.6 文件: lx_1_12_1.c
#include <stdio.h>
#define IN 1 // 在单词内
#define OUT 0 // 在单词外
main()
{
int c, state;
state = OUT;
while ( ( c = getchar() ) != EOF ){
if ( c == ' ' || c == '\n' || c == '\t' ){ // 判断c等于空格,换行,tab:在判断状态是不是在一个单词内是就输出一个换行
if ( state == IN ){
putchar('\n');
state = OUT;
}
}
else if ( state == OUT ) { // 如果不是空格之类的,判断是否在单词内。不在就输出字符,并把状态改为在单词内
state = IN;
putchar(c);
}
else // 不是空格并不在单词外就自己输出字符
putchar(c);
}
}









