项目六 指针的应用
一、 项目(实训)名称
指针的应用
二、 目(实训)学时数
6课时
三、 项目(实训)目标
实训目标:
1、掌握指针变量的定义与引用。
2、熟练使用函数指针、数组指针、字符串指针编写应用程序。
最终成果:
1、演示程序运行的过程和结果。
2、说明调试过程中出现的现象。
3、实训报告。
获得的知识:
1、通过指针访问内存的方法。
2、指针与数组的关系。
3、使用函数指针的方法。
4、动态分配内存的方法
四、 项目(实训)中的具体任务
1.写一函数,求一个字符串的长度。
方法说明:
在主函数中定义一个指向字符串的指针变量pstr,并将输入的字符串的首地址赋值给pstr,然后调用求字符串长度的函数strlenth(char *p),得到字符串的长度。在函数strlenth(char *p)中,判断*p是否为’\0’,如果不为’\0’,则进行len++的操作,直到遇到’\0’为止。然后返回len值。
2.编写一个函数,将数组中n个数按反序存放。
3.设一个函数,调用它时,每次实现不同的功能:(1)求两个数之和;(2)求两个数之差;(3)求两个数之积。
五、 教师知识和能力要求
1、C语言语法。
2、程序运行内存的管理。
六、 学生知识和能力准备
1、掌握指针的定义和引用。
2、掌握指针指向数组的方法。
3、掌握指针指向字符串的表示方法。
4、掌握指针函数的定义和引用。
七、 工具与设备
1、PC机。
2、Windows 2010操作系统。
3、综合开发环境(IDE): CodeBlocks、VisualStudio Community、Visual C++ 6。
八、 教学资料
《C程序设计》(第五版),谭浩强著,清华大学出版社,2017年8月
九、 实施步骤与技术要点
1.写一函数,求一个字符串的长度。
实验步骤与要求:
(1) 本部分习题要求全部用指针完成;
(2) 在main函数中输入字符串,并输出其长度;
(3) 本题不能使用strlen()函数;
方法说明:
在主函数中定义一个指向字符串的指针变量pstr,并将输入的字符串的首地址赋值给pstr,然后调用求字符串长度的函数strlenth(char *p),得到字符串的长度。在函数strlenth(char *p)中,判断*p是否为’\0’,如果不为’\0’,则进行len++的操作,直到遇到’\0’为止。然后返回len值。
求字符串长度的函数strlenth(char *p)算法如下:
1.定义intlen=0;
2.当*p!=’\0’时,重复执行(2.1)(2.2),否则算法终止。
(2.1)len=len+1
(2.2)p++
3.return(len)
2.编写一个函数,将数组中n个数按反序存放。
实验步骤与要求:
(1) 在主函数中输入10个数,并输出排好序的数。
(2) 编写函数invert()将10个数按反序存放。
3.设一个函数,调用它时,每次实现不同的功能:(1)求两个数之和;(2)求两个数之差;(3)求两个数之积。实验步骤与要求:
(1)在主函数中输入2个数a,b,并输出a,b的和、差和乘积。
(2)分别编写函数add()、sub()、mul()计算两个数的和、差、积。
(3) 编写函数process(),分别调用函数add()、sub()、mul()。
十、 考核或评价标准
实训成绩将主要根据学生对待实训的态度、对关键知识点和编程技巧的掌握程度、实训报告的内容、答辩情况等进行综合评定。最后的成绩将分优秀、良好、中等、及格和不及格五个等级。具体评判标准如下:
优秀:实训认真、刻苦,有钻研精神,不无故缺席。熟练掌握了本实训的关键知识点,具有良好的独立思考问题和解决问题的能力,具备了较好的C语言编程能力,编制的程序运行正确。实训记录内容丰富、齐全,答辩时能清晰明了地阐明问题,回答问题反映敏捷、思路清晰。
良好:能认真对待实训,不无故缺席。掌握了本实训的关键知识点,具备了较好的C语言编程能力,编写的程序运行正确。实训记录内容齐全,答辩时能清晰明了地阐明问题,能正确回答全部问题。
中等:能认真对待实训,不无故缺席。基本掌握了本实训的关键知识点,具备了一定的C语言编程能力,编写的程序运行基本正确,无致命错误。实训记录内容较齐全,答辩时能正确回答大部分问题。
及格:对待实训不够认真,有少量迟到、早退或无故缺席现象。基本掌握了本实训的主要内容,具有了用C语言编程的基本能力,但掌握不全面、扎实,编写的程序总体结构符合要求,基本能正常运行,但还存在少量错误。实训记录内容基本齐全,答辩时能在教师提示下正确回答大部分问题。
不及格:对待实训马虎、敷衍,经常迟到、早退或无故缺席。不能正确理解本实训的主要内容,不具备基本的C语言编程能力,编制的程序不能正常运行,或是抄袭他人程序,应付答辩。答辩时即使经教师提示仍不能正确回答大部分问题。

