C语言程序设计第8章-8.5.pptx

C 语 言 程 序 设 计 实 例 教 程8.5 指针与字符串,C 语 言 程 序 设 计 实 例 教 程,第8章 指针,字符串在内存中的存储形式 如何使指针指向一个字符串 字符串的输入和输出方法 字符串数组的定义与引用方法 字符串处理函数的使用,本节要点实例42 字符串的存储形式统计各类字符的个数,【实例任务】 输入一连续的字符串,然后统计数字、小写字母、大写字母和其他字符的个数。程序的运行结果如图8-24所示。,图8-24 程序运行结果实例42 字符串的存储形式统计各类字符的个数,【程序代码】 include “stdio.h“ include “string.h“ main char str100; int i,n0,wx0,wd0,c0; /*n、wx、wd、c分别用来存储数字、小写字母、大写字母和字符的个数*/ printf“请输入无非空格和制表符的连续字符串 “; scanf“s“,str; /*以下循环用于统计各类字符的个数*/ fori0;i100;i ifstri0 break;实例42 字符串的存储形式统计各类字符的个数,【程序代码】 ifisdigitstri /*isdigit是判断是否为数字的函数*/ nn1; else ifislowerstri /*islower是判断是否为小写字母的函数*/ wx; else ifisupperstri /*isupper是判断是否为大写字母的函数*/ wd; else c; 实例42 字符串的存储形式统计各类字符的个数,【程序代码】 /*以下语句用于输出各项的值*/ printf“输入的第一个字符串为sn“,str; printf“输入的数字的个数为dn“,n; printf“输入的小写字母的个数为dn“,wx; printf“输入的大写字母的个数为dn“,wd; printf“输入的其他字符的个数为dn“,c; getch; 实例42 字符串的存储形式统计各类字符的个数,【相关知识】 1. 字符串在内存中的存储形式 字符串是以双引号引起来的一个或多个字符,字符是以单引号引起来的单个字符。字符串在内存中存储的时候,结尾自动添加一个字符0,它不记入字符串的长度,但会占用一个字符的存储空间。有了这个字符0作为字符串结尾,以它为标志可以整体引用字符串。 字符串在内存中是以字符型一维数组的形式存储,是将各个字母按序存放到一串连续的单个字节的存储空间中。但字符数组和字符串是有区别的。字符数组是指各个数组元素中存入单个字符,不管结尾是什么字符。而字符串以一维数组的形式存储时,其最后一个字符必须是0,将字符串各个字符依序存储到一维数组中。实例42 字符串的存储形式统计各类字符的个数,【相关知识】 2字符串常量的值是地址值 以双引号引起来的一个字符串,其是一种常量形式,其值是这个字符串在内存中存储的首地址值。其对比关系如图8-25所示。,图8-25中,上面一行是一维字符型数组,因为最后一个字符不是0,所以不能把它当做字符串来使用。下面一行属于字符串的一维数组形式存储,各个单个字符都占有1个字符的存储空间,可以整体当做一个字符串来引用。实例42 字符串的存储形式统计各类字符的个数,【相关知识】 3定义一维数组存储字符串 对于一维字符型数组存储字符串,其赋值方式有多种情况。但有一点需要强调的是,对于一个已经定义好的一维数组,其数组名是恒定的值,不可将字符串直接对数组名赋值。 char s10H,e,l,l,o,,0 /*以字符串的形式为字符型一维数组赋值*/ char s10“Hello“; /*可以省去这对符号*/ char s “Hello“; /*省去下标的情况下,系统会自动按字符个数存储字符串*/ char s10; s0 He0 s“Hello“; /*通过赋值的方式让已经定义的指针变量指向一个字符串*/ char *s“Hello“; /*通过赋初值的方式让指针变量指向一个字符串*/实例43 二维数组存储多个字符串图书查询系统,【实例任务】 一个二维数组已经存放了五本图书,每本书的编写存另外一维数组中。现要求输入图书的编号,能显示出对应的图书信息,程序的运行结果如图8-26所示。,图8-26 程序运行结果实例43 二维数组存储多个字符串图书查询系统,【程序代码】 include “stdio.h“ include “string.h“ main char s525“计算机网络基础“, “网络安全技术“, “C语言程序设计实例教程“, “软件工程“, “数据结构“; int num51001,1002,1003,1004,1005; /*将五本图书的编号存放在整型一维数组中*/ char *author5“董佳佳“,“董萍“,“李红“,“许宁“,“王强“; /*通过定义指针数组来指向各个字符串*/实例43 二维数组存储多个字符串图书查询系统,int i,j; printf“请输入编号“; scanf“d“, 实例43 二维数组存储多个字符串图书查询系统,【相关知识】 1通过字符型二维数组存放多个字符串 二维数组由一维数组构成,这每个一维数组元素又作为数组名,每个元素又是一个一维数组。由此,可以通过二维数组分行来存放多个字符串。实例中,就是通过字符型二维数组s来存放多本书的书名。 定义字符型二维数组的同时,可以赋初值,系统根据字符串的个数,自动按行在二维数组的空间中依次存放各个字符串。实例中,s1指向字符串“计算机网络基础”,s2指向字符串“网络安全技术”依次类推。实例43 二维数组存储多个字符串图书查询系统,【相关知识】 2通过字符型指针数组来存放多个字符串 字符型指针数组的每个数组元素都是指针。字符串常量的值又是该字符串存储空间的首地址值,故可以将各个字符串的首地址赋值给已经定义的字符型指针数组,达到使用字符型指针数组来存放多个字符串的目的。实例中,通过指针数组author来存放五本图书的作者,实际实五个指针数组元素记录了五个字符串在内存中的起始地址。它们的关系如图8-27所示。实例44 字符串的常用函数的使用输出你的姓名,【实例任务】 输入大小写混合的名和姓的汉语拼音,通过调用相关的字符串函数,将姓名用完全小写字母的形式输出,程序的运行结果如图8-28所示。,图8-28 程序运行结果实例44 字符串的常用函数的使用输出你的姓名,【程序代码】 include “stdio.h“ include “string.h“ main char s215,temp15,*name; int i,n1,n2; printf“将名和姓分别以两个字符串的形式大小写混合输入“; getss0; /*调用gets函数输入字符串*/ scanf“s“,s1; istrcmps0,s1;/*strcmp是字符串比较函数*/ printf“输出名和姓相互比较的结果为dn“,i; n1strlens0; n2strlens1;/*strlen是求字符串长度的函数*/实例44 字符串的常用函数的使用输出你的姓名,【程序代码】 ifn1n2 printf“n名的字符数多于姓的字符数,多d个字符n“,n1-n2; else printf“n姓的字符数多于名的字符数,多d个字符n“,n2-n1; strlwrs0; strlwrs1; /*strlwr和strupr函数是将字符串中大小写字母转换函数*/ printf“n请输出字母转换后的名s,姓为sn“,s0,s1;实例44 字符串的常用函数的使用输出你的姓名,【程序代码】 /*下面调用strcpy函数交换一下名和姓的位置*/ strcpytemp,s0; strcpys0,s1; strcpys1,temp; printf“n请输出交换位置后的姓s,名为sn“,s0,s1; /*下面调用strcat函数实现姓和名的连接并输出*/ namestrcats0,s1; printf“n输出我的小写的姓名s“,name; getch; 实例44 字符串的常用函数的使用输出你的姓名,【相关知识】 1.“string.h”头文件 C语言的库函数按类型都保存在不同的头文件中,在前面学习标准输入输出函数,它们都保存在“stdio.h”头文件中。对于字符型的函数,都保存在“string.h”函数中。 2. gets函数和scanf函数的异同 当从键盘上输入一个字符串时,gets函数对空格和制表符被认为是有效字符,其字符串输入的结束标志是回车,而scanf函数对输入的空格、制表符、回车均当做字符串结束标志来处理。实例44 字符串的常用函数的使用输出你的姓名,【相关知识】 3.strcmps1,s2函数 此函数用于比较s1和s2指向的两个字符串的大小。如果s1指向的字符串大于s2指向的字符串,函数返回1;如果两串相等,函数返回0;如果s1所指向的字符串小于s2指向的字符串,函数返回-1。 两个字符串比较的过程是先从首字符比较,如果二者不同,则首字符的大小决定了两个串的大小,如果首字符相同,则从相对应的第二个字符进行比较,依次类推,直到找到对应的字符不同时,这对字符决定两个串的大小。如字符串“ abcdefabdcef“、“abc123defabcdef“等。 4.strlens函数 此函数用于求s所指向的字符串的长度,直到遇到字符串中的第一个0为止,但不包含结尾的字符0,并将字符串的长度值作为函数值返回。实例中,strlens0,就是求输入的名的字符个数。实例44 字符串的常用函数的使用输出你的姓名,【相关知识】 5strlwrs和struprs函数 strlwrs函数是将s所指向的字符串中的大写字母均转换为小写字母,strupr函数的作用是将s所指向的字符串中的小写字母均转换为大写字母。 6strcpys1,s2函数 此函数的作用是将s2所指向的字符串复制到s1所指向的存储空间中,函数返回的是s1的值。使用此函数时,要保证s1的指向中有足够的空间来容纳s2所指向的字符串。 如果将函数添加一个参数为strcpys1,s2,n,则是将s2所指向的字符串的前n个字符复制到s1所指向的空间中。 7strcats1,s2函数 此函数的作用是将s2所指向的字符串连接到s1所指向的字符串的结尾,然后生成一个新的字符串存放在s1所指向的空间中。使用此函数时,要保证s1的指向有足够的空间来存入连接后的字符串。【课堂精练】,1编写程序输入若干字符串,找出首字母为M或m的字符串进行输出。程序的运行结果如图8-29所示。,图8-29 程序的运行结果【课堂精练】,根据程序的运行结果,请将程序补充完整并调试。 include “stdio.h“ include “string.h“ void findchar a100,int n; main char s100100,*p; int i,n; ngetstrs;/*二维数组名作为实参,得到输入的字符串的个数*/ finds,n;/*调用自定义函数,并输出M或m开头的字符串*/ getch; int getstrchar a100 int n0; 【课堂精练】,whilestrcmpan, /*当输入为空值时循环结束*/ n; getsan; return n; void findchar a100,int n int i; fori0;in;i _ putsai; 【课堂精练】,2输入一个大小写混合的字符串,请将字符串中大写字母转换成小写,将字符串中小写字母转换成大写,以生成一个新的字符串。如果有其他字符,请过滤掉。程序运行结果如图8-30所示。,图8-30 程序运行结果【课堂精练】,根据程序的运行结果,请将下面程序补充完整。 include “stdio.h“ include “string.h“ main char s1100,s2100; int i,n0,m; printf“请输入一个字符串“; getss1; mstrlens1; /*F求得字符串的长度*/ fori0;im;i ifislowers1i n;【课堂精练】,else ifisuppers1i s2ntolowers1i; n; else /*过滤掉非字母字符*/ printf“从键盘上输入字符串为sn“,s1; printf“字母大小写转换后且滤掉非字母字符的字符串为s“,s2; getch; 谢谢,

