收藏 分享(赏)

《C语言程序设计》讲稿.doc

上传人:dreamzhangning 文档编号:4219263 上传时间:2018-12-16 格式:DOC 页数:120 大小:487.50KB
下载 相关 举报
《C语言程序设计》讲稿.doc_第1页
第1页 / 共120页
《C语言程序设计》讲稿.doc_第2页
第2页 / 共120页
《C语言程序设计》讲稿.doc_第3页
第3页 / 共120页
《C语言程序设计》讲稿.doc_第4页
第4页 / 共120页
《C语言程序设计》讲稿.doc_第5页
第5页 / 共120页
点击查看更多>>
资源描述

1、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第十九讲 习题课 /

2、*函数 main 结束*/程序说明: main 函数表示主函数,每个程序必须有且只能有一个4main 函数,函数体(功能语句)放在内。 printf 是 C 语言的输出函数,它的作用是将“”中的内容原样输出。 其中“n”是换行符。 以/*和*/括起来的是注释,程序运行期间是不执行的只是增加程序的可读性。(2) 实例 1-2 简单计算:/*求两个数的和*/ #include /*包含文件*/ main() /*主函数*/ int a,b,sum; /*定义局部变量*/ scanf(“%d,%d“,/*输入两个整数值放到 a、b变量中*/ sum=a+b; /*将 ab 的和送入 sum中*/ p

3、rintf(“sum=%d“,sum); /*输出 ab 的和 sum*/ 程序说明: 本实例的功能是实现两个数相加; scanf函数的作用是输入两个整数; 具有变量定义的 C 语言函数的书写顺序应该是:先写预处理命令,然后是函数名;然后是函数体,函数体5中应先写变量定义,在写功能语句。 为了增加程序的可读性应适当加上注释,和 printf 提示。三、C 语言的编写流程四、C 语言结构特点总结(1)一个 C 程序可以由多个函数构成,但是只能有一个 main 函数,程序从 main 函数开始,然后通过函数调用完成部分功能,最后以 main 函数结束;(2)主函数或子函数的函数体必须用一对括起来,

4、函数体中主要是程序的功能语句,这种功能语句由两部分组开 始 编 辑 编 译 连 接 执 行 有 错 ? 结 果 正 确 ? 结 束 有 源 程 序 file.c 目 标 程序file.obj 库 函 数 和其 它 目 标程 序 可 执 行目 标 程序 无 正 确 不 正 确 6成:声明部分和执行部分;(3)每一条语句由分号结束,程序书写格式自由,一行可以写多句,一句可以写多行,但分行时注意不能将字符串整体分开;(4)C 语言大小写敏感,大小写不能混用;一般程序语句用小写字母,符号常量用大写 ;程序要有适当的注释语句,提高程序的可读性,注意注释语句不能嵌套;(5)C 语言中的变量必须先定义后使用

5、;(6)#include 是预处理命令,用于将p,2=iS2:计算 p*i 的积,结果仍然放在 p 中,即 p*i=pS3:i 的值增 1,即 i+1=iS4:如果 i 没有超过 5,则继续执行S2、S3、S5,否则,算法结束,p 中的数据就是连乘积。起止框输入输出框处理框判断框流程线或连接点开始1=p,2=iP*i=pi+1=i结束ip,2=ip*i=pi+1=i直到 i5输出 p11习题:计算 1+3+5+7+9 的和,用流程图和N-S 图表示此算法。(2)有 50 个学生,输出 80 分以上的学生学号和成绩为了表示方便,用 n 表示学生学号,ni 表示第i 个学生学号,用 g 表示学生成

6、绩,gi 表示第i 个学生成绩,则算法如下:自然语言表示法:S1:1=iS2:如果 gi80,则输出 ni和 gi,否则不输出;S3:i+1=IS4:如果 iii+1=i结束gi=80NY输出 nigii50NYN-S 图表示法:1=igi=80i+1=i输出 nigi直到 i50NY12习题:有 50 个学生,找出 50 个学生中分数为 90 的学生学号。用流程图和N-S 表示此算法。(3)判断某一年份是否是闰年判断某一年份是闰年的条件是:(1)能被 4 整除,但是不能被100 整除,则这一年份是闰年;(2)能被 100整除,又能被 400 整除的,则这一年份是闰年;其他的年份都不是闰年,假

