《C语言程序设计》讲稿.doc
- 文档编号:4817686
- 上传时间:2023-05-07
- 格式:DOC
- 页数:118
- 大小:537.50KB
《C语言程序设计》讲稿.doc
《《C语言程序设计》讲稿.doc》由会员分享,可在线阅读,更多相关《《C语言程序设计》讲稿.doc(118页珍藏版)》请在冰点文库上搜索。
《C语言程序设计》讲稿
目录
第一讲C语言概述 1
第二讲C语言程序介绍 2
第三讲算法 8
第四讲数据类型
(1) 20
第五讲数据类型
(2) 21
第六讲运算符和表达式
(1) 22
第七讲运算符和表达式
(2) 23
第八讲输入输出函数及顺序结构 24
第九讲选择结构程序设计
(1) 25
第十讲选择结构程序设计
(2) 26
第十一讲循环结构
(1) 27
第十二讲循环结构
(2) 28
第十三讲习题课 29
第十四讲一维数组的定义和使用 29
第十五讲二维数组 30
第十六讲字符数组和字符串 31
第十七讲函数
(1) 32
第十八讲函数
(2) 33
第十九讲习题课&文件 34
第二十讲结构体和共用体 35
第二十一讲C语言屏幕操作函数 36
第二十二讲C语言实现图形动画效果 37
第一讲C语言概述
学时:
2学时
授课形式:
多媒体讲解+实例程序演示
教学目标:
对C程序有一个初步的认识;了解C语言的发展;掌握C语言的特点。
主要内容及时间安排(课堂90分钟,80分钟讲课,10分钟总结):
(1)C语言程序设计课程介绍:
包括课程标准、课堂要求、学习方法等(20分钟);
(2)实例演示+编译环境简介:
4个实例(包括科学计算、数据排序查找、小型应用系统、图形动画效果),每个实例使用一种编译环境,在观看实例效果的同时简单了解C语言编译运行环境(20分钟);
(3)C语言发展简史(包括计算机语言的进化、C语言的发展等)(10分钟);
(4)C语言特点介绍:
包括与其他语言相比的优点、简单介绍数据类型、关键字、流控结构等(30分钟);
(5)总结本节课程的主要内容,布置课后练习题。
(10分钟);
重点:
C语言特点中的数据类型、关键字和流控语句简介
教学内容细节:
具体内容参加幻灯片。
第二讲C语言程序介绍
学时:
2学时
授课形式:
板书+多媒体+实例程序演示
教学目标:
了解C语言的语法及结构;掌握C语言的编写流程;熟悉C语言的编译环境VC++6.0。
主要内容及时间安排(课堂90分钟,80分钟讲课,5分钟复习,5分钟总结):
(1)以提问的方式复习上节课的内容(5分钟);
(2)通过实例编写简单程序(先用多媒体展示第一个实例程序,要求学生了解一般C程序的编写流程,然后在编译环境演示程序执行过程,总结C语言程序的基本结构和语法要求)(15分钟);
(3)通过实例演示程序的运算功能(先用多媒体展示编写程序,一一讲解给学生,要求学生具有变量需要先定义的理念,然后在编译环境进行实例程序演示,掌握具有输入函数的C语言程序的运行过程)(15分钟);
(4)通过上述实例,利用板式总结C语言的编写和编译过程(借助VC++6.0来展示C语言的编写和执行过程)(10分钟);
(5)C语言结构特点总结(C语言由函数构成、书写格式自由、输入输出由函数实现、语句结束要有分号、main函数是函数开始和结束之处等)(20分钟);
(6)C语言上机编译环境介绍(主要介绍TC、VC++、Rarnu_CV1.0三个编译环境,主推Rarnu_CV1.0编译环境)(20分钟);
(7)总结本节课程的主要内容并布置课后练习题(5分钟);
重点:
C语言的程序结构、C语言语法细节、C语言编译过程、C语言运行环境等;
难点:
C语言语法细节和程序结构。
教学内容细节:
一、通过提问的方式复习上节课程的主要内容。
二、实例演示
(1)实例1-1简单输出:
#include
main()/*程序从函数main开始执行*/
{
/*在屏幕上输出引号内内容*/
printf("Iamaprogrammer,IlikeC!
");
}/*函数main结束*/
程序说明:
lmain函数表示主函数,每个程序必须有且只能有一个main函数,函数体(功能语句)放在{}内。
lprintf是C语言的输出函数,它的作用是将“”中的内容原样输出。
l其中“\n”是换行符。
l以/*和*/括起来的是注释,程序运行期间是不执行的只是增加程序的可读性。
(2)实例1-2简单计算:
/*求两个数的和*/
#include
main()/*主函数*/
{
inta,b,sum;/*定义局部变量*/
scanf("%d,%d",&a,&b);/*输入两个整数值放到a、b变量中*/
sum=a+b;/*将ab的和送入sum中*/
printf("sum=%d",sum);/*输出ab的和sum*/
}
程序说明:
l本实例的功能是实现两个数相加;
lscanf函数的作用是输入两个整数;
l具有变量定义的C语言函数的书写顺序应该是:
先写预处理命令,然后是函数名;然后是函数体,函数体中应先写变量定义,在写功能语句。
l为了增加程序的可读性应适当加上注释,和printf提示。
三、C语言的编写流程
四、C语言结构特点总结
(1)一个C程序可以由多个函数构成,但是只能有一个main函数,程序从main函数开始,然后通过函数调用完成部分功能,最后以main函数结束;
(2)主函数或子函数的函数体必须用一对{}括起来,函数体中主要是程序的功能语句,这种功能语句由两部分组成:
声明部分和执行部分;
(3)每一条语句由分号结束,程序书写格式自由,一行可以写多句,一句可以写多行,但分行时注意不能将字符串整体分开;
(4)C语言大小写敏感,大小写不能混用;一般程序语句用小写字母,符号常量用大写;
程序要有适当的注释语句,提高程序的可读性,注意注释语句不能嵌套;
(5)C语言中的变量必须先定义后使用;
(6)#include是预处理命令,用于将<>或””中包括的文件中的内容读到命令所在处;每个include的后面只能跟一个文件,如果想将多个文件包含到指定位置,可以通过多个include实现。
五、优秀的程序员应具备的基本素质
(1)具有良好的编程习惯
(2)使用TAB缩进
(3){}对齐
(4)有足够的注释
(5)有合适的空行
六、上机环境使用介绍
重点介绍上机环境VC++6.0的使用方法,包括:
程序编辑、程序编译、程序改错、程序保存、程序运行等。
第三讲算法
学时:
2学时
授课形式:
板书+多媒体讲解
教学目标:
掌握算法的概念、掌握典型算法的设计、熟练掌握算法表示方法中程序流程图和N-S图。
主要内容及时间安排(课堂90分钟,80分钟讲课,5分钟复习,5分钟总结):
(1)复习上节课的主要知识点(5分钟);
(2)算法和程序的关系(5分钟);
(3)算法的概念及算法优劣比较举例(什么是算法,连加算法优劣比较、算法的分类)(10分钟);
(4)简单算法举例(设计5个例子,从易到难)(40分钟);
(5)算法的特性(有穷性、确定性、有零个或多个输入、有一个或多个输出、有效性)(10分钟);
(6)算法的表示方法(重点介绍流程图和N-S图)(10分钟);
(7)结构化程序设计方法(简单介绍结构化程序设计方法的基本思路)(5分钟);
(8)总结和布置课后练习题(课后题2.4、2.5,下一节讲解数据类型相关知识)(5分钟)
重点:
算法的概念、算法的特性、设计算法的意义、算法的表示方法
难点:
算法的表示方法
教学内容细节:
一、以提问的方式复习上节课的主要知识点。
二、算法和程序的关系
程序=数据结构+算法
数据结构——对数据的描述;算法——对操作的描述。
简单举例进行说明。
三、算法概念及算法优劣比较
算法:
解决问题的步骤。
不是只有数值运算问题才有算法,好多非数值运算问题也是有算法的。
数值运算问题的算法主要是求数值的结,比如求连加和,非数值算法主要应用在事务管理领域(图书检索、人事管理等)。
在进行数值运算或解决非数值算法时有时需要考虑算法的优劣,比如连加和,可以从1一直加到100,也可以采用首尾相加,在相乘的形式。
当然所用的步骤是不同的。
对于数学中的一些常用算法,比如求绝对值,求平方根,等等经常用到,人们就把它们写成程序模块的形式,用户什么时候需要就可以进行调用了,非常方便,常用的数值运算函数都包含在math.h文件中。
例3-1:
计算输入整数的平方根,如果输入的是负数,则先求它的绝对值,在求平方根:
#include
#include
voidmain()
{
inta;
doubles;
printf("inputthea:
");
scanf("%d",&a);
a=fabs(a);
/*如果a是负数,求a的绝对值,再放到a中,fabs是求绝对值的函数,是将小括号中的数的绝对值求出来*/
s=sqrt(a);/*sqrt为求平方根函数*/
printf("%dthesqrt=%f",a,s);
}
四、算法举例(将算法的各种表示方法放到算法举例中,学生接受起来效果会好一些)
介绍几个典型算法:
每一个算法都有多种描述方式,下面主要介绍自然语言表示法、流程图表示法、N-S图表示法。
流程图的基本符号及含义:
起止框
输入输出框
处理框
判断框
流程线
或
连接点
(1)计算1*2*3*4*5
自然语言表示法
繁琐的算法将第二个数与第一个数相乘,得到的积与第三个数相乘,依此方法一直乘到5。
当要进行连乘的数比较多时,这种方法显然不适用。
改进的算法开辟两个空间p和i,一个放计算之后的积,一个放被乘数,上面的算法进行改造后如下:
(S1表示第一步,S2表示第二步,依此类推)
S1:
1=>p,2=>i
S2:
计算p*i的积,结果仍然放在p中,即p*i=>p
S3:
i的值增1,即i+1=>i
S4:
如果i没有超过5,则继续执行S2、S3、S5,否则,算法结束,p中的数据就是连乘积。
开始
1=>p,2=>i
P*i=>p
i+1=>i
结束
i<=5
N
Y
流程图表示法:
N-S图表示法:
1=>p,2=>i
p*i=>p
i+1=>i
直到i>5
输出p
习题:
计算1+3+5+7+9的和,用流程图和N-S图表示此算法。
(2)有50个学生,输出80分以上的学生学号和成绩
为了表示方便,用n表示学生学号,ni表示第i个学生学号,用g表示学生成绩,gi表示第i个学生成绩,则算法如下:
自然语言表示法:
S1:
1=>i
S2:
如果gi>80,则输出ni和gi,否则不输出;
S3:
i+1=>I
S4:
如果i<=50,返回到S2,继续执行S2、S3、S4;否则,算法结束。
N-S图表示法:
1=>i
gi>=80
i+1=>i
输出nigi
直到i>50
N
Y
流程图表示法:
开始
1=>i
i+1=>i
结束
gi>=80
N
Y
输出nigi
i>50
N
Y
习题:
有50个学生,找出50个学生中分数为90的学生学号。
用流程图和N-S表示此算法。
(3)判断某一年份是否是闰年
判断某一年份是闰年的条件是:
(1)能被4整除,但是不能被100整除,则这一年份是闰年;
(2)能被100整除,又能被400整除的,则这一年份是闰年;其他的年份都不是闰年,假设用一个空间y来存放被校验的年份,则算法描述如下:
自然语言表示法:
S1:
输入年份=>y
S2:
若y能被4整除,但不能被100整除,则输出y是闰年,算法结束;否则,执行S3;
S3:
若y能被100整除,也能被400整除,则输出y是闰年,算法结束;否则,执行S4;
S4:
输出y不是闰年,算法结束。
流程图表示法:
开始
结束
Y
y不能被
4整除
输出y
是闰年
y不能被
100整除
N
Y
N
Y
输出y
是闰年
输出y
不是闰年
y不能被
400整除
输出y
不是闰年
N
输入年份=>y
N-S图表示法:
输入年份=>y
y/4的余数为0
输出y不是闰年
输出y不是闰年
N
Y
N
Y
y/100余数不为0
N
Y
y/400余数不为0
输出y是闰年
输出y是闰年
习题:
输出某一年份段内(比如1000-3000之间,包括1000和3000)的所有闰年。
(4)求一个数列的值
1-1/2+1/3-1/4+1/5+……+1/99-1/100
注意数列的规律,分子都是1,分母是从1开始,每次递增1,一直到100,第一项符号位正,第二位符号位负,依此规律交替正负,首先必须开辟两个空间,一个为sum放计算结果,然后是i,每次被加数的分母;其次为了表示符号位交替变化,在开辟一个空间t存放符号,如果是正号则t为1,符号t为-1。
算法表示如下:
自然语言表示法:
S1:
0.0=>sum,1.0=>i;1=>t;
S2:
t*1/i+sum=>sum
S3:
-t=>t;i+1=>i
S4:
如果i<=100,则返回S2,继续执行S2、S3、S4,否则,算法结束,sum中的值就是所求。
N-S图表示法:
流程图表示法:
0.0=>sum,1.0=>i,1=t
t*1/i+sum=>sum
-t=>t,i+1=>i
直到i>100
输出sum
开始
0.0=>sum,1.0=>i,1=>t
t*1/i+sum=>sum
-t=>t,i+1=>i
结束
i<=100
N
Y
习题:
计算1,1/2,2/3,3/5,5/8,8/13……这个数列前20项的和。
(5)判断一个大于3的数是不是素数
一个数是不是素数主要看它除了1和它本身之外不能被其他任何整数整除,则它是素数,否则就不是素数,首先需要开辟一个空间n存放待判断的数,其次开辟一个除数的空间i(i从2开始),利用n除以这个i,看能否整除,具体算法如下:
自然语言表示法:
S1:
输入待判断的数=>n
S2:
2=>i
S4:
n除以i,得余数r
S5:
如果r不为0,则i+1=>i,否则,输出n不是素数,算法结束
S6:
如果i 考虑是否非要做到i=n-1,是不是可以做到i<=sqrt(n)。 流程图表示法: (改进) 开始 0=>w,2=>i n/i的余数=>r 结束 r=0? Y N 输入待判断数=>n 输出n不是素数 W=0和 i<= i+1=>i N Y 输出n是素数 1=>w N w=0? 流程图表示法: 开始 2=>i n/i的余数=>r 结束 r=0? Y N 输入待判断数=>n 输出n不是素数 i<= i+1=>i N Y 输出n是素数 N-S图表示法: 输入待判断数=>n n/i的余数=>r r=0 1=>w 输出n是素数 0=>w,2=>i i+1=>i 直到i>或w=1 Y N w=0 Y N 输出n不是素数 习题: 输出100-200之间的所有素数。 五、总结三种程序流程结构(顺序、选择和循环,给出图形表示) 循环结构 N p A Y p A B 选择结构 Y N A B 顺序结构 通过上面几个例子,我们可以看到,算法在执行的过程中基本只有三种模式, (1)从上到下依次执行下来,中间没有任何分叉, (2)在执行过程中,根据条件成立与否产生了不同的操作;(3)当某一条件成立时,反复做相同的操作。 这就是我们结构化程序设计的三种基本流控结构: 顺序,分支和循环,下面给出这三种基本流控结构的流程图和N-S图表示。 流程图表示方法: N-S表示方法: 循环体 当p成立 循环体 直到p成立 循环结构 选择结构 p N Y A A B 顺序结构 六、算法的特性 算法共有五个特性: 有穷性、确定性、有零个或多个输入、有一个或多个输出、有效性; 有穷性: 一个算法的步骤必须是有限的; 确定性: 算法中的每个步骤必须是确定的,不能是含糊不清的,不能有歧义; 输入: 算法运行时有时需要外部输入的信息; 输出: 算法的最终目的是求解和输出; 有效性: 算法的每个步骤都能有效的执行,并得到确定的结果。 七、结构化程序设计思想 结构化程序设计强调的是程序设计风格和程序结构的规范化,提倡清晰的结构,编程的基本要求是“清晰第一、效率第二”。 结构化程序设计风格需要经过以下几个步骤进行: (1)自顶向下 (2)逐步细化 (3)模块化设计 (4)结构化编码(利用现有的流控语句进行编码设计) 八、总结和布置课后练习题(5分钟) 第四讲数据类型 (1) 学时: 2学时 授课形式: 板书+多媒体讲解+实例程序演示 教学目标: 掌握各种数据类型的关键字,掌握各种数据类型在计算机中所占的存储空间,常量及变量的定义形式,针对各种数据类型printf的格式控制输出。 主要内容及时间安排(课堂90分钟,80分钟讲课,5分钟复习,5分钟总结): (1)以提问的方式复习上节课的主要知识点(5分钟); (2)C语言的各种数据类型简介(基本类型和构造类型,各种数据类型的关键字及所占字节等)(10分钟); (3)针对不同格式的printf输出格式介绍及举例(printf格式介绍,各种类型格式控制符介绍,以例子说明)(20分钟); (4)常量(包括整型常量、实型常量、字符型常量、符号常量、举例)(20分钟) (5)整型变量的概念及举例(整型变量的定义及举例)(20分钟) (6)课堂练习(针对所讲知识进行相关习题练习)(10分钟) (7)总结及新一讲内容提要(下一讲实型变量、字符型变量、指针变量的定义和使用)(5分钟) 重点: C语言各种数据类型的关键字、各种类型的常量表示法、整型变量的定义和操作等; 难点: 整型变量的表示范围。 教学内容细节: 一、C语言各种数据类型介绍 数据类型 基本类型 构造类型 指针类型 空类型 整型 实型 字符型 长整型 整型、短整型 无符号整型 单精度 双精度 数组 结构体 共用体 枚举型 各种数据类型的关键字,及在计算机内存中所占大小(以各种不同的编译环境为例) 类型名 关键字 所占字节(B) TC Rarnu_c VC++ 整型 int 2 2 4 短整型 short[int] 2 2 2 长整形 long[int] 4 4 4 无符号整型 unsignedint 2 2 4 无符号长整形 unsignedlong 4 4 4 无符号短整型 unsignedshort 2 2 2 单精度 float 4 4 4 双精度 double 8 8 8 字符型 char 1 1 1 指针类型 * 2 4 4 二、以printf输出各种数据类型 printf基本格式说明 printf(格式控制,输出表列); 格式控制: 用双引号括起来的字符串,这个字符串包括两部分,格式说明和普通字符,格式说明以%开头。 输出表列: 与格式说明对应的输出表列。 在格式控制符中,除了格式说明去后边对应输出表列之外其他字符原样原位置输出,输出表列为带输出的内容。 比如: printf(“abcd”);/*输出abcd字符串*/ intx=8,y=9; printf(“abcd%defg%d”,x,y);/*输出abcd8efg9*/ 具体格式说明符有: %d/*输出短整型和整数*/ %o/*以八进制无符号形式输出整数*/ %x或X/*以十六进制无符号形式输出整数*/ %u/*以无符号十进制形式输出整数*/ 比如 inta=-1; printf(“%d,%u,%o,%x\n”,a,a,a,a); 输出内容分别是: -1,65535,177777,ffff 所以原反补码的含义大家一定要清楚,对为什么出现这样的情况加以分析。 对于其他的数据类型也要采取不同的输出格式: %f/*以单精度形式输出实数*/ %lf/*以双精度形式输出实数*/ %c/*以字符形式输出,只输出一个字符*/ 分析: inta=65; charc=’B’; printf(“%d,%d,%c,%c\n”,a,c,a,c); 输出结果: 65,66,A,B 当整数不超过字符型的表示范围时,整数可以以字符型的形式输出,输出的是它对应的ASCII码,字符型也可以以整数的形式输出,输出的是它ASCII码对应的值。 单精度或双精度不能利用字符型或整型格式输出,否则会产生错误结果(语法不会出错,但结果意想不到)。 三、各种数据类型常量 1.整型常量 (1)十进制整型常量 (2)八进制整型常量(以0开头) (3)十六进制整型常量(以0x开头) (4)后缀为u和U则表示无符号整型,后缀为L或l,表示长整型。 如果将一个带符号数后边加了u,则将其转化为补码按无符号数赋给相应变量。 2.实型常量 (1)十进制小数形式 (2)科学计数法: XeY——e前必须有数字,e后必须为整数。 3.字符型常量 单引号括起来的为字符常量,转义字符也可以作为一个字符。 4.字符串型常量 双引号括起来的为字符串常量,字符串常量系统默认会在最后加一个‘\0’。 比较‘a’和“a”在内存中的状态。 5.符号型常量 符号型常量往往是利用宏定义实现的,宏定义属于预处理范畴,与文件包含命令相同。 #defineX12 一般放在程序开始,作用是定义一个符号为常量,在程序运行过程中不允许改变。 四、整型变量的概念和举例 (1)标示符的命名规则: 由字母数字下划线,开头不能使数字。 例: 以下合法的用户标识符是() Aa1B3erC_a#Dif (2)各种类型变量的定义: 各种变量的定义方法为: 类型名变量名列表; /*如果变量名多余1个,用,分隔*/ 整型变量的定义方法: inta; inta,b; inta,b,c=12; inta=12,b=12,c=12;不能写成inta=b=c=12; 可以在变量定义时给变量赋初值。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C语言程序设计 语言程序设计 讲稿