c语言程序设计8.5,C语言程序设计第8章-8.5.pptx相关推荐

  1. 201803考试批次2C 程序设计语言,201803考试批次2可视化程序设计(VB)D卷

    201803考试批次2可视化程序设计(VB)D卷 2018-12-15 903 201803考试批次2可视化程序设计(VB)D卷 可视化程序设计(VB) 一 .单项选择题 (共 10 题.0 / 20 ...

  2. c语言程序设计 赵宏,C语言程序设计(模块化程序设计I )(6页)-原创力文档...

    第4章 模块化程序设计I (导学) C语言程序设计课程组 赵宏 示例:从键盘输入一个整数,判断该整数是否为素数. #include #include void main( ) { int x,i; s ...

  3. 最小生成树实验报告c语言,算法与程序设计实验最小生成树(c语言).ppt

    算法与程序设计实验最小生成树(c语言).ppt 最小生成树 问题分析: 由于在每两个城市之间都可以建立一条通信线路,n个城市之间最多可能设置n(n-1)/2条线路,而每条线路都要付出一定的经济代价,因 ...

  4. C 语言编程 — 使用 assert 断言进行程序设计

    目录 文章目录 目录 断言 利用断言来提高代码的可测试性 自定义断言来满足需求 尽量在函数中使用断言来检查参数的合法性 避免在断言表达式中使用改变环境的语句 避免使用断言去检查程序错误 在防错性程序设 ...

  5. python语言程序设计嵩天-Python语言程序设计基础(第2版)嵩天课后答案

    嵩天.礼欣.黄天羽Python语言程序设计基础(第2版)习题答案本书提出了以理解和运用计算生态为目标的Python语言教学思想,在系统讲解Python语言语法的同时介绍了从数据理解到图像处理的14个P ...

  6. c 语言与试验系统,C/C++程序设计学习与实验系统

    原名<Turbo C/C++ for Windows 集成实验与学习环境>,支持32位与64位的WI[详细介绍] 原名<Turbo C/C++ for Windows 集成实验与学习 ...

  7. c 语言程序设计阚道宏,C语言用宏实现静态多态

    综述 多态性是面向对象程序设计的一个重要特征. 在C++语言中,多态指的是:具有不同功能的函数可以用同一个函数名,可以用一个函数名调用不同内容的函数. C++的多态分为两种: 1. 静态多态性(编译时 ...

  8. c语言程序设计复习提纲,C语言程序设计复习提纲

    C语言程序设计复习提纲 C语言程序设计复习题: 1.理解以下术语的含义:数组.函数.地址 指针 指针变量 直接访问 间接访问.结构体 2.用起泡法对10个数由小到大排序(P134例题) 3.用递归方法 ...

  9. c语言作业指导1,C语言程序设计实验与习题指导

    目录 部分C语言程序设计上机实验 实验1C语言概述 实验2C语言基本数据类型 实验3C语言表达式 实验4顺序结构程序设计 实验5选择结构程序设计 实验6基本循环结构程序设计 实验7嵌套循环结构程序设计 ...

  10. C语言求积标识符,《C语言程序设计》模拟试卷四.doc

    <C语言程序设计>模拟试卷四 一.?????????? 单项选择题(每题2分,共30分) 1.下列对C语言特点的描述中,错误的是????? . A)C语言不是结构化程序设计语言?? B)C ...

