《C语言程序设计》讲稿(共118页)_第1页
《C语言程序设计》讲稿(共118页)_第2页
《C语言程序设计》讲稿(共118页)_第3页
《C语言程序设计》讲稿(共118页)_第4页
《C语言程序设计》讲稿(共118页)_第5页
已阅读5页,还剩115页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、精选优质文档-倾情为你奉上C语言程序设计讲稿专心-专注-专业 目 录第一讲 C语言概述学时:2学时授课形式:多媒体讲解+实例程序演示教学目标:对C程序有一个初步的认识;了解C语言的发展;掌握C语言的特点。主要内容及时间安排(课堂90分钟,80分钟讲课,10分钟总结):(1)C语言程序设计课程介绍:包括课程标准、课堂要求、学习方法等(20分钟);(2)实例演示+编译环境简介:4个实例(包括科学计算、数据排序查找、小型应用系统、图形动画效果),每个实例使用一种编译环境,在观看实例效果的同时简单了解C语言编译运行环境(20分钟);(3)C语言发展简史(包括计算机语言的进化、C语言的发展等)(10分钟

2、);(4)C语言特点介绍:包括与其他语言相比的优点、简单介绍数据类型、关键字、流控结构等(30分钟);(5)总结本节课程的主要内容,布置课后练习题。(10分钟);重点:C语言特点中的数据类型、关键字和流控语句简介教学内容细节:具体内容参加幻灯片。第二讲 C语言程序介绍学时:2学时授课形式:板书+多媒体+实例程序演示教学目标:了解C语言的语法及结构;掌握C语言的编写流程;熟悉C语言的编译环境VC+6.0。主要内容及时间安排(课堂90分钟,80分钟讲课,5分钟复习,5分钟总结):(1)以提问的方式复习上节课的内容(5分钟);(2)通过实例编写简单程序(先用多媒体展示第一个实例程序,要求学生了解一般

3、C程序的编写流程,然后在编译环境演示程序执行过程,总结C语言程序的基本结构和语法要求)(15分钟);(3)通过实例演示程序的运算功能(先用多媒体展示编写程序,一一讲解给学生,要求学生具有变量需要先定义的理念,然后在编译环境进行实例程序演示,掌握具有输入函数的C语言程序的运行过程)(15分钟);(4)通过上述实例,利用板式总结C语言的编写和编译过程(借助VC+6.0来展示C语言的编写和执行过程)(10分钟);(5)C语言结构特点总结(C语言由函数构成、书写格式自由、输入输出由函数实现、语句结束要有分号、main函数是函数开始和结束之处等)(20分钟);(6)C语言上机编译环境介绍(主要介绍TC、

4、VC+、Rarnu_C V1.0三个编译环境,主推Rarnu_C V1.0编译环境)(20分钟);(7)总结本节课程的主要内容并布置课后练习题(5分钟);重点:C语言的程序结构、C语言语法细节、C语言编译过程、C语言运行环境等;难点:C语言语法细节和程序结构。教学内容细节:一、通过提问的方式复习上节课程的主要内容。二、实例演示(1) 实例1-1 简单输出:#include <stdio.h> /*包含文件 */ main() /*程序从函数main开始执行*/ /*在屏幕上输出引号内内容*/ printf("I am a programmer,I like C!"

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

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

7、main函数结束;(2)主函数或子函数的函数体必须用一对括起来,函数体中主要是程序的功能语句,这种功能语句由两部分组成:声明部分和执行部分;(3)每一条语句由分号结束,程序书写格式自由,一行可以写多句,一句可以写多行,但分行时注意不能将字符串整体分开;(4)C语言大小写敏感,大小写不能混用;一般程序语句用小写字母,符号常量用大写 ;程序要有适当的注释语句,提高程序的可读性,注意注释语句不能嵌套;(5)C语言中的变量必须先定义后使用;(6)#include是预处理命令,用于将<>或”中包括的文件中的内容读到命令所在处;每个include的后面只能跟一个文件,如果想将多个文件包含到指定

