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