知识点:函数的调用和字符数组的运用。

字符数组是指用来存放字符数据的数组。其定义的一般形式为: char 数组名[数据长度] 。字符数组用于存放字符或字符串,字符数组中的一个元素存放一个字符,它在内存中占用一个字节。

在做这题时,需要思考一下。从实参传入字符串到形参进行统计,形参统计字符的数量时会用到循环,但我们输入的字符串是随机的,并没有准确的量。

另外循环中给定的条件,必须要达到条件满足时才可停止。举个例子,假设循环结束条件是 i<=10,我们在输入字符时需得输入十个或十个以上才会停止输入进行统计,因此这样会非常局限。

提到这个问题后,我们今天就讲述一下字符串的串结束标志

定义

字符串和字符串结束标志
在C语言中,是将字符串作为字符数组来处理的。为了测定字符串的实际长度,C语言规定了一个“字符串结束标志”,以字符’\0’作为结束标志

简而言之,在每个字符串结束后计算机会自动添加结束标志,来判定此字符串已经结束。

细心的同学可能已经发现解决循环统计的问题了,将串结束标志作为循环结束条件,当字符数组中输出的元素等于串结束标志,那么此循环便会结束。是不是就达到了我们随机输入效果了。

for (int i = 0; a[i]!='\0'; i++)

陈述: 由主函数输入一串字符,通过调用函数统计其中字母、数字等的个数。

分析:

  1. 创建统计字符串个数函数。定义要统计的变量名,分别赋初值为 0 。
  2. 利用循环输出由主函数输入的字符串,并进行判断输出元素是否字母,如果是,字母变量++(自增,加一)。
  3. 对需要统计的类型依次进行判断,最后输出。
void statistical(char a[])
{int letter = 0;int number = 0;int space = 0;int other = 0;for (int i = 0; a[i]!='\0'; i++){if ((a[i] >= 'a' && a[i] <= 'z') || (a[i] >= 'A' && a[i] <= 'Z'))letter++;else if (a[i] >= '0' && a[i] <= '9')number++;else if (a[i] == ' ')space++;elseother++;}cout << "字母的个数有:" << letter << endl;;cout << "数字的个数有:" << number << endl;cout << "空格的个数有:" << space<<endl;cout << "其他个数有:" << other << endl;}

进行到这里,我们简单讲一下关于从主函数输入字符串的问题。

同学们熟悉c和c++中的输入是 scanf 和 cin ,但这两个函数输入字符串时存在一个问题,就是如果输入了空格会认为字符串结束,空格后的字符将作为下一个输入项处理,。

针对此问题,我们可以引入 cin.getline 和 gets 函数输入 。

cin.getline

此函数会一次读取多个字符(包括空白字符)。它以指定的地址为存放第一个读取的字符的位置,依次向后存放读取的字符,直到读满N-1个,或者遇到指定的结束符为止。若不指定结束符,则默认结束符为换行符,此函数并不保留结束符,它通过结束符确定结束,但不保存结束符,它用空字符来替换结束符。其语法为:
cin.getline( 字符数组变量名,字符数组元素的个数,结束符)。
为char a[10]输入元素,cingetline(a,10,’\n’)。

gets

gets从标准输入设备读字符串函数,其可以无限读取,不会判断上限,以回车结束读取,所以程序员应该确保buffer的空间足够大,以便在执行读操作时不发生溢出。
语法:gets(字符串变量名)
为char a[10]输入元素,gets(a)。
gets()函数用来从标准输入设备(键盘)读取字符串直到换行符结束,但换行符会被丢弃,然后在末尾添加’\0’字符。

gets函数与cin.getline函数相似,同学们可以先记住用法,关于具体表现的作用可以去查阅资料。

代码演示

#include<iostream>
using namespace std;
#define N 50
void statistical(char a[])
{int letter = 0;int number = 0;int space = 0;int other = 0;for (int i = 0; a[i]!='\0'; i++){if ((a[i] >= 'a' && a[i] <= 'z') || (a[i] >= 'A' && a[i] <= 'Z'))letter++;else if (a[i] >= '0' && a[i] <= '9')number++;else if (a[i] == ' ')space++;elseother++;}cout << "字母的个数有:" << letter << endl;;cout << "数字的个数有:" << number << endl;cout << "空格的个数有:" << space<<endl;cout << "其他个数有:" << other << endl;}
int main()
{char a[N];cout << "Please enter a string of characters: " << endl;//gets_s(a);//vs不支持gets,需要在后面加上_scin.getline(a, N,'\n');statistical(a);return 0;
}