8、位置,可以通过多个include实现。五、优秀的程序员应具备的基本素质(1)具有良好的编程习惯(2)使用TAB缩进(3)对齐(4)有足够的注释(5)有合适的空行六、上机环境使用介绍重点介绍上机环境VC+6.0的使用方法,包括:程序编辑、程序编译、程序改错、程序保存、程序运行等。第三讲 算法学时:2学时授课形式:板书+多媒体讲解教学目标:掌握算法的概念、掌握典型算法的设计、熟练掌握算法表示方法中程序流程图和N-S图。主要内容及时间安排(课堂90分钟,80分钟讲课,5分钟复习,5分钟总结):(1) 复习上节课的主要知识点(5分钟);(2) 算法和程序的关系(5分钟);(3)算法的概念及算法优劣比较

9、举例(什么是算法,连加算法优劣比较、算法的分类)(10分钟);(4)简单算法举例(设计5个例子,从易到难)(40分钟);(5)算法的特性(有穷性、确定性、有零个或多个输入、有一个或多个输出、有效性)(10分钟);(6)算法的表示方法(重点介绍流程图和N-S图)(10分钟);(7)结构化程序设计方法(简单介绍结构化程序设计方法的基本思路)(5分钟);(8)总结和布置课后练习题(课后题2.4、2.5,下一节讲解数据类型相关知识)(5分钟)重点:算法的概念、算法的特性、设计算法的意义、算法的表示方法难点:算法的表示方法教学内容细节:一、 以提问的方式复习上节课的主要知识点。二、 算法和程序的关系程序

10、=数据结构+算法数据结构对数据的描述;算法对操作的描述。简单举例进行说明。三、算法概念及算法优劣比较算法:解决问题的步骤。不是只有数值运算问题才有算法,好多非数值运算问题也是有算法的。数值运算问题的算法主要是求数值的结,比如求连加和,非数值算法主要应用在事务管理领域(图书检索、人事管理等)。在进行数值运算或解决非数值算法时有时需要考虑算法的优劣,比如连加和,可以从1一直加到100,也可以采用首尾相加,在相乘的形式。当然所用的步骤是不同的。对于数学中的一些常用算法,比如求绝对值,求平方根,等等经常用到,人们就把它们写成程序模块的形式,用户什么时候需要就可以进行调用了,非常方便,常用的数值运算函数

11、都包含在math.h文件中。例3-1:计算输入整数的平方根,如果输入的是负数,则先求它的绝对值,在求平方根:#include <stdio.h>#include <math.h>void main() int a; double s; printf("input the a:"); scanf("%d",&a); a=fabs(a); /*如果a是负数,求a的绝对值,再放到a中,fabs是求绝对值的函数,是将小括号中的数的绝对值求出来*/ s=sqrt(a); /*sqrt为求平方根函数*/ printf("%d

12、 the sqrt=%f",a,s); 四、算法举例(将算法的各种表示方法放到算法举例中,学生接受起来效果会好一些)介绍几个典型算法:每一个算法都有多种描述方式,下面主要介绍自然语言表示法、流程图表示法、N-S图表示法。流程图的基本符号及含义:起止框输入输出框处理框判断框流程线或连接点(1)计算1*2*3*4*5自然语言表示法繁琐的算法 将第二个数与第一个数相乘,得到的积与第三个数相乘,依此方法一直乘到5。当要进行连乘的数比较多时,这种方法显然不适用。改进的算法 开辟两个空间p和i,一个放计算之后的积,一个放被乘数,上面的算法进行改造后如下:(S1表示第一步,S2表示第二步,依此类推

13、)S1:1=>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结束i<=5NY流程图表示法:N-S图表示法:1=>p,2=>ip*i=>pi+1=>i直到i>5输出p习题:计算1+3+5+7+9的和,用流程图和N-S图表示此算法。(2)有50个学生,输出80分以上的学生学号和成绩为了表示方便,用n表示学生学号,ni表示第i个学生

