版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
PAGE课题任务5.4显示某车企的新能源汽车品牌(字符数组)课型讲练授课班级授课时数2教学目标1.掌握字符数组的定义、初始化及字符数组元素的引用方式.2.提高学生的逻辑思维能了教学重点掌握字符数组的定义、初始化及字符数组元素的引用方式.教学难点字符数组的引用学情分析学生前面已经学过了数组,字符数组只不过定义的类型不同罢了。学习这个知识点大部分应该可以接受。教学效果教后记任务5.4显示某车企的新能源汽车品牌(字符数组)5.4.1任务目标从键盘输入江苏省的地级市,输出车牌字符。(
A南京市B无锡市C徐州市D常州市
E苏州市F南通市)任务目标运行截图如图5-4-1所示图5-4-1任务目标运行截图5.4.2知识储备在实际情况中,我们需要用到汉字或者多个字符的情况,这时我们就需要引入字符数组。1.一维字符数组与字符串①一维字符数组数组元素的类型是字符类型的一维数组称为一维字符数组。定义一个一维数组时,如果数据类型为char,这就是一个一维字符数组。例如:charch[10];定义了一个名为ch的一维字符数组,长度为10,系统为该数组开辟了10个连续的存储单元,在这里,一个元素的存储空间正好为一个字节,所以系统开辟了10个连续的字节单元,ch为该连续存储单元的首地址。可以引用数组的元素,如ch[0]=’a’;ch[9]=’\n’;等。②字符串字符串就是一串字符的组合,但它的最后一个字符必定是’\0’。’\0’是一个转义字符,它是字符型的“空值”,它的ASCII代码值为0。’\0’是字符串的结束标志。在C语言中,字符串借助于一维字符数组来存放。在存储时,结束标志’\0’占用存储空间,但不计入字符串的实际长度。C语言中,字符串是用双引号””作为定界符的。在表示字符串时,不需要人为在其末尾加入’\0’。例如,字符串”COMPUTER”不必写成”COMPUTER\0”,C的编译系统在处理时会自动在末尾添加’\0’。一个字符串在存储时,会占用内存中一串连续的存储空间,它有一个起始地址。这段连续的存储空间实际中就是一个一维的字符数组,只是这个数组没有名字。所以,在C语言中,字符串被隐含处理成一个以’\0’结尾的无名的一维字符数组,该字符串就表示内存中一串连续存储空间的首地址。③一维字符数组与字符串的区别一个一维字符数组中的每一个元素都可以存放一个字符,并且它不限定最后一个字符应该是什么。而在C语言中,有关字符串的大量操作都与串结束标志’\0’有关,因此,字符串是最后一个字符必有’\0’的一维字符数组。当一个一维字符数组的长度大于一个字符串的有效长度再加1时,该一维字符数组可以用于存放该字符串。此时,一维字符数组可以被“看作”是字符串变量。但它又不同于一般的变量,不能把一个字符串整体赋给一个数组。2.将一个字符串赋给一个一维字符数组①通过初始化实现逐一元素地赋初值,这种方法同给一般数组赋初值的方式相同。例:charstr[10]={‘s’,’t’,’u’,’d’,’e’,’n’,’t’,’\0’};②赋初值时,直接赋字符串常量例如:charch[8]={“student”};或者省略大括号:charch[8]=“student”;③在执行过程中给一维字符数组赋字符串前面已经讲过,不能给一个数组整体赋值,对一维字符数组同样如此。只能给数组元素逐个赋字符值,最后人为加入串结束标志。例如:charstr[8];str[0]=’s’;str[1]=’t’;str[2]=’u’;str[3]=’d’;str[4]=’e’;str[5]=’n’;str[6]=’7’;str[7]=’\0’;3.字符串的输入和输出①用”%c”格式字符逐个输入和输出例如:通过键盘输入一字符串(以回车结束,假设长度不超过50),存放于数组ch中。#include"stdio.h"#defineLEN51 voidmain(){ charch[LEN]; inti=0; scanf("%c",&ch[i]);while((ch[i]!='\n')) { i++; scanf("%c",&ch[i]); } ch[i]='\0'; i=0; while(ch[i]!='\0'){ printf("%c",ch[i]); i++; }}②用”%s”格式整体输入和输出例如:charch[20];scanf(“%s”,ch);说明:输入项是一数组的数组名,也就是数组的首地址。功能:从键盘输入一串字符,读入到以ch开始的存储单元中,以空格或回车符结束读入。printf(“%s”,ch);说明:输出项是一数组的数组名,也就是数组的首地址。功能:输出以ch为起始地址的存储单元的内容到终端,遇到’\0’时结束输出。③用字符串输入(gets)和输出(puts)函数实现字符串的输入和输出字符串输入(gets)和输出(puts)函数的定义说明在头文件”stdio.h”中,在程序中若调用这两个函数,必须在程序的开头加入文件包含命令:#include“stdio.h”gets函数实现输入调用形式如下:gets(str)说明:str为一确定的地址值,它可以是一个字符数组的数组名,也可以是今后要学到的已赋值的指针型变量。函数功能:调用该函数时,用户从键盘输入一个字符串,以换行符(Enter键)作为输入结束标志;然后将接收到的字符(包括换行符)依次赋给以str为起始地址的存储单元中,系统自动用’\0’来代替最后的换行符。注意:gets函数调用中,空格不作为分隔符,它可以出现在字符串中,这是gets与scanf函数的主要区别。例如:charch[20];gets(ch);若输入:IAM(回车),则在ch中将存入字符串”IAM”,而不是字符串”I”。puts函数实现输出调用形式如下:puts(str)说明:同gets(str)一样,str为一确定的地址值。函数功能:调用该函数时,系统从str这一地址开始,依次输出存储单元的内容,直到遇到第一个’\0’,系统自动将’\0’转换成一个换行符输出,并结束输出。注意:puts函数输出结束后换行,而printf函数输出结束后并不自动换行。4.常用字符串和字符函数C语言有关字符的函数分为字符串函数和字符函数两类,分别包含于头文件“string.h”及头文件“ctype.h”中。常用的字符串函数如表5-4-1所示,常用的字符函数如表5-4-2所示表5-SEQ表5-\*ARABIC4-1常用字符串函数函数名意义返回值gets(str)键盘输入一串字符赋给字符数组strstrputs(str)输出字符数组str内容到显示器strstrlen(str)
求串长整数strcat(str1,str2)
串连接,即串2连接于串1后str1strncat(str1,str2,n)串连接,仅串2前n字符连于串1后str1strcpy(str1,str2)
串复制,串2复制给串1str1strncpy(str1,str2,n)串复制,仅串2前n字符复制给串1str1strcmp(str1,str2)
串比较,比较串2、串1大小整数strncmp(str1,str2,n)串比较,仅比较串2、串1前n字符大小整数strset(str,ch)置换,用ch置换str串各字符strstrnset(str,ch,n)置换,用ch置换str串前n个字符strstrlwr(str)大转小,串中大写字母变为小写字母strstrupr(str)小转大,串中小写字母变为大写字母strmemset(str,ch,n)
置换,将str串前n个字符置换成chstrstrrev(str)倒置,将str串字符颠倒顺序strstrchr(str,ch)ch在str串中首次出现的位置地址,无返回空指针strstr(str1,str2)str2子串在str1串中首次出现的位置地址,无返回空指针表5-4-2字符函数函数名称意义返回isalnum(ch)ch是否是字母或数字是返回1,否返回0isalpha(ch)ch是否是字母isdigit(ch)ch是否是数字islower(ch)ch是否是小写字母isupper(ch)ch是否是大写字母isspace(ch)ch是否是空格isprint(ch)ch是否是可打印字符ispunct(ch)ch是否是标点或空格tolower(ch)将字母ch转小写字母相应小写字母toupper(ch)将字母ch转大写字母相应大写字母5.4.3典型实例典型案例1:从键盘输入某辆车的车架号,并输出车架号。程序代码#include"stdio.h"voidmain(){charvin[18];printf("请输入车架号:");gets(vin);printf("车架号为");puts(vin);}典型案例1运行截图如图5-4-2所示图5-4-2典型案例1运行截图截图典型案例2:从键盘输入某辆车的车架号,并求长度,判断是否满足车架号的长度。典型案例2运行截图如图5-4-3所示图5-4-3典型案例2运行截图典型案例2方法一流程图如图5-4-4所示图5-4-4典型案例2方法一流程图方法一程序代码#include"stdio.h"voidmain(){charvin[18],i=0,len=0;printf("请输入车架号:");scanf("%s",vin);while(vin[i]!='\0'){len++;i++;}if(len==17)printf("满足车架号的长度!");elseprintf("车架号长度有误!");}方法二运用字符串函数程序代码#include"stdio.h"#include"string.h"voidmain(){charvin[18],i=0,len;printf("请输入车架号:");gets(vin);len=strlen(vin);if(len==17)printf("满足车架号的长度!");elseprintf("车架号长度有误!");}典型案例3:从键盘输入某辆车的车牌,再次输入车牌,判断第二次和第一次输入的车牌是否相等,相等显示两次车牌输入一致,不相等显示两次车牌输入不一致。典型案例3运行截图如图5-4-5所示。图5-4-5典型案例3运行截图程序代码#include"stdio.h"#include"string.h"voidmain(){charvin[20],vin2[20];inti=0,flag=0; printf("请输入车架号:");gets(vin);printf("请再次输入车架号:");gets(vin2);if(strcmp(vin,vin2)==0)printf("两次输入车架号一致!");elseprintf("两次输入车架号不一致!");}5.4.4任务分析与实践任务目标流程图如图5-4-6所示图5-4-6任务目标流程图程序代码#include"stdio.h"#include"string.h"voidmain(){charlicense_plate[8];printf("请输入地级市");gets(license_plate);if(strcmp(license_plate,"南京市")==0)printf("A南京市");elseif(strcmp(license_plate,"无锡市")==0)printf("B无锡市");elseif(strcmp(license_plate,"苏州市")==0)printf("E苏州市");elseif(strcmp(license_plate
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年钦州市钦北区工会人员招聘考试模拟试题及答案详解
- 2025年贵阳市花溪区医疗系统事业编人员招聘考试试题及答案详解
- 2026年河南省南阳市政务服务中心(窗口人员)招聘笔试备考试题及答案详解
- 2026年承德市双桥区政务服务中心(窗口人员)招聘笔试参考题库及答案详解
- 2025年丽江地区古城区政务服务中心(窗口人员)招聘笔试试题及答案详解
- 2026年广州市东山区工会人员招聘笔试模拟试题及答案详解
- 2026年克拉玛依市克拉玛依区政务服务中心(窗口人员)招聘考试参考试题及答案详解
- 宜宾市南溪区教师培训中心2026年面向区内外学校在编在职教师和教研员公开考调教研员(5人)笔试备考试题及答案详解
- 2025年潍坊市奎文区政务服务中心(窗口人员)招聘考试试题及答案详解
- 2026年内蒙古自治区乌兰察布市医疗系统事业编人员招聘笔试备考题库及答案详解
- 2026年郧西县事业单位公开招聘78名工作人员笔试备考题库及答案详解
- 2026年福建从村党组织书记、村委会主任中考试录用乡镇机关公务员练习试题及答案
- 2026秋新版小学湘科版科学五年级上册教学设计(附目录)适用于新课标
- 2026年网格员矛盾纠纷排查化解理论知识试题及答案
- 2026年飞控算法工程(无人机控制技术)试题及答案
- 山东省菏泽市2025-2026学年高一下学期期末考试英语试卷
- JJF(石化)078-2023激光甲烷遥测仪校准规范
- 道桥预制箱梁架设专项施工方案
- 变电站一键顺控改造技术规范(试行)
- 2020年度南京英奥GPS使用手册
- 2024年陕西省安康兴达路桥集团有限公司招聘笔试参考题库附带答案详解
评论
0/150
提交评论