关于对输入字符串的统计

喜欢而已 提交于 2020-03-10 19:35:14

先说一下第一次敲这个题目的想法,因为不熟悉gechar()的使用,所以构思先要求输入字符串长度n,然后输入字符串,将字符串存入事先定义好的一维数组中,然后写循环再对数组中字符进行判断,对库函数判断数字以及判断字母函数不熟悉,所以自行将判断写为根据ASCII码来判断。
可想而知的问题就是先行定义的数组定义多大,不论多大都不能保证一定符合输入要求,所以是较严重的问题。
后来了解后的另一个问题就是在刚开始的代码中,判断是否为字母时采用字母连续范围取值判断,就是对应字符c>=‘a’&&c<=='z’的方法进行判断,但是在其他系统中字母之间并非一定连续,所以可能会产生错误。
再有就是不调用库函数全部自己写代码过于繁琐,当然相比而言这个问题不算大

修正后代码

void CountStr()//定义函数名
{
	char c;
	int num = 0;//数字统计
	int alpha = 0;//字母统计
	int blank = 0;//空格统计
	int other = 0;//其他统计
	while((c=getchar()) != '\n')//从键盘获得字符,当回车时停止
	{
		if(isalpha(c))//使用库函数判断获得字母是否为字母、数字、空格、其他符号
		{
			alpha ++;//对应统计变量逐次加一
		}
		else if(isdigit(c))
		{
			num ++;
		}
		else if(c==' ')
		{
			blank ++;
		}
		else 
		{
			other ++;
		}
	}
	printf("数字:%d,字母:%d,空格:%d,其他符号:%d\n",num,alpha,blank,other);
}

在修改后的代码中

  1. 使用了库函数进行判断,代码简洁明了
  2. 变量命名更加规范一目了然
  3. 通过getchar()函数在循环内,对键盘输入的字符一次判断,取消了一维数组的缺陷
  4. 对相应的库函数有所熟悉

对于上一篇学习总结,哈哈哈。第一次写,什么都没想,内容写完就直接发表,回头一看发现内容在代码块里,确实有些尴尬,看的时候还要横向拖动,麻烦的一P,所以很感兴趣的话可以看不然就别看了,就是个个人总结,没什么特殊,但还是跟点进来看的人道个歉,不好意思啦,今后会注意的😁在下边加一个自写的判断小写字母的函数

bool isalp(char c)
{
	if(c >= 97&&c <= 122)
	{
		return 1;
	}
	else
		return 0;
}

这次先到这儿,以后发的话就一个题目或者一个主题一篇

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!