14、学号,用g表示学生成绩,gi表示第i个学生成绩,则算法如下:自然语言表示法:S1:1=>iS2:如果gi>80,则输出ni和gi,否则不输出;S3:i+1=>IS4:如果i<=50,返回到S2,继续执行S2、S3、S4;否则,算法结束。N-S图表示法:1=>igi>=80i+1=>i输出nigi直到i>50NY流程图表示法:开始1=>ii+1=>i结束gi>=80NY输出nigii>50NY习题:有50个学生,找出50个学生中分数为90的学生学号。用流程图和N-S 表示此算法。(3)判断某一年份是否是闰年判断某一年份是闰年

15、的条件是:(1)能被4整除,但是不能被100整除,则这一年份是闰年;(2)能被100整除,又能被400整除的,则这一年份是闰年;其他的年份都不是闰年,假设用一个空间y来存放被校验的年份,则算法描述如下:自然语言表示法:S1:输入年份=>yS2:若y能被4整除,但不能被100整除,则输出y是闰年,算法结束;否则,执行S3;S3:若y能被100整除,也能被400整除,则输出y是闰年,算法结束;否则,执行S4;S4:输出y不是闰年,算法结束。流程图表示法:开始结束Yy不能被4整除输出y是闰年y不能被100整除NYNY输出y是闰年输出y不是闰年y不能被400整除输出y不是闰年N输入年份=>

16、yN-S图表示法:输入年份=>yy/4的余数为0输出y不是闰年输出y不是闰年NYNYy/100余数不为0NYy/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为-

17、1。算法表示如下:自然语言表示法:S1:0.0=>sum,1.0=>i;1=>t;S2:t*1/i+sum=>sumS3:-t=>t;i+1=>iS4:如果i<=100,则返回S2,继续执行S2、S3、S4,否则,算法结束,sum中的值就是所求。N-S图表示法:流程图表示法:0.0=>sum,1.0=>i,1=tt*1/i+sum=>sum-t=>t,i+1=>i直到i>100输出sum开始0.0=>sum,1.0=>i,1=>tt*1/i+sum=>sum-t=>t,i+1=>i

18、结束i<=100NY习题:计算1,1/2,2/3,3/5,5/8,8/13这个数列前20项的和。(5)判断一个大于3的数是不是素数一个数是不是素数主要看它除了1和它本身之外不能被其他任何整数整除,则它是素数,否则就不是素数,首先需要开辟一个空间n存放待判断的数,其次开辟一个除数的空间i(i从2开始),利用n除以这个i,看能否整除,具体算法如下:自然语言表示法:S1:输入待判断的数=>nS2:2=>iS4:n除以i,得余数rS5:如果r不为0,则i+1=>i,否则,输出n不是素数,算法结束S6:如果i<n,则返回S4,否则,输出n是素数,算法结束。考虑是否非要做到i

19、=n-1,是不是可以做到i<=sqrt(n)。流程图表示法:(改进)开始0=>w,2=>in/i的余数=>r结束r=0?YN输入待判断数=>n输出n不是素数W=0和i<=i+1=>iNY输出n是素数1=>wNw=0?流程图表示法:开始2=>in/i的余数=>r结束r=0?YN输入待判断数=>n输出n不是素数i<=i+1=>iNY输出n是素数N-S图表示法:输入待判断数=>nn/i的余数=>rr=01=>w输出n是素数0=>w,2=>ii+1=>i直到i>或w=1YNw=0YN

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

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

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

23、、实型常量、字符型常量、符号常量、举例)(20分钟)(5)整型变量的概念及举例(整型变量的定义及举例)(20分钟)(6)课堂练习(针对所讲知识进行相关习题练习)(10分钟)(7)总结及新一讲内容提要(下一讲实型变量、字符型变量、指针变量的定义和使用)(5分钟)重点:C语言各种数据类型的关键字、各种类型的常量表示法、整型变量的定义和操作等;难点:整型变量的表示范围。教学内容细节:一、C语言各种数据类型介绍数据类型基本类型构造类型指针类型空类型整型实型字符型长整型整型、短整型无符号整型单精度双精度数组结构体共用体枚举型各种数据类型的关键字,及在计算机内存中所占大小(以各种不同的编译环境为例)类型名

