编写程序以每行一个单词的形式打印其输入-哪一种思路比较好,好在哪里?可以改进吗?
程序代码:
/* 编写一个程序,以每行一个单词的形式打印其输入 */ /* * 思路: * 判断不是空格,制表符,换行就直接输出 * 如果是就自己输出换行 * 这样就可以把输入的单词以每行打印了 */ #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); } }