最新文章

  1. Visual与IMU多传感器融合的定位方案
  2. pocoserver无限重启_poco相机老版本
  3. 编程语言java-并发(锁)
  4. 电脑php在哪里,电脑上地址栏在哪?
  5. 使用 GNU Libtool 创建库
  6. vue/cli 3.0 与 2.0脚手架怎样mock数据
  7. mysql并发插入死锁_高并发下insert死锁 · Issue #ITUNR · baomidou/mybatis-plus - Gitee.com...
  8. Android开发技术周报 Issue#52
  9. Oracle之数据库设计概述
  10. RHE5服务器配置——Samba服务器
  11. java读取excel数据的方法是_java怎么读取excel文件里的数据
  12. 【zabbix个性化监控之一】TCP连接数
  13. Wolf QOS 教程
  14. 在Zephyr上使用malloc/new
  15. android 深色主题背景适配原理剖析
  16. 瞬时电压示波器matlab,示波器测量瞬时电压的方法与步骤
  17. MySQL数据库介绍
  18. Matlab 数值计算迭代求根方法总结
  19. 推荐一位字节大佬的刷题经验!
  20. QlikView介绍

热门文章

  1. 第五次C语言上机实验报告
  2. instsrv.exe srvany.exe用法
  3. python编程初学者的良言警句_编程名言
  4. 小程序项目实战总结--如何获取手机屏幕宽高?
  5. mt6735[AT Command] Modem 支持哪些AT Command?参数含义在哪查看?
  6. python3连接oracle教程_python3 连接oracle
  7. 第二篇:可靠连接,TCP协议全解析
  8. PB 生成条形码(Code39+Code128+EAN128源码+规则)
  9. 三子棋详细讲解【C语言】
  10. 【武侠类网游预研】逆水寒