24、关键字所占字节(B)TCRarnu_cVC+整型int224短整型short int222长整形long int444无符号整型unsigned int224无符号长整形unsigned long444无符号短整型unsigned short222单精度float444双精度double888字符型char111指针类型*244二、以printf输出各种数据类型printf基本格式说明printf(格式控制,输出表列);格式控制:用双引号括起来的字符串,这个字符串包括两部分,格式说明和普通字符,格式说明以%开头。输出表列:与格式说明对应的输出表列。在格式控制符中,除了格式说明去后边对应输出表列

25、之外其他字符原样原位置输出,输出表列为带输出的内容。比如:printf(“abcd”);/*输出abcd字符串*/int x=8,y=9;printf(“abcd%defg%d”,x,y);/*输出abcd8efg9*/具体格式说明符有:%d /*输出短整型和整数*/%o /*以八进制无符号形式输出整数*/%x或X /*以十六进制无符号形式输出整数*/%u /*以无符号十进制形式输出整数*/比如int a=-1;printf(“%d,%u,%o,%xn”,a,a,a,a);输出内容分别是:-1,65535,ffff所以原反补码的含义大家一定要清楚,对为什么出现这样的情况加以分析。对于其他的数据

26、类型也要采取不同的输出格式:%f /*以单精度形式输出实数*/%lf /*以双精度形式输出实数*/%c /*以字符形式输出,只输出一个字符*/分析:int a=65;char c=B;printf(“%d,%d,%c,%cn”,a,c,a,c);输出结果:65,66,A,B当整数不超过字符型的表示范围时,整数可以以字符型的形式输出,输出的是它对应的ASCII码,字符型也可以以整数的形式输出,输出的是它ASCII码对应的值。单精度或双精度不能利用字符型或整型格式输出,否则会产生错误结果(语法不会出错,但结果意想不到)。三、各种数据类型常量1.整型常量(1)十进制整型常量(2)八进制整型常量(以0

27、开头)(3)十六进制整型常量(以0x开头)(4)后缀为u和U则表示无符号整型,后缀为L或l,表示长整型。如果将一个带符号数后边加了u,则将其转化为补码按无符号数赋给相应变量。2.实型常量(1)十进制小数形式(2)科学计数法:XeYe前必须有数字,e后必须为整数。3.字符型常量单引号括起来的为字符常量,转义字符也可以作为一个字符。4.字符串型常量双引号括起来的为字符串常量,字符串常量系统默认会在最后加一个0。比较a和“a”在内存中的状态。5.符号型常量符号型常量往往是利用宏定义实现的,宏定义属于预处理范畴,与文件包含命令相同。#define X 12一般放在程序开始,作用是定义一个符号为常量,在

28、程序运行过程中不允许改变。四、整型变量的概念和举例(1)标示符的命名规则:由字母数字下划线,开头不能使数字。例:以下合法的用户标识符是()A a1 B 3er C _a# D if(2)各种类型变量的定义:各种变量的定义方法为:类型名 变量名列表;/*如果变量名多余1个,用,分隔*/整型变量的定义方法:int a;int a,b;int a,b,c=12;int a=12,b=12,c=12;不能写成 int a=b=c=12;可以在变量定义时给变量赋初值。第五讲 数据类型(2)学时:2学时授课形式:板书+多媒体讲解+实例程序演示主要内容及时间安排(课堂90分钟,80分钟讲课,5分钟复习,5分

29、钟总结):(1)以提问的方式复习上节课的主要内容(5分钟);(2)实型变量(定义方法、表示范围、使用举例)(15分钟);(3)字符型变量(定义方法、表示范围、使用举例)(15分钟);(4)指针型变量(含义、定义方法、使用举例)(15分钟);(5)各种数据类型间的混合运算(类型间的转化、强制类型转化方法、举例)(20分钟);(6)课堂习题(15分钟);(7)总结及下一讲知识提要(运算符和表达式)(5分钟)。重点:实型变量的定义方法、表示范围;字符型变量的定义方法、表示范围;指针和其他类型变量的配合使用;数据类型间混合运算时的转化;难点:指针和其他数据类型的配合使用,数据间的转化。 教学内容细节:

