资源简介 教案首页 课程:C语言程序设计 授课教师: 学年 第 学期周次 第 周 时间 年 月 日 专业班级:授课 章节 单元8:指针的使用(二) 授课 方式 理论课□ 实验课□ 实训课□ 教学做一体化课程√ 教学 时数 2学时教学 目的 理解指针与字符的关系、指针与函数的关系,会熟练使用指针解决问题教 学 组 织 教学内容 教学过程设计及时间分配1.字符指针与字符串 指针与函数 指针做函数的参数 案例与实践操作 复习 讲授 互动 10分 2. 字符指针与字符串 讲授 15分 3. 指针与函数 演示、讲授1 5分 4. 指针做函数的参数 演示、操作 25分 5. 随堂练习 案例 20分 6.小结、作业及实验安排 讲授 5分教学 重点 重点:指针与函数 难点:指针做函数的参数教学 难点教学 手段 理论讲授、演示、对比讲解、案例分析双语 教学 pointer —函数 address — 地址作业及 思考题 作业:单元总结与单元练习 知识拓展:动态内存分配参考 资料 谭浩强主编的《C语言程序设计》(清华大学出版社)。 丹尼斯·里奇《C语言程序设计》(第二版)。 3.NCRE考试用教程《C语言程序设计》(高等教育出版社)。 4.网络教学资源:国家精品课网站: http://121.26.225.5/jpkc/cyuyan/index.htm。本讲 内容 学法 指导 对于指针的使用,首先要理解清楚理解指针与地址的概念,通过上机实验,验证地址、指针、数组首地址等内容,加深对指针概念的理解。单元8-2 指针的使用(教案)教学内容及教学过程 说明步骤一 复习 指针的含义。 指针变量操作基本变量和一维数组。 通过指针变量在函数间传递参数。 步骤二 讲授 8.3 用字符指针操作字符串 字符串常量是由双引号括起来的字符序列。例如“a string”就是一个字符串常量,该字符串中字符a后面还有一个空格字符,所以它由8 个字符序列组成。 在程序中如出现字符串,C编译程序就给字符串安排一个存储区域,这个区域是静态的,在整个程序运行的过程中始终占用,平时所讲的字符串常量的长度是指该字符串的字符个数。但是,在字符串实际的存储中,C编译程序还自动给该字符串序列的末尾加上一个空字符'\0',用以标志字符串的结束,因此一个字符串所占的存储区域的字节数总比它实际的字符个数多一个字节。 【例8-10】 char *cp; cp="a string"; 该语句等价于: char *cp="a string"; (图8-8通过字符指针实现字符串cpastring\0)此例中,cp被定义为一个字符指针,它指向字符串常量中的首字符'a'。如图8-8所示。 【例8-11】将字符串中的指定字符用另一个字符替换。 分析:自定义函数replace实现字符替换功能,用指针p访问要操作的字符串,用变量oldc和newc分别代表替换前和替换后的字符。其基本思想是:从p指向的第一个元素开始,依次判断p[i]是否为字符oldc,如果是,则用newc替换oldc,当p所指向的字符为字符串结束标志'\0'时为止。 程序实现代码如下: #include void replace(char *,char,char); //函数声明 void main(void) { char s[]="My name is Jason."; char c1,c2; printf("\n原来的字符串=%s",s); printf("\n请指定一个被替换的字符:"); c1=getchar( ); fflush(stdin); //清空输入缓冲区函数 printf("请输入一个新字符:"); c2=getchar( ); replace(s,c1,c2); //函数调用 printf("新的字符串=%s\n",s); } void replace(char *p, char oldc, char newc) //函数定义 { int i; for(i=0; p[i]!= '\0';i++) if(p[i]==oldc) p[i]=newc; } 8.4 返回地址的函数 函数返回值可以是地址(指针类型),比如之前学习过的字符串处理函数strcpy()、strcat()等。用户可以根据需要编写返回值为地址的函数。此时函数的定义形式为: 类型标识符 *函数名 ([形参列表]); 【例8-12】 int *fun(int a, int b); fun是函数名,a和b是函数的形参,函数的返回值为整型指针。对函数fun调用以后,能得到一个指向整型数据的指针(地址)。 【例8-13】将两个整数中较大的那个数的地址作为返回值。 #include int *fun(int *, int *); void main( ) { int *p,i,j; printf("请输入两个数:"); scanf("%d%d",&i,&j); p=fun(&i,&j); //将返回的地址值赋值给指针变量p printf("第一个数为%d,存储地址为:%p.\n",i,&i); printf("第二个数为%d,存储地址为:%p.\n",j,&j); printf("较大的数为%d,存储地址为:%p.\n",*p,p); } int *fun(int *a, int *b) { if(*a>*b) return a; else return b; } printf("(3)用指针输出各个数组元素的值(指针法):\n"); for(k=0;k<5;k++) printf("*(p+%d)=%d\n",k,*(p+k)); } 步骤三 课堂小结 1.指针操作字符串 2.返回地址的函数 步骤四 实验与作业 实验内容 实训指导 3 4 互动 复习 地址的复习 实例 重点分析 重点 初学者易犯的错误 难点 重点 重点分析 注意启发 上机验证教 学 总 结 展开更多...... 收起↑ 资源预览