7、设用一个空间 y 来存放被校验的年份,则算法描述如下:自然语言表示法:S1:输入年份=yS2:若 y 能被 4整除,但不能被 100 整除,则输出 y 是闰年,算法结束;否则,执行 S3;S3:若 y 能被 100 整除,也能被 400 整除,则输出 y 是13闰年,算法结束;否则,执行 S4;S4:输出 y 不是闰年,算法结束。N-S 图表示法:输入年份=yy/4 的余数为0输出 y 不是闰年输出y 不是闰年NYNYy/100 余数不为 0NYy/400 余数不为 0输出 y 是闰年输出y 是闰年流程图表示法:开始结束Yy 不能被4 整除输出 y是闰年y 不能被100 整除NYNY输出 y是

8、闰年 输出 y不是闰年y 不能被400 整除输出 y不是闰年N输入年份=y14习题:输出某一年份段内(比如 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

9、=sum,1.0=i;1=t;S2:t*1/i+sum=sumS3:-t=t;i+1=iS4:如果 isum,1.0=i,1=tt*1/i+sum=sum-t=t,i+1=i结束isum,1.0=i,1=tt*1/i+sum=sum-t=t,i+1=i直到 i100输出 sum15习题:计算 1,1/2,2/3,3/5,5/8,8/13这个数列前20 项的和。(5)判断一个大于 3 的数是不是素数一个数是不是素数主要看它除了 1和它本身之外不能被其他任何整数整除,则它是素数,否则就不是素数,首先需要开辟一个空间n 存放待判断的数,其次开辟一个除数的空间 i(i 从 2 开始) ,利用 n 除以

10、这个 i,看能否整除,具体算法如下:自然语言表示法:S1:输入待判断的数=nS2:2=iS4:n 除以 i,得余数 rS5:如果 r 不为0,则 i+1=i,否则,输出 n 不是素数,算法结束S6:如果 iin/i 的余数=r结束r=0? YN输入待判断数=n输出 n 不是素数iiNY输出 n 是素 数流程图表示法:(改进) 开始0=w,2=in/i 的余数=r结束r=0? YN输入待判断数=n输出 n 不是素数W=0 和iiNY输出 n 是素 数1=wNw=0?N-S 图表示法:输入待判断数=nn/i 的余数=rr=01=w输出 n 是素数0=w,2=ii+1=i直到 i 或 w=1Y Nw

11、=0Y N输出 n 不是素数17习题:输出 100-200 之间的所有素数。五、总结三种程序流程结构(顺序、选择和循环,给出图形表示)通过上面几个例子,我们可以看到,算法在执行的过程中基本只有三种模式, (1)从上到下依次执行下来,中间没有任何分叉, (2)在执行过程中,根据条件成立与否产生了不同的操作;(3)当某一条件成立时,反复做相同的操作。这就是我们结构化程序设计的三种基本流控结构:顺序,分支和循环,下面给出这三种基本流控结构的流程图和 N-S 图表示。流程图表示方法:N-S 表示方法:AB顺序结构pA B选择结构Y N循环结构NpAY选择结构p NYAAB顺序结构循环体当 p 成立循环

12、体直到 p 成立循环结构18六、算法的特性算法共有五个特性:有穷性、确定性、有零个或多个输入、有一个或多个输出、有效性;有穷性:一个算法的步骤必须是有限的;确定性:算法中的每个步骤必须是确定的,不能是含糊不清的,不能有歧义;输入:算法运行时有时需要外部输入的信息;输出:算法的最终目的是求解和输出;有效性:算法的每个步骤都能有效的执行,并得到确定的结果。七、结构化程序设计思想结构化程序设计强调的是程序设计风格和程序结构的规范化,提倡清晰的结构,编程的基本要求是“清晰第一、效率第二” 。结构化程序设计风格需要经过以下几个步骤进行:(1)自顶向下(2)逐步细化(3)模块化设计(4)结构化编码(利用现

13、有的流控语句进行编码设计)八、总结和布置课后练习题(5 分钟)19第四讲 数据类型(1)学时:2 学时授课形式:板书+多媒体讲解+实例程序演示教学目标:掌握各种数据类型的关键字,掌握各种数据类型在计算机中所占的存储空间,常量及变量的定义形式,针对各种数据类型 printf 的格式控制输出。主要内容及时间安排(课堂 90 分钟,80 分钟讲课,5分钟复习,5 分钟总结):(1)以提问的方式复习上节课的主要知识点(5 分钟) ;(2)C 语言的各种数据类型简介(基本类型和构造类型,各种数据类型的关键字及所占字节等) (10 分钟) ;(3)针对不同格式的 printf 输出格式介绍及举例(prin

14、tf 格式介绍,各种类型格式控制符介绍,以例子说明)(20 分钟) ;(4)常量(包括整型常量、实型常量、字符型常量、符号常量、举例) (20 分钟)(5)整型变量的概念及举例(整型变量的定义及举例)(20 分钟)(6)课堂练习(针对所讲知识进行相关习题练习) (10分钟)20(7)总结及新一讲内容提要(下一讲实型变量、字符型变量、指针变量的定义和使用) (5 分钟)重点:C 语言各种数据类型的关键字、各种类型的常量表示法、整型变量的定义和操作等;难点:整型变量的表示范围。教学内容细节:一、C 语言各种数据类型介绍各种数据类型的关键字,及在计算机内存中所占大小(以各种不同的编译环境为例)所占字

15、节(B)类型名 关键字TC Rarnu_c VC+整型 int 2 2 4短整型 short int 2 2 2长整形 long int 4 4 4数据类型基本类型构造类型指针类型空类型整型实型字符型长整型整型、短整型无符号整型单精度双精度数组结构体共用体枚举型21无符号整型 unsigned int 2 2 4无符号长整形 unsigned long 4 4 4无符号短整型 unsigned short 2 2 2单精度 float 4 4 4双精度 double 8 8 8字符型 char 1 1 1指针类型 * 2 4 4二、以 printf 输出各种数据类型printf 基本格式说明p

16、rintf(格式控制,输出表列);格式控制:用双引号括起来的字符串,这个字符串包括两部分,格式说明和普通字符,格式说明以%开头。输出表列:与格式说明对应的输出表列。在格式控制符中,除了格式说明去后边对应输出表列之外其他字符原样原位置输出,输出表列为带输出的内容。比如:printf(“abcd”);/*输出 abcd 字符串*/int x=8,y=9;printf(“abcd%defg%d”,x,y);/*输出 abcd8efg9*/具体格式说明符有:%d /*输出短整型和整数*/%o /*以八进制无符号形式输出整数*/22%x 或 X /*以十六进制无符号形式输出整数*/%u /*以无符号十进

17、制形式输出整数*/比如int a=-1;printf(“%d,%u,%o,%xn”,a,a,a,a);输出内容分别是:-1,65535,177777,ffff所以原反补码的含义大家一定要清楚,对为什么出现这样的情况加以分析。对于其他的数据类型也要采取不同的输出格式:%f /*以单精度形式输出实数*/%lf /*以双精度形式输出实数*/%c /*以字符形式输出,只输出一个字符*/分析:int a=65;char c=B;printf(“%d,%d,%c,%cn”,a,c,a,c);输出结果:65,66,A,B当整数不超过字符型的表示范围时,整数可以以字符型的形式输出,输出的是它对应的 ASCII

18、 码,字符型也可以以整数的形式输出,输出的是它ASCII码对应的值。单精度或双精度不能利用字符型或整型格式输出,否则会产生错误结果(语法不会出错,但结果意想不到) 。23三、各种数据类型常量1.整型常量(1)十进制整型常量(2)八进制整型常量(以 0 开头)(3)十六进制整型常量(以 0x 开头)(4)后缀为 u 和U 则表示无符号整型,后缀为 L 或l,表示长整型。如果将一个带符号数后边加了 u,则将其转化为补码按无符号数赋给相应变量。2.实型常量(1)十进制小数形式(2)科学计数法:XeYe 前必须有数字,e 后必须为整数。3.字符型常量单引号括起来的为字符常量,转义字符也可以作为一个字符

19、。4.字符串型常量双引号括起来的为字符串常量,字符串常量系统默认会在最后加一个0 。比较a和“a”在内存中的状态。5.符号型常量符号型常量往往是利用宏定义实现的,宏定义属于预处理范畴,与文件包含命令相同。24#define X 12一般放在程序开始,作用是定义一个符号为常量,在程序运行过程中不允许改变。四、整型变量的概念和举例(1)标示符的命名规则:由字母数字下划线,开头不能使数字。例:以下合法的用户标识符是()A a1 B 3er C _a# D if(2)各种类型变量的定义:各种变量的定义方法为:类型名 变量名列表;/*如果变量名多余 1 个,用,分隔*/整型变量的定义方法:int a;i

20、nt a,b;int a,b,c=12;int a=12,b=12,c=12;不能写成 int a=b=c=12;可以在变量定义时给变量赋初值。第五讲 数据类型(2)学时:2 学时授课形式:板书+多媒体讲解+实例程序演示25主要内容及时间安排(课堂 90 分钟,80 分钟讲课,5分钟复习,5 分钟总结):(1)以提问的方式复习上节课的主要内容(5 分钟) ;(2)实型变量(定义方法、表示范围、使用举例) (15分钟) ;(3)字符型变量(定义方法、表示范围、使用举例)(15 分钟) ;(4)指针型变量(含义、定义方法、使用举例) (15 分钟) ;(5)各种数据类型间的混合运算(类型间的转化、

21、强制类型转化方法、举例) (20 分钟) ;(6)课堂习题(15 分钟) ;(7)总结及下一讲知识提要(运算符和表达式) (5 分钟) 。重点:实型变量的定义方法、表示范围;字符型变量的定义方法、表示范围;指针和其他类型变量的配合使用;数据类型间混合运算时的转化;难点:指针和其他数据类型的配合使用,数据间的转化。教学内容细节:一、实型(浮点型)变量浮点型数据在计算机内存中的存储状态分为三部分:数26符、小数部分、指数部分。C 语言的编译环境不同,则给各个部分分配的位数不同,一般情况下,数符和小数部分分配 24 位,指数部分非配 8位。比如:表示 3.14159浮点型变量定义的类型包括:floa

22、t、double、long double举例说明浮点型数据是有误差的:#include void main()float a,b;a=123456.789e5;b=a+20;printf(“%fn“,b);数符 小数部分 指数部分24 位 8 位+ .314159 124 位 8 位27如果将 float 改为double 则结果不同。二、字符型变量字符型常量是以单引号括起来的单个字符。字符变量的定义使用的是关键字 charchar a,b;a=a;b=97;整数和字符型可以互相赋值。一般编译系统默认字符型为 signed 类型,表示-128127 之间的数字对应的字符,如果想表示128-25

23、5 之间的数字则字符需定义为unsigned char。三、指针型变量指针型变量往往是和其他变量的定义配合使用,表示不同变量在内存中的地址。指针变量定义是以*为标识符的。比如:int *a,*b;char *c,*d;这时需要注意,在定义中出现的*与程序中出现的*是不同的,定义时出现的*表示变量为指针类型,程序中出现*表示取出地址中的具体数值。*与int c;p=scanf(“%d“,p);printf(“%d,%dn“,c,*p);四、变量赋初值在前面的变量定义时,有时在定义的同时就给变量赋了初值,有的是在定义好后,再利用赋值语句给变量赋初值,不管利用哪种方式,都要注意两点:不能在定义时进行连续赋值;不能将不匹配的数据类型互相赋值,否则会产生错误。错误的:int a=b=c=10;int a=3.56;正确的:int a,b,c;a=b=c=10;五、各类数据类型间混合运算各种数据类型可以进行混合运算,运算结果为一种数据类型,具体规则如下:

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 网络科技 > C/C++资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报