30、一、实型(浮点型)变量浮点型数据在计算机内存中的存储状态分为三部分:数符、小数部分、指数部分。C语言的编译环境不同,则给各个部分分配的位数不同,一般情况下,数符和小数部分分配24位,指数部分非配8位。数符小数部分指数部分24位8位+.124位8位比如:表示3.14159浮点型变量定义的类型包括:float、double、long double举例说明浮点型数据是有误差的:#include <stdio.h>void main()float a,b;a=.789e5;b=a+20;printf("%fn",b);如果将float改为double则结果不同。二、字符

31、型变量字符型常量是以单引号括起来的单个字符。字符变量的定义使用的是关键字charchar a,b;a=a;b=97;整数和字符型可以互相赋值。一般编译系统默认字符型为signed类型,表示-128127之间的数字对应的字符,如果想表示128-255之间的数字则字符需定义为unsigned char。三、指针型变量指针型变量往往是和其他变量的定义配合使用,表示不同变量在内存中的地址。指针变量定义是以*为标识符的。比如:int *a,*b;char *c,*d;这时需要注意,在定义中出现的*与程序中出现的*是不同的,定义时出现的*表示变量为指针类型,程序中出现*表示取出地址中的具体数值。*与&am

32、p;地址运算互逆。#include <stdio.h>void main()int *p;int c;p=&c;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;五、各类数据类型间混合运算各种数据

33、类型可以进行混合运算,运算结果为一种数据类型,具体规则如下:doublefloatlongunsignedintchar、short低高横向的是必须转化的,比如float型数据在进行运算时,其运算记过统统要转化为double类型,不管参与运算的是否有double类型;char或short类型的数据在进行运算时,结果都会转化成int型。纵向箭头表示对象类型不同时的转换方向,当参与运算的对象数据类型不同时,采用低级向高级转化的规律。比如int型和long型进行运算时,将int转化为long类型再进行运算。比如:10+a+1.5-8765.4321*b结果为double类型,转化由系统自动完成,无需

34、用户操作。如果在计算过程中不想按照上述转化规则进行转化,则可以利用强制类型转换。具体方式为:(强制类型名)变量或常量例如:#include <stdio.h>void main()int a;float b=3.67;a=(int)3.67;printf("%d,%fn",a,b);六、总结及课堂练习课堂习题:3.2,3.3作业:3.5,3.6,3.8第六讲 运算符和表达式(1)学时:2学时授课形式:板书+多媒体讲解+实例程序演示主要内容及时间安排(课堂90分钟,80分钟讲课,5分钟复习,5分钟总结):(1)以提问的方式复习上节课的主要内容(5分钟);(2)C语

35、言运算符简介(各种运算符作用介绍、优先级介绍、结合性介绍)(15分钟);(3)算术运算符和表达式(算术运算符的计算方法、优先级等)(10分钟);(4)自加自减运算及举例(15分钟)(5)赋值运算符和赋值表达式(简单赋值和符合赋值)(10分钟)(6)逗号运算符和逗号表达式(与自加自减配合运算)(10分钟)(7)指针运算符(10)(8)课堂习题(所讲运算符的使用和运算方法)(10分钟)(9)总结及下一节内容提要(关系运算符、逻辑运算符、位运算符、条件运算符等)(5分钟)重点:C语言算术表达式的求值、算术运算符的优先级及运算方法、逗号运算符的运算方法、指针运算符的运算方法、自减自加的运算方法;难点:

36、自加自减运算,各种运算符的结合性。教学内容细节:一、C语言中各种运算符1.算术运算符算术运算符包括:+,-,*,/,%,它们都属于双目运算,结合性自左至右。前三种运算都很简单,对于/,如果操作数为整数,则结果也为整数,%运算的操作数必须为整数,其含义是去两个整数相除的余数。2.自加自减运算符自加自减运算符包括+和-,它属于单目运算,结合性自右至左,操作数必须为整型的变量。3.赋值运算符赋值运算符包括简单赋值运算符=和复合的赋值运算,复合的赋值运算符是其他运算符和简单赋值运算符组合在一起构成的,一般式位运算符和算术运算符,比如+=,%=,<<=,>>=等。它属于双目运算,