编写一函数,由实参传来一个字符串,统计此字符串中字母、数字、空格和其它字符的个数,在主函数中输入字符串以及输出上述的结果。相关推荐

  1. c语言:输入一个字符串,统计字母,数字,空格出现的个数,c - 统计字符串字母,空格,数字,其他字符的个数和行数....

    #include #include using namespace std; /* 题目:输入一行字符,分别统计出其中英文字母.空格.数字和其它字符的个数. */ void count() { //统 ...

  2. ACMNO.26 C语言-字符统计2 编写一函数,由实参传来一个字符串,统计此字符串中字母、数字、空格和其它字符的个数,在主函数中输入字符串以及输出上述结果。 只要结果,别输出什么提示信息。

    题目描述 编写一函数,由实参传来一个字符串,统计此字符串中字母.数字.空格和其它字符的个数, 在主函数中输入字符串以及输出上述结果. 只要结果,别输出什么提示信息. 输入 一行字符串 输出 统计数据, ...

  3. 编写一函数,由实参传来一个字符串,统计此字符串中字母、数字、空格和其它字符的个数,在主函数中输入字符串以及输出上述结果。 只要结果,别输出什么提示信息。

    题目描述 编写一函数,由实参传来一个字符串,统计此字符串中字母.数字.空格和其它字符的个数,在主函数中输入字符串以及输出上述结果. 只要结果,别输出什么提示信息. 输入 一行字符串 输出 统计数据,4 ...

  4. 【C】编写一个函数,由实参传来一个字符串,统计此字符串中字母、数字、空格和其他字符的个数,在主函数中输入字符串以及输出上述的结果。

    //编写一个函数,由实参传来一个字符串,统计此字符串中字母.数字.空格和其他字符的个数, //在主函数中输入字符串以及输出上述的结果. #include <stdio.h> #includ ...

  5. 【python作业】编写一个函数,由实参传来一个字符串,统计此字符串中字母和数字的个数,在主函数中输入字符串并输出上述的结果。

    编写一个函数,由实参传来一个字符串,统计此字符串中字母和数字的个数,在主函数中输入字符串并输出上述的结果. def fun(s):count1 = 0count2 = 0for i in s:if i ...

  6. 7.9编写一个函数,由实参传来一个字符串,统计此字符串中字母、数字、空格和其他字符的个数,在主函数中输入字符串以及输出上述的结果。

    //C程序设计第四版(谭浩强) //章节:第七章 用函数实现模块化程序设计 //题号:7.9 //题目:编写一个函数,由实参传来一个字符串,统计此字符串中字母.数字.空格和其他字符的个数, //在主函 ...

  7. 编写一个函数,由实参传来一个字符串,统计次字符串中字母、数字、空格和其他字符的个数,在主函数 中输入字符串以及输出上述的结果

    /*编写一个函数,由实参传来一个字符串,统计次字符串中字母.数字.空格和其他字符的个数,在主函数 中输入字符串以及输出上述的结果*/#include <stdio.h> #include ...

  8. C语言程序设计联系题 编写一个函数,由实参传来一个字符串,统计此字符串中的字母、数字、空格和其他字符的个数,在主函数中输入字符串以及输出上述结果。

    编写一个函数,由实参传来一个字符串,统计此字符串中的字母.数字.空格和其他字符的个数,在主函数中输入字符串以及输出上述结果. #include<stdio.h> #include<s ...

  9. 编写一个函数,由实参传来一个字符串, 统计此字符串中字母、数字、空格和其他字符的个数,并输出结果。

    编写一个函数,由实参传来一个字符串, 统计此字符串中字母.数字.空格和其他字符的个数,并输出结果. /* 编写一个函数,由实参传来一个字符串, 统计此字符串中字母.数字.空格和其他字符的个数,并输出结 ...

  10. (17)编写一个函数,由实参传来一个字符串,统计此字符串中字母、数字、空格和其他 字符的个数,在主函数中输入字符串以及输出上述结果。

    编写一个函数,由实参传来一个字符串,统计此字符串中字母.数字.空格和其他 字符的个数,在主函数中输入字符串以及输出上述结果. #include<stdio.h> #include<m ...

最新文章

  1. df命令、du命令、磁盘分区(fdisk命令)
  2. Redis源码分析(零)学习路径笔记
  3. 程序员的数学 pdf_作为一个程序员,分享我日常学习方式,自学渠道和方式
  4. kvm上添加万兆网卡_烂泥:为KVM虚拟机添加网卡
  5. windows 笔记本连接公共wifi不弹出登录页面的处理办法
  6. 【CCCC】L2-030 冰岛人 (25分) 模拟题,二叉树链式存储,从底部向上
  7. 【NOIp模拟赛】种花
  8. eclipse解压版_Eclipse配置JavaWeb开发环境
  9. 使用 background:url(#) 解决 IE67 bug
  10. 海思烧录工具Hitool使用方法
  11. Cortex-M3 (NXP LPC1788)之启动代码分析
  12. mysql和虚拟主机区别_虚拟主机mysql
  13. 在抖音追剧要付费了,微短剧能成字节新财富密码吗?
  14. 你一生要知道的74幅世界名画…
  15. 函数声明和函数表达式的区别
  16. 反正切函数摘录自变频器
  17. 零基础自学python计划_「经验分享」python零基础学习规划与建议!
  18. 拉依达准则的一个c++实现
  19. 任鸟飞游戏安全之WXW怀旧安全
  20. CISP学习——信息安全概念

热门文章

  1. 链路状态算法实现Java,JAVA基于蚁群算法路由选择可视化动态模拟(开题报告+任务书+毕业论文+外文翻译+源代码+可执行程序+答辩P...
  2. 软件系统设计-8-桥接模式、装饰器模式
  3. shell实现ftp命令
  4. 自动曝光在移动平台上的实现方案——以《使命召唤手游》为例
  5. Mac 安装Nacos踩坑脱坑教程
  6. pytest-xdist:并发执行用例设计(脱坑)
  7. Technical and Visual Analysis of Overwatch
  8. 线性表→顺序表→链表 逐个击破
  9. 如何写好SCI论文摘要和文章内容 - 易智编译EaseEditing
  10. Python字符串格式化,%和format函数