APP下载

一个经典C语言程序的改进

2020-02-22巨同升

电脑知识与技术 2020年36期

摘要:统计单词个数的程序是一个经典的C语言程序,传统的写法存在结构复杂、可读性差的不足。通过对相邻的两个字符同时进行判断,即可简化程序结构,改善程序的可读性。

关键词:单词个数;标记变量;结构性;可读性

中图分类号:TP312        文献标识码:A

文章编号:1009-3044(2020)36-0071-02

培养学生良好的编程能力是程序设计课程的核心目标[1],而编程能力的培养离不开一个个具体的案例程序。

在教学中选用优质的案例程序,对于培养学生的程序设计能力具有重要的示范引导作用[2-3],因此应该选择更加合理有效的程序实现方法。不过,在当前的C语言程序设计教材中,仍有个别案例程序的写法存在改进优化的空间。

1 统计单词个数的传统程序

“统计一个字符串中单词的个数(假定单词之间以空格分隔)”是C语言程序设计中的一个经典程序,是字符串处理部分的一个重要案例[4-5]。

下面的程序是在许多C语言教材中采用的一种传统写法。

源程序1:

#include

#define IN 1      /*表示在一个单词内部*/

#define OUT 0      /*表示在一个单词外部*/

int main(void)

{

char c;

int num,state;

state=OUT;      /*初始状态位于单词外部*/

num=0;

while((c=getchar())!='\n')

{

if(c==' ')

state=OUT;

else if(state==OUT)

{

state=IN;

num++;

}

}

printf("单词个数=%d\n",num);

return 0;

}

这是一个经典的程序,同时也是一个比较晦涩难懂的程序。由于第一个单词之前可能有空格,同时两个单词之间也可能有多个空格,因此不能简单地通过统计空格的个数以得到单词的个数。该程序的编程思路是依据相邻的两个字符进行判断,当相邻的两个字符中,前一个是空格符(即处于单词外部),而后一个是非空格字符(即处于单词内部)时,说明找到一个新的单词的开头,从而将单词的个数加一。……

登录APP查看全文