37、结合性自右至左。4.逗号运算符逗号运算符,顺序求值运算,结合性自左至右。5.位运算符位运算符包括<<,>>,,小弯弯,&,|,按位运算,双目运算符,其中按位取反为单目运算符(结合性自右至左),双目位运算结合性自左至右。6.指针运算符指针运算符*,取地址运算符&,单目运算符,结合性自右至左。7.逻辑运算符逻辑运算符包括:!,&&,|,其中!为单目运算符结合性自右至左,&&和|为双目运算符结合性自左至右。8.关系运算符关系运算符包括:>,<,>=,<=,=,!=,<>。结合性自左至右,双目运

38、算符。9.条件运算符条件运算符;表达式?值1:值211.分量运算符分量运算符:->和.,结合性为自左至右。12.下标运算符下标运算符,结合性自左至右。13.求字节运算符求字节运算符sizeof(操作数),结合性自右至左。14.强制类型转换运算符强制类型转换:(类型)操作数,结合性自右至左。二、各种运算符的优先级(1)初等运算符()、à、.(2)单目运算符!、+、-、-、(类型)、*、&、sizeof(3)算术运算符(先乘除后加减)(4)位运算符<<、>>(5)关系运算符<、>、<=、>=、其中=和!=级别低一级(6)位运算

39、符&、|、分先后(7)逻辑运算符&&、|、分先后(8)条件运算符?:(9)赋值运算符(10)逗号运算符注意:在利用逻辑运算符时:|和&&有其特殊性,如果前表达式已经可以确定整个表达式的值,则后表达式不再做。自加+自减-运算符,只能对整形变量进行。三、算术运算符和算术表达式最终运算为算术运算的式子称为算术式。例:3/5,3%5,-3%5四、自加自减运算注意:运算对象只能是整型变量。例main()int a=5;a+;printf(“%d”,a);为学生描述内存存储状态。计算:(a+)+(-a)-a+(+a)表达式的值,a的初始值为4。五、赋值运算1.简单赋

40、值运算符=,运算方法是将=号后的值赋给=号前的变量,=号前必须为变量,不能给常量赋值。如:int a=5;2.复合的赋值运算比如:a+=5;等价于a=a+5;前提是复合赋值运算前的变量必须有初值,否则无法运算。3.赋值运算的规则赋值运算符的赋值规则:(也就是当赋值运算符前后类型不一致时如何赋值)(1)将浮点型赋给整型:舍弃小数部分。如:int i=3.56则i的值为3。(2)将整型赋给浮点型:数值不变,但要以浮点型进行存储。如:float a=23,则a为23.00000,补足有效位。(3)将double型赋给float型,截取其前面7位有效数字,但要注意数值范围不能溢出。如:float a;

41、 double b=123.e100; a=b;如果输出a则会产生溢出错误,因为b超过了浮点型表示范围。如果将b改为123.e2,则a的值会有7个有效位是和b完全相同的,其他位会产生误差。(4)字符型赋给整型,如果将字符型处理为无符号型,则将字符型放到整型的低8位,高八位为0;如果将字符型处理为有符号型,则字符型放到整型的低8位,高位所补的是0还是1,要看低八位的最高位,所补的为最高位的值。TC和维普C是把字符型当做有符号数来处理的。比如main()int a; unsigned char c='376' a=c; printf("%d",a);输出为254

