内容正文:
课程单元教案
本课编号
15
本课课时
2学时
内容提要
项目5 数组应用
任务4 字符数组(字符串处理函数)
教学目的
1、掌握字符串处理函数的含义和使用方法;
2、熟练使用字符串处理函数解决问题。
知识能力
结构
掌握字符串处理函数的用法。
教学重点
难点
重点:字符串处理函数puts()、gets()、strlen()的用法;
难点:字符串处理函数strcat()、strcpy()、strcmp()的用法。
教学手段
方法
教学方法:项目任务驱动教学法、提问式、启发式
教学手段:课堂讲授法、操作演示法、多媒体教学
思考题与
习题
1、什么是字符串处理函数。
2、登录验证:输入用户名和密码,如果和原用户名和密码相同则显示“登录成功!”,否则显示“用户名或密码错误!”。
教学内容进程设计
项目导入:综合实践5学生多门成绩存储与处理设计
项目描述:利用数组来存储和处理学生的多门课成绩。
问题导入:对字符数组或字符串有哪些常用的操作呢?
根据课前预习及搜集的资料,对字符数组的概念有一个初步的了解,以方便进行下面知识内容的学习。
任务4 字符数组
4.3 字符串处理函数
1.strcat(字符数组1,字符数组2)
功能:把字符数组2中的字符串连接到字符数组1中的字符串后面,并删去字符串1后的串标志‘\0’。本函数返回值是字符数组1的首地址。
例1:连接字符串。
main()
{char a[20],b[20];
printf("输入第一个字符串:");
gets(a);
printf("输入第二个字符串:");
gets(b);
strcat(a,b);
printf("字符串分别为:
");
puts(a); puts(b);}
注意:字符数组1应定义足够的长度。
2. strcpy(字符数组1,字符数组2)
功能:把字符数组2中的字符串拷贝到字符数组1中,串结束标志’\0’也一同拷贝。其中,字符数组2也可以是一个字符串常量。
例2:复制字符串。
main()
{char a[20],b[20];
printf("输入第一个字符串:");
gets(a);
printf("输入第二个字符串:");
gets(b);
strcpy(a,b);
printf("字符串分别为:
");
puts(a); puts(b);}
注意:字符数组1应定义足够的长度。
3. strcmp(字符数组1,字符数组2)
功能:按照ASCII码顺序比较两个数组中的字符串,并由函数返回值返回比较结果。
字符串1=字符串2,返回值=0
字符串2>字符串2,返回值>0
字符串1<字符串2,返回值<0
本函数也可用于比较两个字符串常量,或比较数组和字符串常量。
例3:比较字符串。
main()
{char a[10],b[10]=“abcd1234";
int i;
printf("请输入一个字符串:");
gets(a);
i=strcmp(a,b);
if(i==0)
printf("两个字符串相等
");
else
printf("两个字符串不相等
");}
4. strlen(字符数组)
功能:测字符串的实际长度(不含字符串结束标志‘\0’)并作为函数返回值。
例4:求字符串长度。
main()
{char a[20];
int i;
printf("请输入一个字符串:");
gets(a);
i=strlen(a);
printf(“字符数组a长度为:%d
",i);}
运行结果:
请输入一个字符串: program ↙
字符数组a长度为:7
4.4字符数组应该
例:编写程序,将两个字符串连接起来。(不使用strcat函数)
算法分析:
1. 定位:第一个字符串的‘\0’的位置;
2. 从‘\0’开始把第二个字符串的字符依次放入第一个字符串的后端,直至第二个字符串的‘\0’;
3. 检验第一个字符串的末端是否有结束符‘\0’,若没有,修正所得的字符串,在它的末端加上‘\0’。
#include "stdio.h"
main( ){
char s1[80],s2[80];
int i=0,j=0;
printf("请分别输入两个字符串:");
gets(s1);
gets(s2);
while(s1[i]!='\0')
i++; //定位s1的‘\0’
while(s2[j]!='\0') {
s1[i]=s2[j];
i++;
j++; //把s2中的字符依次复制到s1的末端
}
s1[i]='\0'; //修正s1结束符号
printf("连接后的字符串为:");
puts(s1);
}
例:判断一个字符串是否是回文,如:abcdedcba,是就输出“Yes”,不是就输出“No”。
参考代码:
#include "stdio.h"
#include "string.h"
main( )
{char str[50];
int len,i;
gets(str);
len=strlen(str);
for(i=0;i<=len/2;i++)
{if(str[i]!=str[len-i-1])
{printf("不是回文!");
break;} }
if(i>len/2)
printf("是回文!");}
随堂实训练习:
1、编写程序,把输入的一个字符串复制到一个字符数组中并输出(不用strcpy())。
2、登录验证:输入用户名和密码,如果和原用户名和密码相同则显示“登录成功!”,否则显示“用户名或密码错误!”。
教学小结
(1)掌握几个常用字符串处理函数如何使用;
(2)能将字符数组及字符串函数用于实际问题,并完成相关题目。
学科网(北京)股份有限公司
$$