一、本次课主要内容:
本章主要介绍指针相关的基础知识,本节课的主要如下
(1)通过示例"密码开锁"引入指针的概念和主要知识点,分析了密码开锁的过程来说明变量、内存单元和地址之间的关系,从而引入指针的基本概念,接着介绍了指针的基本运算以及指针变量的初始化。
(2)通过例子"角色互换"引入指针作为函数参数的用途和用法,区分按值调用和引用调用,分析了3个swap()函数进行对比,最后通过给定的年和天数计算是某年某月某日的实例学习了如何使用指针作为函数参数返回多个值,解决了以前一个函数最多只能return一个值的问题。
(3)通过示例"冒泡排序"引入数组名作为函数参数,重点介绍指针、数组和地址之间的关系,通过例子说明了指针和数组可以实现相同的操作。引出上节课学习的选择排序进行了对比。
二、实验内容:(70分)
1. 重做课本上P191例8-5,要求使用选择排序算法和冒泡排序算法分别实现。(注意:分别对应两个函数,由主函数分别调用)
2. 编写一个利用指针找最大值的函数,并用主函数调用。
。
3. 实现一个拆分实数的整数与小数部分的简单函数,并用主函数调用。
4. 在数组中查找指定元素:输入一个正整数n(1<n<=10),然后输入n个整数存入数组a中,再输入一个整数x,在数组a中查找x,若找到则输出相应的下标,否则显示"Not found"。要求定义和调用函数search(int list[],int n,int x),在数组list中查找元素x,若找到则返回相应下标,否则返回-1,参数n代表数组list中元素的数量。试编写相应程序。
三、实验要求:
1. 作业的Deadline: 2016-12-8 20:00pm
2. 将本次实验内容的代码上传到https://coding.net/ 网站。 (60分)
3. 写一篇随笔,内容分为四个部分:(总分40分)
写出本次课学习到的知识和体会、学习的时长、学习过程中遇到的问题、问题解决的方法及问题的疑惑等。
随笔的格式如下:
题目:实验11——指针的基础应用
本次课学习到的知识点:(5分)
(1)…….
(2)……..
………..
2. 实验过程中遇到的问题及解决方法:(10分)
(1)
(2)
…….
3. 实验心得体会及本章学习总结(10分)
………
4. 几个问题的思考与回答(15分)
(1)两个相同类型的指针变量能不能相加?为什么
(2)在使用scanf()函数时,输入参数列表需要使用取地址操作符&,但当参数为字符数组名时并没有使用,为什么?如果在字符数组名前加上取地址操作符&,会发生什么?
(3)C语言不允许用赋值表达式直接对数组赋值,为什么?
四、附加题:
1. 要求编写函数,判断给定的一串字符是否为"回文"。所谓"回文"是指顺读和倒读都一样的字符串。如"XYZYX"和"xyzzyx"都是回文。
2.二分查找。设已有一个10个元素的整型数组a,且按值从小到大有序排列。输入一个整数x,然后在数组中查找x,如果找到,输出相应的下标,否则,输出"Not found"。
五、本次作业评价方式:
总分100分:其中,coding中程序提交60分(根据代码的步骤、格式、注释、结构正确性来酌情分配),博客书写40分;,延迟一天扣10分,直至扣完100分。