42、,如果去掉unsigned则输出为-2。(5)将带符号int赋给long,进行符号为扩展放到高十六位,低十六位为int数据;long型赋给int型时,只将long的低十六位放在int型中。(6)int、short、long赋给char型只是将低八位赋给char空间。(7)将unsigned int送到long int中,不存在符号扩展,高位都补0。将unsigned类型数据赋给一个占字节相同的数据则直接将unsigned数据放到相应类型中即可,只不过超过表示范围会出现数据错误。例如:main()unsigned int a=65535;int b;b=a;printf("%d&quo

43、t;,b);这时b=-1。(8)将signed数据赋给长度相同的unsigned数据也是原样赋过去,只不过如果是负数,是将其补码作为一个无符号数来处理。main()unsigned int a;int b=-1;a=b;printf("%u",a);这时a=65535。各种赋值形式虽然看起来复杂,但是都是它们都是:按存储单元中的存储形式直接传送。要求学生必须对补码只是熟练掌握。六、逗号运算符和逗号表达式逗号运算符的运算规则是自左至右。整个表达式的值是逗号表达式最后一个表达式的值。例如:int a,b,c; a=b=5; c=(a+3,b+a,a=a+b,b+a)c输出的值应

44、该为15。例如:a=3*4,a+5;要注意赋值运算符的优先级高于逗号运算符,所以先算a=3*4,在算a+5。所以整个表达式为逗号表达式,值为60。注意:printf和scanf中出现的逗号是作为分隔参数用的,并不是逗号表达式。七、指针运算指针运算符的作用是取指针地址中对应的具体数值,它与取地址符为互逆运算。例:int *p,a; a=5; p=&a;则*p的值为5。这个思想我们在前面的练习中也给大家说过。八、强制类型转换和测字节函数这两个运算我们在前面讲过,这里就不再说了。九、总结及课堂练习教材3.9,3.10作业:3.11,3.12。第七讲 运算符和表达式(2)学时:2学时授课形式:

45、板书+多媒体讲解+实例程序演示主要内容及时间安排(课堂90分钟,80分钟讲课,5分钟复习,5分钟总结):(1) 复习上节课的主要知识点(5分钟);(2) 关系运算符和关系表达式(15分钟);(3)逻辑运算符和逻辑表达式(20分钟);(4)位运算符(20分钟);(5)课堂练习(30分钟)。重点:关系运算符,逻辑运算符,位运算符的操作方法。难点:各种运算符的混合运算,需要考虑算符的优先级和结合性等因素。教学内容细节:一、关系运算符和关系表达式关系运算符表示的是前后两个表达式的关系,表达式的值为逻辑值“真”或“假”,如果关系正确则表达式的值为“真”,否则为“假”,由于C语言不提供逻辑类型值,所以如果

46、表达式的值为“真”,则用1表示,表达式的值为“假”则用0表示。例:int a=3,b=4,c=5;则c!=a>b的值为1。二、逻辑运算符和逻辑表达式逻辑运算符表示两个操作数的逻辑关系,逻辑运算的结果也是逻辑值“真”和“假”,也是对应数字1和0;但是要注意:在表示“真”和“假”时,非零就表示“真”,0就表示“假”。ab!aa&&ba|b真真假真真真假假假真假真真假真假假真假假例:!a&&b|x>y&&(c+),运算级别!最高,然后是算术,然后是关系、然后是逻辑、然后是赋值;a=1,b=0,c=3,x=7,y=10;则表达式的值为0,c的

47、值为3。注意:&&和|的运算规则。三、位运算符和表达式位运算符的前提示首先将数据转化为二进制在进行相应的操作。运算符含义运算符含义&按位与取反|按位或<<左移按位异或>>右移例如:64<<1;左移1位相当于乘以2,所以一些C语言系统将2n处理为左移n位。如果a的值为八进制,则a:1101a>>1: 0110(逻辑右移)a>>1: 0110(算术右移)四、条件运算符例如:int a=5,b=3;a>b?a:b;五、总结及课堂练习1、教材:1、2、3、4、52、自设题目:a=45;求a,a>>2,

48、a<<2;a&11111;a|11111第八讲 输入输出函数及顺序结构学时:2学时授课形式:板书+多媒体讲解+实例程序演示主要内容及时间安排(课堂90分钟,80分钟讲课,5分钟复习,5分钟总结):(1)C语言的基本语句(分为五类:表达式语句、函数调用语句、控制语句、复合语句、空语句,各种语句举例,赋值语句的使用)(10分钟)(2)常用输入函数介绍(5分钟);(3)scanf函数的使用方法(包括各种格式的输入、显性分隔符和隐形分隔符的使用、举例)(20分钟);(4)getchar函数的使用方法(getchar的使用、字符输入与scanf的区别)(10分钟)(5)printf使

