《C语言程序设计》课程项目教学技能目标.docx
《《C语言程序设计》课程项目教学技能目标.docx》由会员分享,可在线阅读,更多相关《《C语言程序设计》课程项目教学技能目标.docx(19页珍藏版)》请在冰豆网上搜索。
《C语言程序设计》课程项目教学技能目标
《C语言程序设计》课程项目教学技能目标
《C语言程序设计》课程项目教学提出了“熟练使用基本知识点,练习设计编写小程序”两个层次的技能目标。
“熟练使用基本知识点”是第一层次的技能目标,该目标要求能够用C语言基本知识点语句准确描述简单问题,做到知识单点的准确把握和使用。
课程中有大量的基本知识点需要理解和熟练掌握,学习者要达到“语句和代码”目标级别。
该目标训练方法可以有以下几种:
(1)阅读具有针对性的语句和短小程序,一般作为作业题呈现给学习者。
(2)改错题。
针对具体知识点进行训练,提高学习者的认识和鉴别能力。
可以是作业或上机实践。
(3)填空题。
针对具体知识点进行训练,为初级设计能力奠定基础。
可以是作业或上机实践。
(4)小问题编程设计。
用3~5个语句完成单知识点程序设计练习,主要是上机实践。
“练习设计编写小程序”,是第二层次的技能目标,该目标要求能够熟练使用C语言基本知识点语句,运用算法设计思想,解决常见的或小规模的问题,这种程序一般包括10~20个语句。
这是多个知识点的综合应用和培养学习者计算机思维的基本训练。
程序设计题型很多,从大量的传统题目和现实中可以找到许多原型。
但是为了配合项目教学,需要构造更加合理的、更多来源于现实的题目,甚至有些题目来源于项目基本构造模块。
这一级教学目标达到“代码和程序”目标级别,要求所有学习者均应达标。
构题方法可以有以下几种:
(1)直接来源于传统经典保留教学题。
如,有一些经典数学问题,经典现实问题等。
(2)改编传统题目。
有些题目编写出的程序基本符合教学要求,但是题目难以反映飞速发展的现实社会,或缺少科学和实际背景等,这种情况可改编原有题目。
有些题目来源较好,如来源于前端科研,或来源于专业问题,符合学生专业背景,但程序实现较长或较难,则需要改编题目为多个小题,缩小程序或变为几个相关的题目。
(3)创造新题。
可结合所教学生专业,或某些现实情况创造新题,实践教学知识点。
更重要的是,结合项目教学,教师和学习者在熟悉项目设计意图的前提下,围绕项目产生新的教学题目和实训题目。
两个层次在课程学习过程中,并不是不同时期的学习内容,应该并行进行。
初级篇
第一章C语言学习基础之技能目标
第一层次
1、练习C源程序文件的创建(编辑输入、存储编译、简单运行调试)过程,掌握使用VC集成开发环境处理一个C语言程序的步骤:
编辑、编译、连接和运行。
要求:
(1)阅读程序,在VC集成开发环境中输入、编译、连接并运行简单C语言程序。
(2)阅读并运行简单C语言程序,输入并记住C语言的头文件包含CODE:
#include“stdio.h”或#include
(3)理解并输入简单C语言程序,编译、调试其中的错误部分。
(4)在指定位置存储C语言源程序。
2、阅读并运行简单C语言程序,记住C语言主函数的构成。
3、阅读并运行简单C语言程序,记住使用printf语句输出信息的方法。
4、阅读并运行简单C语言程序,理解转义字符(\n、\t)在printf语句中的作用。
5、区分C语言中的命令和语句。
6、观察错误提示信息,并根据提示信息寻找程序错误。
要求:
对一些简单的语法错误,如在头文件后加“;”或在语句后漏输入“;”或关键字拼写错误等的错误提示信息。
第二层次
7、准确描述求解问题的六步法。
例:
写出求长方体体积的六步法。
8、模拟例题编写程序,使用printf语句输出信息。
要求:
可以输出一些图形、软件设计界面、某些特殊信息、提示信息、换行等。
第二章C程序设计初步之技能目标
第一层次
1、练习简单变量的定义及其初始化。
2、练习简单字符指针变量的定义及其初始化。
3、练习字符一维数组和数值一维数组的定义。
要求:
练习各种类型变量的定义及其初始化,记住变量定义语句在程序中的位置。
4、练习符号常量的定义。
5、确定问题领域的数据及其类型。
要求:
根据给定的问题确定所需定义的数据及其类型。
如:
计算一个三角形面积时,需要定义哪些数据,类型如何确定?
6、分析复合赋值运算表达式的值。
7、求余运算的应用。
例1:
判断奇偶数据。
例2:
拆分整数的各位数字。
(需要使用除运算)
8、分析自加、自减运算符作为前缀运算符时表达式和变量的值。
9、分析自加、自减运算符作为后缀运算符时表达式和变量的值。
10、写出给定数学式子的算术表达式。
11、分析逗号表达式的值。
12、分析简单指针变量和普通变量的关联。
13、分析赋值运算中的类型转换。
14、分析算术运算中的类型转换。
15、使用强制类型转换运算符实现数据类型的转换。
16、使用格式化输出语句(printf语句)以不同格式输出C语言中的整型常(变)量。
要求:
(1)熟悉无(带)符号十进制、无符号八进制和无符号十六进制输出结果形式。
(2)各种附加格式说明符的使用。
17、使用格式化输出语句(printf语句)以不同格式输出C语言中的实型常(变)量。
要求:
(1)熟悉e(E)、g和f格式输出的结果形式。
(2)各种附加格式说明符的使用。
18、练习各种转义字符的输出,熟悉其输出或控制效果。
19、使用printf语句输出C语言中的字符型常(变)量。
20、使用printf语句输出C语言中的字符串。
21、使用scanf语句实现各种类型数据的输入。
要求:
(1)输入格式控制字符串的书写与表示。
(2)程序运行时各种数据输入方式的练习。
22、使用多条printf语句输出不同类型的常(变)量。
例:
使用printf语句,在屏幕上显示某个学生的学号、姓名、性别、年龄和某门课程的成绩。
23、使用一条printf语句输出不同类型的常(变)量。
例:
使用printf语句,在屏幕上显示某个学生的学号、姓名、性别、年龄和某门课程的成绩。
24、使用printf语句和scanf语句实现人机交互。
例:
使用printf语句和scanf语句,从键盘输入某个学生的学号、姓名、性别、年龄和某门课程的成绩,并在屏幕上输出。
25、使用getchar函数实现单个字符的输入,并与printf函数比较。
26、使用putchar函数实现单个字符的输出,并与printf函数比较。
27、使用gets函数实现字符串的输入,并与printf函数比较。
28、使用puts函数实现字符串的输出,并与printf函数比较。
29、使用数学函数表示给定的数学式子。
要求分别练习以下函数:
(1)使用sqrt函数求一个实数的平方根。
(2)使用fabs函数和abs函数求一个数的绝对值。
(3)使用pow函数求一个数的n次幂。
(4)使用三角函数sin求某个弧度的正弦值。
(5)使用三角函数cos求某个弧度的余弦值。
(6)使用三角函数tan求某个弧度的正切值。
(7)使用三角函数atan求某个弧度的余切值。
30、阅读并运行有一个main函数和一个自定义无参函数的程序,分析程序的执行过程。
第二层次
31、简单算法练习。
例:
编写应用两两交换算法处理问题的程序。
要求:
(1)利用简单变量实现。
(2)利用指针变量实现。
32、编程实现对多个数据的处理。
要求:
练习加、减、乘、除、求余的运算。
33、编程实现数据的分离和整合。
例1:
从键盘输入一个三位数,分离出它的百位、十位和个位数字。
例2:
从键盘输入三个一位数,组成一个三位数。
34、编程实现字符转换。
例1:
从键盘输入一个小(大)写字母,转换成大(小)写字母后输出。
例2:
从键盘输入一个字母,变换为其后续的第n个字符并输出。
35、编程实现简单顺序结构程序设计。
例1:
已知某几何体数据,求面积、体积等。
例2:
已知若干某类型数据,求和、积,并按要求格式输出。
例3:
任意输入一个字符,输出此字符对应的ASCII码。
例4:
设银行定期存款的年利率rate为2.25%,并已知存款期为n年,存款本金为capital元,试编程计算n年后的本利之和deposit。
要求定期存款的年利率rate、存款期n和存款本金capital均由键盘输入。
例5:
求5!
(5的阶乘)。
36、编写有一个main函数和一个自定义无参函数的程序。
第三章控制结构和数据文件之技能目标
第一层次
1、用C语言合法的表达式构造给定问题的条件。
要求:
(1)用关系表达式表示条件。
(2)用逻辑表达式表示条件。
2、分析给定表达式的值。
要求:
(1)分析给定关系表达式的值。
(2)分析给定逻辑表达式的值。
(3)分析逻辑运算中的“短路”现象及影响。
(4)分析给定条件表达式的值。
(5)分析给定复杂表达式的值。
3、构造switch语句的条件,并分析其取值结果。
4、阅读并运行由条件表达式构成的选择结构程序,分析选择结构程序的执行过程。
5、阅读并运行由if语句构成的单分支选择结构程序,分析选择结构程序的执行过程。
6、阅读由if语句构成的单分支选择结构程序,理解复合语句的作用。
7、阅读由if语句构成的单分支选择结构程序,理解空语句的作用。
8、阅读并运行由if—else语句构成的双分支选择结构程序,分析选择结构程序的执行过程。
9、阅读选择结构程序,理解数值型数据作为条件时,程序的执行过程。
10、阅读并运行由if—else语句构成的多分支选择结构程序,分析选择结构程序的执行过程。
11、阅读并运行switch语句构成的多分支选择结构程序,分析选择结构程序的执行过程。
12、分析switch语句中break语句的作用。
13、阅读并运行嵌套的选择结构程序,分析选择结构程序的执行过程。
14、阅读并运行由while语句构成的循环,分析循环结构程序的执行过程。
15、阅读由while语句构成的循环,分析空语句的作用。
16、阅读并运行由do-while语句构成的循环,分析循环结构程序的执行过程。
17、阅读并运行由for语句构成的循环,分析循环结构程序的执行过程。
18、分析计数式循环的循环控制。
19、分析标记式循环的循环控制。
20、阅读并运行由三种循环语句构成的嵌套结构循环程序,分析循环结构程序的执行过程。
21、分析break语句在循环体中的作用。
22、分析continue语句在循环体中的作用。
23、循环次数的确定。
24、练习文件指针的定义。
25、使用fopen函数打开文件。
26、使用fscanf函数实现文件的读操作。
27、使用fprintf函数实现文件的写操作。
28、使用fclose函数关闭文件。
29、使用feof函数判断文件是否结束。
30、使用结束符判断文件是否结束。
31、阅读简单的文件操作程序,分析程序的功能。
32、阅读并运行自定义无参函数,分析程序的执行过程。
33、观察错误提示信息,并根据提示信息寻找程序错误。
要求:
是一些逻辑错误,如判断水仙花数时,将“==”号输成“=”号等。
第二层次
34、应用if语句编写单分支选择结构程序。
例:
现有3个学生,要求按年龄从小到大(升序)排列。
35、应用if—else语句编写双分支选择结构程序。
例1:
判断一个数是否是水仙花数。
例2:
判断某年是否是闰年。
36、应用if—else语句编写多分支选择结构程序。
例:
判断从键盘输入的字符属于哪一类字符。
37、应用switch语句编写多分支选择结构程序。
例:
设计星期查询程序。
编写程序,从键盘输入1~7的整数,代表数字星期,将其转换为英文星期。
38、编写嵌套的选择结构程序。
例:
编写程序,求一元二次方程的根。
39、编写程序计算某个分段函数。
40、编写求极值程序。
例:
求两个(或多个)数中的最大(小)数。
41、应用while语句编写循环结构程序。
例:
求某班所有学生某门课程的平均值。
42、应用do—while语句编写循环结构程序。
例:
某系统用户界面的设计。
43、应用for语句编写循环结构程序。
例:
求所有的水仙花数。
44、应用三种循环语句编写嵌套的循环结构程序。
例:
打印九九乘法表。
45、在编写循环结构程序中应用break语句。
46、在编写循环结构程序中应用continue语句。
47、编写求多个数累加和算法程序。
48、编写求累乘积算法程序。
49、编写求累加和和累乘积算法程序。
50、编写求均值算法程序。
51、编写分类统计程序。
例:
在成批信息处理中,我们经常会对某些信息进行分类统计。
编写程序,统计从键盘输入的一串字符中,字母字符、数字字符、空格字符以及其它字符的个数。
52、利用递推算法编写程序解决问题。
例:
求fibonacci数列的前30项。
53、利用枚举算法编写程序解决问题。
例1:
找出所有的水仙花数。
例2:
找出所有的完全数。
54、利用辗转相除算法编写程序解决问题。
例:
用辗转相除算法求两个数的最大公约数。
55、使用标记变量法编写程序解决问题。
例:
判断某个数是否是素数。
56、编写简单的自定义无参函数,实现简单的函数调用。
57、编写文件操作程序,实现批量数据的读写。
58、经典数学公式求解问题。
例:
利用公式求∏的值。
中级篇
第四章函数模块化编程之技能目标
第一层次
1、使用随机函数rand和种子函数srand产生随机数。
2、分析函数首部的合法性。
要求:
(1)分析函数参数的个数和类型。
(2)分析函数的返回值类型。
3、阅读并运行有返回值函数的程序,分析程序的执行过程。
4、分析常量或简单变量作实参时,函数间数据通过值传递的调用方式。
5、分析变量地址或指针作实参时,函数间的数据通过地址传递的调用方式。
6、阅读并运行包含一般函数调用的多函数程序,分析程序的执行过程。
7、阅读并运行包含函数嵌套调用的多函数程序,分析程序的执行过程。
8、阅读并运行包含函数递归调用的多函数程序,分析程序的执行过程。
9、比较用auto变量和static变量编写的程序。
10、阅读并运行用extern关键字定义的全局变量程序,分析程序的执行过程。
11、阅读并运行包含局部变量、全局变量的程序。
12、阅读并运行包含同名的局部变量和全局变量的程序。
13、阅读并运行简单宏定义及其调用程序。
14、阅读并运行带参宏定义及其调用程序。
15、阅读并运行多源程序文件程序,分析执行过程。
第二层次
16、编写求极值算法的通用函数,利用通用函数实现求极值。
17、编写求累加和算法的通用函数,利用通用函数实现求累加和。
18、编写求累乘积算法的通用函数,利用通用函数实现求累乘积。
19、编写求平均值算法的通用函数,利用通用函数实现求平均值。
20、编写递推算法函数解决问题,利用通用函数实现此类问题的求解。
21、编写枚举算法函数解决问题,利用通用函数实现此类问题的求解。
22、编写辗转相除算法函数解决问题,利用通用函数实现此类问题的求解。
23、编写有局部变量和全局变量的程序。
24、编写有静态变量的程序。
25、编写有多源程序文件的简单程序。
26、编写带参宏定义程序。
27、经典名题。
例1:
编写程序,连续输出相邻的15对孪生素数,孪生素数是指相邻的两个数都是素数。
例2:
汉诺塔。
有三个针a,b,c,其中a针上有64个盘子,盘子大小不等。
大的在下,小的在上,要求把这64个盘子从a针移到c针,在移动过程中可以借助b针,每次只允许移动一个盘,且在移动过程中在三根针上都保持大盘在下,小盘在上,要求编写程序打印出移动的步骤。
高级篇
第五、六章数组与指针之技能目标
第一层次
1、练习一维数组的定义及初始化。
例:
利用一维数组存储多个相关数据,如多个实验数据的输入及存储。
2、练习一维数组元素的引用。
3、分析一维数组在内存中所占的字节数。
4、练习一级指针定义和一维数组的关联。
5、练习一维数组元素地址的各种表示方法,分析元素的地址和数组的地址。
6、练习一维数组元素的各种表示方法。
7、练习自加和自减运算符实现指针在数组空间的移动操作。
8、结合指针,应用for循环实现一维数组元素的输入输出。
9、结合指针,应用fscanf函数和fprintf函数实现一维数组元素值的批量输入输出。
10、结合指针,应用一维数组实现求极值的操作。
11、结合指针,应用一维数组实现求和的操作。
12、结合指针,应用一维数组实现求平均值的操作。
13、练习二维数组的定义及初始化。
14、练习二维数组元素的引用。
15、分析二维数组的元素个数。
16、二维数组定义时省略第一维的说明,确定第一维的大小。
17、练习二级指针定义和二维数组的关联。
18、练习行指针的定义及其与二维数组的关联。
19、练习指针数组的定义及其与二维数组的关联。
20、分析指向不同维数组的指针,该指针自加和自减运算的值及其指向。
21、练习二维数组元素地址的各种表示方法,分析元素的地址和数组的地址。
22、练习二维数组元素的各种表示方法、引用方法。
23、练习字符数组的定义及其初始化。
24、利用指针,应用双重for循环实现二维数组的输入输出。
25、利用指针,应用二维数组求某(所有)行元素的最大(小)值。
26、利用指针,应用二维数组求某(所有)列元素的最大(小)值。
27、利用指针,应用二维数组求某(所有)行元素的和(平均)值。
28、利用指针,应用二维数组求某(所有)列元素的和(平均)值。
29、应用行指针引用二维数组元素做多种处理。
30、应用指针数组引用二维数组元素做多种处理。
31、对指定位置元素的操作(简单元素定位问题)。
32、使用一维字符数组存储、输入、输出字符串。
例:
一个人的姓名存储、输入及输出。
33、区分用一维字符数组存储字符串时,数组的大小和字符串的长度。
34、应用标准输入输出函数实现字符串的输入和输出。
35、应用字符串处理函数操作字符数组,包括strcpy、strcmp、strlen、strcat等。
36、阅读并运行指向一维数组的指针变量作函数参数的程序,分析程序的执行过程。
37、阅读并运行行指针变量作为形参指向二维数组的程序,分析程序的执行过程。
38、练习指针函数的定义。
39、阅读并运行指针数组作指针型函数参数的程序,分析程序的执行过程。
40、练习指向函数的指针的定义和赋值。
41、阅读并运行指向函数的指针作函数参数的程序,分析程序的执行过程。
42、阅读并运行指针数组名作函数参数的程序,分析程序的执行过程。
43、阅读并运行指向字符串的指针作函数参数的程序,分析程序的执行过程。
44、使用fgetc函数实现文件的读字符操作。
45、使用fputc函数实现文件的写字符操作。
46、使用fgets函数实现文件的读字符串操作。
47、使用fputs函数实现文件的写字符操作。
48、使用rewind函数实现文件指针的定位操作。
49、使用ftell函数获取文件指针的当前位置。
50、使用fseek函数实现文件指针的定位操作。
51、使用fread函数实现文件的读操作。
52、使用fwrite函数实现文件的写操作。
53、练习动态存储分配函数,包括malloc和calloc函数。
54、阅读文件操作程序,分析程序的功能。
55、观察指针和数组操作中的错误提示信息,并根据提示信息寻找程序错误。
第二层次
56、结合指针,应用一维数组和顺序查找算法实现数据的查找。
57、结合指针,应用一维数组和折半查找算法实现数据的查找。
58、结合指针,应用一维数组实现数据的有序插入。
59、结合指针,应用一维数组实现数据在指定位置的插入。
60、结合指针,应用一维数组实现指定位置或指定数据的删除。
61、结合指针,应用一维数组实现数据的逆置。
62、结合指针,应用一维数组实现分类数据的统计。
63、结合指针,应用一维数组和冒泡排序算法实现数据的排序。
64、结合指针,应用一维数组和选择排序算法实现数据的排序。
65、结合指针,应用二维数组实现矩阵的加操作。
66、结合指针,应用二维数组实现矩阵的减操作。
67、结合指针,应用二维数组实现矩阵的转置操作。
68、结合指针,应用二维数组对矩阵的某些元素进行某种操作。
例:
将3*3矩阵右下半三角元素全部置0。
69、利用指针移动和比较运算,编程实现字符串的逆置。
70、利用一维数组名作为实参,编写自定义函数解决问题。
例1:
通过函数求数组的最大值,主函数调用并输出结果。
例2:
通过函数将数组按升序排序,主函数调用并输出结果。
71、利用一维数组元素作为实参,编写自定义函数解决问题。
72、编写自定义头文件,并在程序中包含该头文件。
73、利用二维数组名作为实参,编写自定义函数解决实际问题。
例:
通过函数求3行4列二维数组所有元素的累加和,在主函数调用并输出结果。
74、利用字符数组名作为实参,编写自定义函数解决实际问题。
例:
通过函数将字符串中的所有小写字母转换成对应的大写字母,在主函数调用并输出结果。
75、利用指针数组作指针型函数参数,编写程序。
76、编写指向函数的指针作函数参数的程序。
77、编写指针数组名作函数参数的程序。
78、编写指针指向字符串的程序。
79、应用字符数组和指针编写字符串比较函数。
80、应用字符数组和指针编写字符串复制函数。
81、应用字符数组和指针编写求字符串长度函数。
82、应用字符数组和指针编写字符串连接函数。
83、利用指针和数组,编写文件操作程序处理批量数据。
第七、八章结构体、联合体及用户自定义类型之技能目标
第一层次
1、练习结构体类型的定义。
2、练习结构体类型变量的定义。
3、练习结构体数组的定义。
4、练习指向结构体变量的指针的定义。
5、练习结构体类型的嵌套定义。
6、练习结构体变量单个成员的引用。
7、练习结构体变量的整体引用。
8、练习结构体类型变量的初始化。
9、练习结构体数组的初始化。
10、练习结构体数组元素的引用。
11、练习使用指针引用结构体成员。
12、练习指向结构体数组的指针的定义。
13、练习使用指针引用结构体数组元素成员。
14、练习可以实现链表的结构体定义语句。
15、写出链表中两个节点互换的实现语句。
要求:
互换后链表保存连续。
16、写出链表中两个节点间插入一个节点的实现语句。
17、写出在链表末尾插入一个节点的实现语句。
18、写出链表中删除一个节点的实现语句。
19、阅读并运行有关结构体和文件的程序,分析程序的执行过程。
20、练习共用体类型的定义。
21、练习共用体类型变量的定义。
22、练习共用体变量的引用。
23、练习枚举类型的定义。
24、练习使用typedef定义数据类型。
25、分析结构体变量所占字节数。
26、分析共用体变量所占字节数。
27、分析结构体变量作为实参时,对应的形参和实参间数据的传递。
28、分析返回值为结构体类型的函数。
29、分析共用体类型变量的值。
30、观察错误提示信息,并根据提示信息寻找程序错误。
第二层次
31、编程用尾插法实现链表的建立。
32、编程用头插法实现链表的建立。
33、编程输出链表中的结点。
34、编程统计链表的结点个数。
35、编程查找链表中某个结点。
36、编程实现链表的插入。
37、编程实现链表的删除。
38、应用指向结构体变量的指针作为参数,编写自定义函数。
39、编写有关结构体和文件的程序。
例:
建立一个班级的人员情况表,其数据项应包括学号、姓名、百分制记分的3门课程