C语言程序设计讲稿.docx
- 文档编号:13090480
- 上传时间:2023-06-11
- 格式:DOCX
- 页数:104
- 大小:95.44KB
C语言程序设计讲稿.docx
《C语言程序设计讲稿.docx》由会员分享,可在线阅读,更多相关《C语言程序设计讲稿.docx(104页珍藏版)》请在冰点文库上搜索。
C语言程序设计讲稿
《C语言程序设计》讲稿
第一讲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结束*/
程序说明:
●main函数表示主函数,每个程序必须有且只能有一个main函数,函数体(功能语句)放在{}内。
●printf是C语言的输出函数,它的作用是将“”中的内容原样输出。
●其中“\n”是换行符。
●以/*和*/括起来的是注释,程序运行期间是不执行的只是增加程序的可读性。
(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*/
}
程序说明:
●本实例的功能是实现两个数相加;
●scanf函数的作用是输入两个整数;
●具有变量定义的C语言函数的书写顺序应该是:
先写预处理命令,然后是函数名;然后是函数体,函数体中应先写变量定义,在写功能语句。
●为了增加程序的可读性应适当加上注释,和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; 可以在变量定义时给变量赋初值。 第五讲数据类型 (2) 学时: 2学时 授课形式: 板书+多媒体讲解+实例程序演示 主要内容及时间安排(课堂90分钟,80分钟讲课,5分钟复习,5分钟总结): (1)以提问的方式复习上节课的主要内容(5分钟); (2)实型变量(定义方法、表示范围、使用举例)(15分钟); (3)字符型变量(定义方法、表示范围、使用举例)(15分钟); (4)指针型变量(含义、定义方法、使用举例)(15分钟); (5)各种数据类型间的混合运算(类型间的转化、强制类型转化方法、举例)(20分钟); (6)课堂习题(15分钟); (7)总结及下一讲知识提要(运算符和表达式)(5分钟)。 重点: 实型变量的定义方法、表示范围;字符型变量的定义方法、表示范围;指针和其他类型变量的配合使用;数据类型间混合运算时的转化; 难点: 指针和其他数据类型的配合使用,数据间的转化。 教学内容细节: 一、实型(浮点型)变量 浮点型数据在计算机内存中的存储状态分为三部分: 数符、小数部分、指数部分。 C语言的编译环境不同,则给各个部分分配的位数不同,一般情况下,数符和小数部分分配24位,指数部分非配8位。 数符 小数部分 指数部分 24位 8位 + .314159 1 24位 8位 比如: 表示3.14159 浮点型变量定义的类型包括: float、double、longdouble 举例说明浮点型数据是有误差的: #include voidmain() { floata,b; a=123456.789e5; b=a+20; printf("%f\n",b); } 如果将float改为double则结果不同。 二、字符型变量 字符型常量是以单引号括起来的单个字符。 字符变量的定义使用的是关键字char chara,b; a=’a’; b=97; 整数和字符型可以互相赋值。 一般编译系统默认字符型为signed类型,表示-128—127之间的数字对应的字符,如果想表示1
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 讲稿