49、用方法复习(10分钟)(6)putchar输入函数的使用(5分钟)(7)程序举例(10分钟)(8)课堂练习(15分钟)(9)总结及下一节内容提要(5分钟)重点:C语言各种输入输出函数的使用难点:scanf函数隐形分隔符和显性分隔符的使用教学内容细节:一、C语言的基本语句1、语句的概念C语言中的语句是以分号结束的,以分号结束的就可以称为语句,它用来想计算机发出指令。C程序源程序文件1源程序文件2源程序文件n预处理命令数据声明函数1函数n函数首部函数体数据声明执行语句2、C程序结构3、各种基本语句(1)流控语句 if()else条件语句for()循环语句 while()循环语句 dowhile()

50、循环语句 continue结束本次循环进入下一次循环 break终止所在循环或switch结构 switch()case多分支选择语句 goto转向语句 return从函数返回语句(2)函数调用语句 printf(“%d,%d”,a,b); c=max(a,b);(3)表达式语句 a=3; a=c+b;(4)空语句 ;(5)复合语句 大括号括起来的语句组: z=x+y;t=z/100;printf(“%d,%d”,z,t);二、常用输入函数介绍(1)scanf函数的使用方法(包括各种格式的输入、显性分隔符和隐形分隔符的使用、举例)scanf(“格式说明”,输入表列);注意:格式说明由格式说明符

51、和分隔符两部分组成,输入表列是由逗号分开的变量地址列表。如:scanf(“a=%d,b=%d”,&a,&b);在运行时,为了让ab得到正确的值,则应输入a=12,b=15回车;这里a=,b=均为显性分隔符,在输入时除了格式控制符对应变量类型外,其他的显性分隔符原样输入。又如:scanf(“%d%d”,&a,&b);在运行时,为了让ab得到正确的赋值,则应输入12空格/tab/回车13回车;这里空格、tab和回车都属于隐形分隔符,当两个格式控制符连在一起没有任何分隔符时,在输入变量值时应该用隐形分隔符。格式控制符表如下:格式控制符含义%d,%i带符号十进制整数%u

52、无符号十进制整数%o八进制无符号整数%x,%X十六进制无符号整数%c字符型%s字符串型%f,%lf单精度、双精度小数%e,%E指数形式浮点型数据%g,%G选用%f或%e中宽度较小的一种进行输出,不输出无意义的0,用G时以指数形式输出的E大写(2)getchar函数的使用方法(getchar的使用、字符输入与scanf的区别)(10分钟)getchar()函数的使用仅限于输入字符型数据,它与scanf利用%c输入字符型时应注意:%c可以接收隐形分隔符,所以在使用时应注意;getchar()也可以接收所有字符型,包括隐形分隔符;例:#include <stdio.h>main() in

53、t a,b; char c,d; scanf("%d%d%c",&a,&b,&c); d=getchar(); printf("%d,%d,%c,%cabc",a,b,c,d);如果想给a赋12,b赋13,c符字符a,d赋字符b,在输入时,如果输入12回车13回车a,则编译系统不会再让你输入,因为这是它会将回车赋给c,将a赋给d。如果想得到正确的赋值则在输入时应输入12隐形分隔符13ab即可,系统会根据数据类型自动将13和字符型分开,同时将a赋给c,b赋给d。三、输出函数回顾及拓展(1)printf使用方法复习printf我们在前面应经讲过,在此我们做一下功能拓展。如果想输出指定宽度的数据如何在格式控制符中加以控制,比如,想输出小数,小数点后只保留两位,怎么设计?解决:利用%m.nf、%m.nlf,%-m.nf,%-m.nlf,其中m表示具体的小数宽度小数点也算一位,n表示小数点后位数;如果小数的位数超过m则m失效,以正常的宽度输出浮点数,n在进行舍入时采取四舍五入;如果小数位数小于m则左补空格(右对齐),如果m前有负号则右补空格(左对齐)。

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论