C语言程序设计教学大纲.docx
《C语言程序设计教学大纲.docx》由会员分享,可在线阅读,更多相关《C语言程序设计教学大纲.docx(32页珍藏版)》请在冰豆网上搜索。
C语言程序设计教学大纲
《C语言程序设计》教学大纲
一、课程说明
1.课程代码:
304032071304092061404102031
2.总学时数:
96,其中理论环节学时数64 ,实验实践环节学时数:
32。
3.学分:
5
4.适用专业:
计算机系相关专业(高职)
5.本课程的性质、地位和作用
C语言是目前广泛流行的通用程序设计语言,是计算机专业学生一门重要的专业基础课程,也是许多计算机专业人员和计算机爱好者学习程序设计语言的首选,可谓是编程第一课。
本课程系统介绍了C语言程序设计的基本知识、基本数据类型和数据运算、程序控制结构、数组、函数、编译预处理、指针、结构体、文件等。
通过本课程的学习,为后续的Java语言程序设计、数据结构、数据库及其应用、软件工程等课程打下必备的基础,并且培养计算机专业学生程序设计的基本方法与编程技巧,为以后从事应用软件开发提供一种实用的工具。
二、教学基本要求
1.本课程的目的、任务
C语言程序设计是计算机及相关专业一门必修的基础课,是学习其他计算机课程的基础,也是计算机基础教育的重点课程之一。
它既具有高级语言的特点,又具有低级语言的功能。
本课程的目的在于向学生介绍C语言的基础知识,使学生了解C语言的基本概念及语法,准确掌握C语言数据类型的特点,熟练掌握C程序的编程方法,具有应用C语言解决实际问题的能力。
通过学习养成良好的程序设计风格。
并深刻理解面向传统的过程程序设计理念。
本课程的任务是通过教学和实践,使学生理解算法的概念、特征与描述;掌握C语言基本语法及其结构化程序设计方法并逐步形成正确的程序设计思想。
能够使学生熟练地使用C语言进行程序设计并具备调试程序的能力,为后继课程及其他程序设计课程的学习和应用打下基础。
2.本课程的教学要求
通过本课程的学习,学生应达到下列基本要求:
1)熟练掌握C语言基本语句、语法、数据类型、运算符和表达式,熟练掌握顺序、选择、循环结构程序设计方法,掌握数组、函数、编译预处理、指针、文件、结构体等的使用,掌握排序、查找、遍历等常用的基本算法。
2)能够熟练地阅读、理解C程序并能使用C语言进行简单的应用程序设计。
教学内容重点与难点:
大纲包括了本课程的主要内容,共分13章,其中的重点章节是程序的三种基本结构、函数、数组与指针,难点部分为函数与指针章节。
教材选编及依据:
教材:
《C程序设计》第三版 谭浩强著清华大学出版社。
说明:
该教材为部级优秀教材和高校推荐教材。
内容新颖、概念清晰、通俗易懂、层次配套、实用性强。
教学方法建议:
本课程是一门实践性很强的课程,为使学生能及时掌握课堂所授内容,巩固所学知识,应以在多媒体教室演示教学为主,老师可以边讲解边演示,有条件的甚至可以在计算机实验室进行在线教学,学生和老师一起边学习边实践。
在每一单元结束时,均安排上机实验,同时配以相应的习题课,进行例课与习题分析。
三、学时分配
章节
标题
学时数
理论
实验
总学时
第一章
C语言概述
2
1
3
第二章
程序的灵魂——算法
2
1
3
第三章
数据类型、运算符与表达式
4
2
6
第四章
最简单的C程序设计——顺序程序设计
4
2
6
第五章
选择结构程序设计
6
2
8
第六章
循环控制
6
4
10
第七章
数组
6
4
10
第八章
函数
8
4
12
第九章
预处理命令
2
2
4
第十章
指针
12
6
18
第十一章
结构体与共用体
6
2
8
第十二章
位运算
2
2
第十三章
文件
4
2
6
合计
64
32
96
四、大纲内容
(一)教学大纲内容
第一章C语言概述(共3学时)
【教学目的与要求】:
了解C语言的背景和特点,初步理解C语言程序的结构和运行C语言程序的步骤,了解C语言程序设计的风格。
【教学重点与难点】:
C程序的结构形式;C环境、调试C程序的步骤与方法。
【教学内容】:
第一节C语言出现的历史背景
第二节C语言的特点
第三节简单的C语言程序介绍
分析C语言程序的特点。
第四节运行C程序的步骤与方法
TurboC(或者VC++)集成开发环境下编辑、编译和运行C程序的基本操作方法。
第二章程序的灵魂——算法(共3学时)
【教学目的与要求】:
掌握算法的概念,算法的特性和算法的表示;了解各种程序设计方法的特点,初步建立起程序设计的概念。
【教学重点与难点】:
算法的概念、流程图、算法思想。
【教学内容】:
第一节算法的概念
第二节简单算法举例
第三节算法的特性
分析算法的五个特性
第四节怎样表示一个算法
重点介绍流程图,并分别用自然语言、N-S流程图、伪代码和计算机语言表示算法,分析3种基本结构和改进的流程图。
第五节结构化程序设计方法
第三章数据类型、运算符与表达式(共6学时)
【教学目的与要求】:
掌握C的数据类型,熟练掌握基本数据类型的定义,区分常量和变量概念以及定义形式;掌握各运算符,及运算符的优先级和结合性;掌握各种表达式类型的构成及书写。
【教学重点与难点】:
基本数据类型的理解、常用运算符的应用、C语言表达式书写。
【教学内容】:
第一节C语言的数据类型
第二节常量与变量
重点区分符号常量和变量。
第三节整型数据
重点介绍整型数据的各种表示形式,整型变量,整型常量的类型。
第四节浮点型数据
重点介绍浮点数据的各种表示形式。
第五节字符型数据
重点介绍字符数据在内存中的存储形式及其使用方法和字符串常量的特征。
第六节变量赋初值
第七节各类数值型数据间的混合运算
分析混合运算中的类型自动转换
第八节算术运算符和算术表达式
重点分析运算符的优先级和结合性、自增、自减运算。
第九节赋值运算符和赋值表达式
第十节逗号运算符和逗号表达式
第四章最简单的C程序设计——顺序程序设计(共6学时)
【教学目的与要求】:
了解C语句的特征,程序的三种基本结构,理解赋值语句和复合语句。
掌握数据输入与输出的实现。
【教学重点与难点】:
C语言的赋值语句、数据的输入输出及输入输出中常用的控制格式。
【教学内容】:
第一节C语句概述
第二节赋值语句
第三节数据输入输出的概念及在C语言中的实现
分析数据输入输出在C语言中的实现
第四节字符数据的输入输出
分析putchar函数和getchar函数格式特征。
第五节格式输入与输出
重点介绍printf函数和scanf函数,并重点介绍格式控制符。
第六节顺序结构程序设计举例
第五章选择结构程序设计(共8学时)
【教学目的与要求】:
掌握关系运算符和关系表达式、逻辑运算符和逻辑表达式的应用,掌握两种分支语句的语法规则和功能,学会用分支方法进行简单分支程序设计,能使用分支语句编写程序。
【教学重点与难点】:
关系运算符与逻辑运算符及其组成的具有逻辑值的表达式书写和判断,两种分支语句的格式及基本应用。
【教学内容】:
第一节关系运算符和关系表达式
分析关系运算符及其优先级和结合性,关系表达式中逻辑值的判别。
第二节逻辑运算符和逻辑表达式
分析逻辑运算符及其优先级和结合性,逻辑表达式中逻辑值的判别。
第三节if语句
if语句的3种形式,if语句的嵌套以及条件运算符。
第四节switch语句
第五节程序举例
举例选择结构程序的设计,分析设计方法
第六章循环控制(共10学时)
【教学目的与要求】:
掌握三种循环语句的语法规则和功能,用循环方法进行简单循环程序设计,掌握循环的嵌套和三种循环的区别,掌握Break、Continue语句在循环语句中的作用。
【教学重点与难点】:
三种循环语句,break与continue语句的作用。
【教学内容】:
第一节概述
第二节goto语句以及goto语句构成循环
第三节while语句
While语句——当型循环。
第四节do-while语句
Do-While语句——直到型循环。
第五节for语句
重点分析for语句的一般形式和特殊形式
第六节循环的嵌套
第七节几种循环的比较
第八节break语句和continue语句
第九节程序举例
重点分析三种循环替代环境
第七章数组(共10学时)
【教学目的与要求】:
了解顺序存储的概念,理解数据顺序存储的意义、作用。
掌握数组的定义和使用,掌握字符数组的定义、初始化和引用,掌握数组程序设计技巧。
【教学重点与难点】:
一维数组、二维数组的定义与引用,字符数组的定义与引用,常用字符串处理函数及字符处理函数,数组的应用。
【教学内容】:
第一节一维数组的定义和引用
一维数组的定义、引用、初始化和程序举例。
第二节二维数组的定义和引用
二维数组的定义、引用、初始化和程序举例。
第三节字符数组
字符数组的定义、初始化和引用,字符串和字符串结束标志,字符数组的输入输出,字符串处理函数,字符数组应用举例。
第八章函数(共12学时)
【教学目的与要求】:
掌握函数的定义和函数调用;区分形式参数和实在参数;学会调用函数及各种调用方法,初步分析传址与传值的区别。
掌握变量存储类型。
【教学重点与难点】:
函数定义、函数调用、函数声明概念区分,函数的嵌套调用与递归调用,传址与传值,变量的存储类别与作用域。
【教学内容】:
第一节概述
第二节函数定义的一般形式
无参函数和有参函数定义的一般形式,空函数
第三节函数参数和函数的值
形式参数,实际参数和函数的返回值。
第四节函数的调用
函数调用的一般形式、方式,对被调用函数的声明和函数原型。
第五节函数的嵌套调用
第六节函数的递归调用
第七节数组作为函数参数
数组元素作函数实参(传值),数组名作函数参数(传址)。
第八节局部变量和全局变量
第九节变量的存储类别
重点分析动态存储方式与静态存储方式,分析用static声明局部变量的特征及终值的情况。
第一十节内部函数和外部函数
第九章预处理命令(共4学时)
【教学目的与要求】:
理解预处理的概念及特点,掌握有参宏与无参宏的定义及使用,理解文件包含的意义及使用。
【教学重点与难点】:
有参宏、无参宏的定义与应用;文件包含的基本概念。
【教学内容】:
第一节宏定义
重点分析带参数的宏定义及简单函数的区别
第二节“文件包含”处理
第三节条件编译
第十章指针(共18学时)
【教学目的与要求】:
掌握指针的特点,意义,指针变量的声明与引用;区分指针的作用和意义,重点区分传值与传址的特征;掌握使用指针指向数组的应用;理解指向函数的指针、返回指针值的函数、多重指针的使用。
【教学重点与难点】:
指针与地址的基本概念,指针与变量的关系(传值与传址),指针与数组,指针与字符串,指针的应用。
【教学内容】:
第一节地址和指针的概念
第二节变量的指针和指向变量的指针变量
指针变量的定义、引用,指针变量作为函数参数(传递的两种形态)。
第三节数组与指针
重点分析指向数组元素的指针及指向数组名(首地址)的指针用作函数参数时的特点,多维数组与指针。
第四节字符串与指针
字符串的表示形式(指针与字符数组),字符指针作函数参数,分析使用字符指针变量和使用字符数组的特征。
第五节指向函数的指针
用函数指针变量调用函数,用指向函数的指针作函数参数。
第六节返回指针值的函数
第七节指针数组和指向指针的指针
重点分析指针数组的概念及简单应用,双重指针的特征。
第八节有关指针的数据类型和指针运算的小结
有关指针的数据类型和指针运算的小结,void指针类型。
第十一章结构体与共用体(共8学时)
【教学目的与要求】:
理解结构体的特点,定义和引入的意义,掌握结构体的定义、引用;掌握指向结构体的指针;使用链表建立动态数据结构的作用和意义;掌握指向结构体的指针和使用指向结构体的指针处理链表的方法;了解共同体。
【教学重点与难点】:
结构体的基本概念,结构体类型及变量的定义,结构体数组和用指针处理链表。
【教学内容】:
第三节概述
第四节定义结构体类型变量的方法
分析定义结构体类型变量的三种方法。
第三节结构体变量的引用
第四节结构体变量的初始化
第五节结构体数组
结构体数组的定义、初始化和应用举例。
第六节指向结构体类型数据的指针
重点分析指向结构体变量的指针的特点,指向结构体数组的指针,用结构体变量和指向结构体的指针作函数参数。
第七节用指针处理链表
链表概述,简单链表,处理动态链表所需的函数,重点分析动态链表的建立、输出、删除和插入,对链表的综合操作。
第八节共用体
第九节枚举类型
第一十一节用typedef定义类型
第十二章位运算(共2学时)
【教学目的与要求】:
了解位运算符和位运算。
【教学重点与难点】:
位运算。
【教学内容】:
第一节位运算符和位运算
按位与(&),按位或(|),取反(~),左移运算符(<<),右移运算符(>>)。
第二节位运算举例
第十三章文件(共6学时)
【教学目的与要求】:
掌握C文件操作的一般使用方法。
【教学重点与难点】:
文件的基本概念;文件的打开、关闭、常用读写方法。
【教学内容】:
第一节C文件概述
第二节文件类型指针
第三节文件的打开与关闭
分析文件的打开(fopen函数)与关闭(fclose函数)
第四节文件的读写
分析fprintf函数和fscanf函数,fputc函数和fgetc函数等有关文件读写的函数。
第五节文件的定位。
第七节文件输入输出小结
(二)实验大纲内容
【实验说明】:
本课程使用C语言进行程序设计的教学,是学生通过一门语言的学习得到程序设计的基本训练,进而为学习其它计算机语言进行程序设计打好基础。
程序设计是一门实践性很强的课程,既要掌握概念,了解和熟悉C程序的构成,并能够动手自己编写程序,又要实际上机进行程序的调试和运行。
为此,开设《C语言程序设计》实验课是非常必要的,通过实验煅练学生的实际动手能力,提高学生的编程和程序调试能力。
根据教学计划,《C语言程序设计》实验课时为32课时,具体分配如下:
序号
内容
学时数
实验一
C语言程序设计初步
6
实验二
基本的控制结构
6
实验三
数组
4
实验四
函数
6
实验五
指针(设计性实验)
8
实验六
文件(设计性实验)
2
合计
32
【基本实验项目】:
实验一C语言程序设计初步
一、实验目的
本实验涵盖教学内容前四章,主要目的是:
1.了解所用的计算机系统的基本操作方法,学会独立使用该系统。
掌握在集成环境中编辑、编译、连接和运行C语言程序的方法。
2.掌握C语言数据类型,熟悉如何定义一个整型、字符型、实型变量,以及对它们赋值的方法,了解以上类型数据输出时所用的格式转换符。
2
3.学会使用有关算术运算符,以及包含这些运算符的表达式。
特别是自加(++)和自减(--)运算符的使用。
4.掌握数据的输入输出方法,能正确使用各种格式转换符。
5.通过运行简单的C程序,初步了解C程序的特点。
二、实验基本内容
1、学习TurboC工作环境,。
2、输入程序、并进行编译和运行。
了解所用的系统是用什么命令进行编译和连接运行的。
编译和连接后所得到的目标程序的后缀是什么形式的?
并了解如何在运行时向程序变量输入数据。
调试C语言程序上机的步骤。
(1)编辑:
启动TC环境,输入书上例题1.2。
按F10键在主菜单下用光标移动键移动亮条到File/Save处,按回车键屏幕弹出对话框,输入要编辑的程序名称为“m1.c”。
(2)编译与连接主程序:
执行“compile/compiletoOBJ”命令,对源程序进行编译,然后再执行“compile/linkexefile”命令,进行连接,生成可执行文件。
也可直接按下Ctrl+F9键,一次完成编译与连接。
(3)改正程序中的语法错误;
(4)运行程序:
按F10键回主菜单,用光标移动键将亮条移到“Run”菜单选项回车或按下“Ctrl+F9”键,即可运行可执行文件。
(5)用Alt+F5观察输出结果。
3.输入并运行以下程序。
main()
{charc1,c2;
c1=97;c2=98;
printf("%c,%c\n",c1,c2);
}
(1)在此基础上加入以下printf语句,并运行。
printf("%d,%d\n",c1,c2);
(2)将第二行改为以下语句,并运行。
intc1,c2;
(3)将第三行改为以下语句,并运行。
c1=300;c2=400;
分别写出三次运行结果。
4.输入一个程序并编译和运行。
a)清空编辑窗口,输入下面的程序编译运行。
main()
{inta,b,c;
intmax(intx,inty);
printf(“inputa&b:
”);
scanf(“%d,%d”,&a,&b);
c=max(a,b);
printf(“max=%d”,c);
}
intmax(intx,inty)
{intz;
if(x>y)z=x;
elsez=y;
return(z);
}
b)将程序第2行改为:
inta;b;c;
5.输入以下的程序:
main()
{intx=1,y=1,z=1;
y=y+z;
x=x+y;
pritnf(“%d\n”,xy:
x);
printf(“%d\n”,xx++:
y++);
printf(“%d\n”,x);
pritnf(“%d\n”,y);
x=3;
y=z=4;
printf(“%d\n”,(x>=y>=x)?
1:
0);
printf(“%d\n”,z>=y&&y>=x);
}
运行并分析结果。
6.编程题
(1)编程序,用getchar函数读入两个字符给c1、c2,然后分别用putchar函数和printf函数输出这两个字符。
上机运行此程序,比较putchar和printf函数输出字符的特点。
(2)试编写程序,从键盘输入一个大写字母,要求改用小写字母输出。
实验二基本的控制结构程序设计
一、实验目的
本实验涵盖教学内容5、6两章,其目的:
1.了解C语言表示逻辑量的方法(以0代表“假”,以非0代表“真”)。
2.学会正确使用逻辑运算符和逻辑表达式。
3.熟练掌握if语句和switch语句。
4.熟悉掌握用while语句,do-while语句和for语句实现循环的方法。
5.结合程序掌握一些简单的算法。
6.进一步学习调试程序。
二、实验基本内容
1.写出下列程序的运行结果。
(1)#include"stdio.h"
main()
{intx=5,y=3;
charop;
printf("Enteraoperator:
");
scanf("%c",&op);
if(op==´+´)
printf("%d+%d=%d",x,y,x+y);
else
if(op==´-´)
printf("%d-%d=%d",x,y,x-y);
}
(2)#include"stdio.h"
main()
{intmagic=456;
intguess;
scanf("%d",&guess);
if(guess==magic)
printf("RIGHT!
");
else
guess>magic?
printf(“HIGH"):
printf("LOW");
}
(3)main()
{inti,j;
i=j=2;
if(i==1)
if(i==2)
printf("%d",i=i+j);
else
printf("%d",i=i-j);
printf("%d",i);
}
(4)main()
{intx=3;
switch(x)
{case1:
case2:
printf("x<3\n");
case3:
printf("x=3\n");
case4:
case5:
printf("x>3\n");
default:
printf("xunknown\n");
}
}
2.下面的程序中有几处错误,请改正并上机调试出正确的结果
(1)将输入的数字逆序输出。
main()
{inti,num;
scanf("%d",&num);
while(num!
=0);
i=num%10;
printf("%d",i);
num=num/10;
}
printf("/n");
}
(2)从键盘输入6名学生5门成绩,分别统计出每个学生的平均成绩。
main()
{inti,j;
floatg,sum=0,ave;
for(i=0;i<=6;i++);
{for(j=1;j<=5;j++);
scanf("%f",&g);
sum=sum+g;
ave=sum/5;
}
printf("%d%f/n",i,ave);
}
3.根据程序的功能填空,使程序完整。
(1)求两个正数的最大公约数。
main()
{intim,n;
scanf("%d%d",&m,&n);
if(m(1)
while(r!
=0)
(2)
printf("%d",(3));
}
(2)鸡兔共有30只,脚共有90个,计算鸡兔各有多少只。
main()
{intx,y;
(1)
for(x=1;x<=9;x++)
{
y=x–30;
if(
(2))
printf("%d%d",x,y);
}
}
4.阅读下面的程序,写出程序的运行结果并上机验证。
(1)main()
{inti,j=4;
for(i=j;i<=2*j;i++)
switch(i/j)
{case0:
case1:
printf("*");break;
case2:
printf("#");
}
}
(2)当输入为"qwert?
"时,它们的执行结果各是什么?
#include"stdio.h"
main()
{charc;
c=getchar();
while(c!
=´?
´)
{putchar(c);
c=getchar();
}
}
(3)#include"stdio.h"
main()
{charc;
while((c=getchar())!
=´?
´)
putchar(++c);
}
5.编程题:
(1)给学生写评语,若学生成绩在60~69分,则打印“及格”,70~89分打印“良好”,90~10