zl程序教程

您现在的位置是:首页 >  后端

当前栏目

练习 1-13 编写一个程序,打印输入中单词长度的直方图(水平)(方法2)

方法输入程序 一个 编写 练习 13 打印
2023-09-14 09:06:57 时间

C语言程序设计(第二版) 练习1-13 个人设计

练习1-13 编写一个程序,打印输入中单词长度的直方图(水平)(方法2)

代码块:

#include <stdio.h>
#include <stdlib.h>
int main()
{
	int nc, ns, nw, i, j;                                       /*定义字符长度,单词终结判断条件,单词个数,循环变量*/
	int p[50];                                                  /*定义单词长度数组*/
	char c;                                                     /*定义输入字符*/
	ns=1;                                                     /*单词判断条件初始值为1*/
	nc=0;                                                     /*字符长度初始值为0*/
	nw=0;                                                     /*单词长度初始值为0*/
	i=1;                                                      /*单词编号循环变量初始值为1*/
	while ((c=getchar())!=EOF){                             /*当输入字符不是文件结束符时*/
		if ((c>='A'&&c<='Z')||(c>='a'&&c<='z')){  /*如果输入字符为字母*/
			++nc;                                               /*字符个数增加1个*/
			ns=0;                                             /*单词判断条件调整为0*/
		}
		else if (ns==0){                                      /*如果输入字符不是字母,并且单词判断条件值为0*/
			++nw;                                               /*单词个数增加1个*/
			p[i]=nc;                                          /*把字符长度赋值给单词数组*/
			++i;                                                /*单词数组编号增加1个*/
			ns=1;                                             /*单词判断条件值恢复初始值*/
			nc=0;                                             /*字符个数统计值恢复初始值*/
		}
	}
	for(i=1; i<=nw; ++i){                                   /*此循环程序内表示打印所有统计的单词直方图*/
		printf("%2d  ", p[i]);
		for(j=1; j<=p[i]; ++j)
			printf("*");
		printf("\n");
	}
    system("pause");
	return 0;
}

#####如果程序设计有错误或更简洁的方法,欢迎并感谢您指正出示,谢谢!