字符数组的应用_第1页
字符数组的应用_第2页
字符数组的应用_第3页
字符数组的应用_第4页
字符数组的应用_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

学生成绩查询程序设计字符数组的应用应知应会1、应完成的任务2、要掌握的知识3、能力培养按姓名查询学生成绩字符数组使用,和字符串处理1)字符数组的应用2)顺序查找算法知识回顾一维数组的定义与引用二维数组的定义与引用学生成绩统计分析程序设计intx[100];x[4]=45;intx[4][3];x[2][1]=45;程序代码任务的提出常见学生表如下,除了课程成绩信息外,还有姓名等文字信息,哪在C语言中是如何实现文字处理的呢?学号姓名数学英语计算机1张三8580822李四7370763王五908278还有,在工作中,把成绩输入计算机后,经常会遇到学生查询自己成绩的现象,在计算机中又是如何实现信息查询的呢?本次课的任务是:C语言中文字信息的处理方法数据查找算法字符数组用来存放字符数据的数组称为字符数组,字符数组中的一个数组元素只能存放一个字符,并且以ASCII码值形式存储在内存单元中。

1、字符数组的定义一维字符数组的定义格式

char数组名[常量表达式];

例如:charname[10];

它定义了长度为10的字符数组,数组元素为a[0]~a[9]。字符数组2、字符数组的初始化一维字符数组的初始化(1)利用字符常量初始化。例如:

charc[11]={'T','h','a','n','k','','y','o','u','!'};

(2)利用字符串常量初始化也可以用字符串常量对字符数组赋初值。例如:

charc[11]="Thankyou!";字符串的表示C语言中,用字符数组来存储字符串。一个字符串就是一个一维字符数组。例如:chars[20];由于C语言,对数组不进行下标越界检测,例如定义了chars[5];,把一个字符串存储在字符数组s中,对字符串处理时,计算机不知道字符串的结束位置,为了解决此问题,C语言规定一个字符串结束标志‘\0’,即ASCII码值为0的字符,在处理字符串时,如遇到字符‘\0’即认为字符串结束。字符串的表示说明:定义字符数组时,确定数组元素个数时要把字符串结束符考虑在其中。系统对字符串常量自动加入结束符‘\0’。二维字符数组相当于一维字符串数组。例如:chars[10][20];

相当于定义了一维字符串数组s[10],每个字符串中字符数不超过19个,通过s[2]可以引用字符串数组中第3个字符串。字符串的输入与输出使用scanf函数的“%s”格式符输入

scanf函数中的“%s”格式说明符用来字符串的输入,把从键盘输入的字符串传送到指定的字符数组中。例如:charname[11];

scanf(“%s”,name);

注意:在字符数组名前面没有&符号;在从键盘输入字符串时,遇到空格或回车作为字符串输入结束。字符串的输入与输出使用printf函数的“%s”格式符输出

printf函数中的“%s”格式说明符用来输入保存在字符数组中的字符串。

例如:charname[11]=“张三”;

printf(“%s\n”,name);字符串处理函数

为了便于程序员进行字符串处理,在C语言的库函数string.h中提供了常见的字符处理函数。1.strcat——字符串连接函数

1)函数原型

char*strcat(字符数组1,字符数组2);2)作用和函数返回值字符串连接,去掉字符数组1中的字符串结束符‘\0’,将字符数组2(包括结束符‘\0’)的字符串复制到字符数组1的字符串后面,拼接后的字符串存放在字符数组1中。函数的返回值为字符数组1的首地址。

例如:chars1[20]=“Thank”,s2[10]=“you.”;strcat(s1,s2);

结果:s1字符串中的内容是“Thankyou.”。字符串处理函数2.strcpy——字符串拷贝函数

1)函数原型

char*strcpy(字符数组1,字符数组2,[整数n]);2)作用和函数返回值将字符串2的前n个字符拷贝到字符数组1中,拷贝时从字符数组1首元素开始,拷贝结束后,系统自动在字符数组1中加入结束符‘\0’。省略[整数n]时将字符串2中的所有字符拷贝到字符数组1中。函数返回值为指向字符数组1的指针。

例如:chars1[20]=“Thank”,s2[10]=“you.”;strcpy(s1,s2);

结果:s1字符串中的内容是“you.”。

字符串处理函数

3.strcmp——字符串比较函数

1)函数原型

int

strcmp(字符数组1,字符数组2);

2)作用和函数返回值比较字符串的大小。对两个字符串自左至右逐个相比,直到出现不同的字符或遇到‘\0’为止。当字符数组1与字符数组2相等,函数返回值为零;如果字符数组1中的串大于字符数组2中的串,函数返回值为大于零的值;否则,返回小于零的值。

例如:intn;chars1[20]=“Thank”,s2[10]=“Think”;n=strcmp(s1,s2);

结果:变量n的值是:

-8字符串处理函数4.strlen——字符串字符个数函数

1)函数原型

unsignedint

strlen(字符数组);2)作用和函数返回值测试字符数组中字符串的长度。函数返回值为字符串的实际长度,不包括'\0'在内。

例如:intn;chars1[20]=“Thankyou.”;n=strlen(s1);

结果:变量n的值是:10

学生成绩查询——按姓名查询

我们掌握了C语言中对字符串的处理方法,下面具体分析一下按姓名查询工作过程。数据的存储在前面学生成绩管理程序中,课程成绩分别存储在对应的数组中(math[10],En[10],PC[10]),为了存放学生的姓名,需要定义二维字符数组

,定义一个一维字符数组find[7]存放要查询的姓名。name[10][7]学生成绩信息变量定义如下:

intmath[10],En[10],PC[10];charname[10][7],find[7];学生成绩查询——按姓名查询工作过程分析

比较name[i]=find?

如果相等,输出成绩数据否则i=i+1,指向下一个数据,继续比较

由于学生成绩数据是按输入顺序存储在数组中的,没有特定的规律,在这种情况下查找数据时:

一般采用顺序查询方法,即从第一个数据开始逐个与要查找的数据比较,如不相等,比较下一个数据,直到相等或最后一个数据为止。学生成绩查询——按姓名查询算法描述38897586906688806055n[i]i=0;find=88;find=n[i]?88!=38i=i+1;i=1intn[10];find=n[i]?88!=89i=i+1;i=2学生成绩查询——按姓名查询算法描述38897586906688806055n[i]i=5;find=88;find=n[i]?88!=66i=i+1;i=6intn[10];find=n[i]?88==88找到数据,查询结束。学生成绩查询——按姓名查询流程图开始程序初始化输入成绩数据输入查询的姓名i<n?name[i]=find?输出i++否是是否学生成绩查询——按姓名查询流程图i>=n?没有此生结束是否学生成绩查询——按姓名查询编写程序代码

请同学们在上一次“学生成绩统计分析”程序代码基础上,根据程序流程图,编写“按姓名查询学生成绩”程序代码。学生成绩查询——按姓名查询流程图开始程序初始化输入成绩数据输入查询的姓名i<n?name[i]=find

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论