1、单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,.,*,武汉理工大学计算机学院,授课教师,:,王红霞,C语言程序设计,11/22/2025,1,.,选用教材与参考书,主教科书,顾治华、陈天煌等,C,语言程序设计,机械工业出版社,2007.2,参考教材,顾治华、陈天煌等,C,语言程序设计 实验指导,机械工业出版社,2007.2,参考书,谭浩强,C,语言程序设计,清华大学出版社,11/22/2025,2,.,课程内容,第一章,C语言程序设计概述,第二章,算法及算法设计简介,第三章,数据描述与基本操作,第四章 选择结构程序设计,第五章,循环结构程序设计,第六章
2、数组与指针,第七章 函数与模块化程序设计方法,11/22/2025,3,.,第一章 C语言程序设计基础,1.1 程序与程序设计,1,.2 C语言简介,1.3 简单的,C,语言程序,1.4 C语言程序的上机步骤,1.5 C语言的基本词法,1.6 C语言程序的基本结构,11/22/2025,4,.,程序与计算机语言,程序是存放在计算机中的操作指令的集合。,用程序设计语言安排好的处理问题的步骤称为,计算机程序,用程序设计语言编制一个能完成某项任务的计算机程序的过程叫做计算机程序设计。,程序设计,=,数据结构,+,算法,+,程序设计方法,+,编程语言,程序设计的关键:必须掌握一种程序设计语言。掌握程
3、序设计的逻辑思维。,11/22/2025,5,.,程序设计过程,(1)问题的提出,要达到的要求;,(2)确定数据结构和所采用的算法;,(3)编制程序;,(4)调试程序;,(5)整理并写出文档;,11/22/2025,6,.,C语言的特点,(1)语言简洁、紧凑,使用方便、灵活。C语言一共只有,32个关键字,主要用小写字母表示。,(2)比其他高级语言更接近硬件,比低级语言更接近算法。,程序易编、易读、易查错、易修改,兼有高级语言和,低级语言的优点。,(3)数据类型和运算符十分丰富,程序设计和算法描述更为,简单和方便。,(4)语法结构十分简单,语句数目少,简单易学。,11/22/2025,7,.,(
4、6)它是一种模块化的程序设计语言,适合大型软件的研制,和调试。,(5)它是一种结构化程序设计语言,提供了完整的程序控制,语句(选择语句和循环语句),很适合结构化的程序设计方,法。,(7)生成目标代码质量高,程序执行效率高。,(8)用c语言写的程序可移植性好。,(9)它提供了大量的库函数以供调用,简化了程序设计工作。,11/22/2025,8,.,C语言程序的结构,C,语言是结构化的程序设计语言。,C,语言是模块化的程序设计语言,程序是由函数构成的。一个,C,源程序至少包含一个,main,函数,也可以包含一个,main,函数和若干个其他函数。因此,,函数,是,C,程序的基本单位。,一个函数由两部
5、分组成,:,函数的首部,函数的第一行。包括函数名、函数类型、函数属性、函数参数,(,形参,),名、参数类型。,函数体,即函数首部下面的大括弧,.,内的部分。如果一个,函数内有多个括弧,则最外层的一对,为函数的范围。,函数体一般包括:,声明部分,:在这部分中定义所用到的变量。,执行部分,:,由若干个语句组成。,11/22/2025,9,.,(,4)一个C程序总是从,main,函数开始的,而不论,main,函数在整,个程序中的位置如何(,main,函数可以放在程序最前头,也可,以放在程序最后,或在一些函数之前,在另一些函数之后)。,(5)C程序书写格式自由,一行内可以写几个语句,一个语句,可以分写
6、在多行上。,(6,)每个语句和数据定义的最后必须有一个分号。分号是C语,句的必要组成部分。分号不可少。,(7)C语言本身没有输入输出语句。输入输出的操作是由库,函数,scanf,和,printf,等函数来完成的。,(8)可以用/*/对C程序中的任何部分作注释。,11/22/2025,10,.,简单的C语言程序示例,例一,main(),printf(“This is a C program.n”);,本程序的作用是输出以下一行信息:,This is a C program,.,11/22/2025,11,.,例二,main(),int a,b,sum;/*这是定义变量*/,a=123;b=456
7、/*以下3行为C语句*/,sum=a+b;,printf(“sum is%dn”,sum);,程序的运行结果:,Sum is 579,11/22/2025,12,.,例三,/*example1.3 输入两个数,求其中较大的数*/,#include,int max(int x,int y),/*被调用函数*/,int,z;,if(xy)z=x;,else z=y,;,re,turn(z);,/*将z的值返回,通过max带回调用处*/,main()/*主函数*/,int,a,b,c;,scanf(“%d,%d”,c=max(a,b);,printf(“max=%dn”,c);,运行结果:,4,6
8、max=6,11/22/2025,13,.,C,程序的上机步骤,开始,编辑,编译,有错?,执行,连接,结果,正确,结束,可执行,目标程序,f.exe,源程序,f.c,目标程序,f.obj,库函数,和其他目,标程序,Yes,No,Yes,No,11/22/2025,14,.,C语言的基本词法标识符,定义:,在程序中使用的变量名、函数名、标号等统称为 标识符。除库函数的函数名由系统定义外,其余的都由用户自己定义。,命名规则:,标识符只能是字母(AZ,az)、数字(09)、下划线(_)组成的字符串,并且其第一个字符必须是字母或下划线。,例如,:以下标识符是,合法,的:,a,x,x3,BOOK_1,
9、sum5,_x7。,以下标识符是,非法,的:,3s,s*T,-3x,bowy-1,M.D.John,ab。,11/22/2025,15,.,(1)标准C不限制标识符的长度,但它受各种版本的C语言编 译系统限制,同时也受到具体机器的限制。Turbo C规定标识符的长度为32。一般情况下,标识符的长度不要超过8个字符。,(2)在标识符中,大小写是有区别的。例如SUM和sum是两个 不同的标识符。变量名应尽量使用小写字母,以增加程序的可读性。,(3)标识符虽然可由程序员随意定义,但标识符是用于标识某个量的符号。因此,命名应尽量有相应的意义,以便于阅读理解,做到“顾名思义”。,在,C,语言中,所有的变
10、量都是先定义后应用,使用没有定义的变量名被认为是“非法”的。,在使用标识符时还必须注意以下几点:,11/22/2025,16,.,C语言的基本词法,关键字,定义,:关键字是由语言规定的具有特定意义的字符串,通常也称为,保留字,。用户定义的标识符不应该与关键字相同,。,分类,:语言的关键字分为以下3类:,(1)类型说明符,用于定义和说明变量、函数或其它数据结构的类型。如int,double,float,long,short,auto,signed,static,struct,unsigned,char,enum,extern,register和union等。,11/22/2025,17,.,(2
11、语句定义符,用于表示一个语句的功能。如条件语句的语句定义符if else,循环语句的语句定义符do,while,for等。,(3)预处理命令字,用于表示一个预处理命令,使用时前面要加“”。如include,define,ifdef,endif等。,关键字后必须有空格、圆括号、尖括号、双引号等分隔符,否则与其它字符一起组成新的标识符。,11/22/2025,18,.,C语言的基本词法,其它,运算符,语言中含有相当丰富的运算符。运算符与变量,函数一起组成表达式,表示各种运算功能。运算符由一个或多个字符组成。,分隔符,在语言中采用的分隔符有逗号和空格两种。逗号主要是用在类型说明和函数参数表中分隔各
12、个变量。空格多用于语句各单词之间作间隔符。,常量,C,语言中使用的常量可分为,数字常量、字符常量、字符串常量、符号常量、转义字符,等多种。,11/22/2025,19,.,语言的字符集,(1)字母 小写字母az共26个,大写字 母AZ共26个。,(2)数字09共10个。,(3)空格符、制表符、换行符等统称为空白符。,(4)标点和特殊字符,11/22/2025,20,.,C语言程序设计的基本结构,(1)顺序结构,A,B,a,b,11/22/2025,21,.,(2)选择结构,或称分支结构,此结构中必包含一个判断框。根据给定的条件,P,是否成立而选择执行,A,框或,B,框,a,b,B,A,p,不成
13、立,成立,11/22/2025,22,.,(3)循环结构,它又称为重复结构,即反复执行某一部分,的操作。又两类循环结构:,(a)当型(,while,型)循环结构,它的功能是判断当前给定,的条件,p1,成立时,执行,A,框操作,执行完,A,后,再,判断条件,p1,是否成立,如,果仍然成立,再执行,A,框,,如此反复执行,A,框,直到,某一次,p1,条件不成立为止,,此时不执行,A,框,而从,b,点,脱离循环结构。,a,p1,T,F,A,b,11/22/2025,23,.,(b)直到型(,Until,型)循环结构,它的功能是先执行,A,框,然后判断给定的,p2,条,件是否成立,如果,p2,条件不成
14、立,则再执行,A,,,然后再对,p2,条件作判断,如果,p2,条件仍然不成立,又执行,A,如此反复执行,A,,直到给定,的,p2,条件成立为止,此时不再执行,A,,从,b,点脱,离本循环结构。,a,A,F,T,b,p2,11/22/2025,24,.,本章课堂练习,(1),以下说法中正确的是,().,A)C,语言程序总是从第一个函数开始执行,B),在,C,语言程序中,要调用的函数必须在,main(),函数,中定义,C)C,语言程序总是从,main(),函数开始执行,D)C,语言程序中的,main(),函数必须放在程序的开始,部分,11/22/2025,25,.,解答:,C,解释:,C,语言程序
15、总是从,main(),函数开始执行,而不论其在程序中的位置。当主函数执行完毕时,亦即程序执行完毕。除,main,函数外,其它函数都是在执行,main,函数时被调用执行的。在,C,语言中,函数不允许嵌套定义。习惯上,将主函数,main(),放在最前头,但并不是必须的。,11/22/2025,26,.,(2),以下叙述不正确的是,A),一个,C,源程序可由一个或多个函数组成,B),一个,C,源程序必须包含一个,main,函数,C)C,程序的基本组成单位是函数,D),在,C,程序中,注释说明只能位于一条语句的后面,11/22/2025,27,.,解答:,D,解释,:,凡是用,“/*”,和,“*/”,
16、括起来的文字,都是注释。其出现的位置可以任意。,11/22/2025,28,.,(3),下列标识符中,合法的变量名有:,A,),a.b B,),$888 C,),A1 D,),3x56,11/22/2025,29,.,解答:,C,解释:变量名只能由字母、数字和下划线三种字符所组成,且第一个字符必须为字母或下划线。,C,语言的关键字不能用作变量名。另外,,C,语言对英文字母的大小写敏感,即同一字母的大小写,被认为是两个不同的字符。习惯上,变量名和函数名中的英文字母用小写,以增加可读性。,11/22/2025,30,.,第二章 算法及算法设计简介,2.1 算法的概念,2.2 算法的设计与表达,2.
17、3 简单的算法实例,2.4 结构化程序设计方法简介,11/22/2025,31,.,算法的概念,任何一个程序应包含的如下两方面的内容:,(1)对数据的描述。在程序中要指定数据的类型和数据的组织形式,即数据结构(,data structure,).,(2)对操作的描述。即操作步骤,也就是算法(,algorithm,)。,著名计算机科学家沃思(Nikiklaus Wirth)提出公式,数据结构,算法程序,算法:,是对解决某个问题的方法步骤的描述。,程序:,从计算机角度来说,程序是用某种计算机能理解并执,行的计算机语言描述解决问题的方法和步骤。,11/22/2025,32,.,实际上,一个程序除了以
18、上两个主要要素之外,还应当采用,结构化程序设计方法进行程序设计,并且用某一种计算机语,言表示。因此,可以这样表示:,程序算法,数据结构,程序设计方法,语言工具和环境,在这4个方面中,算法是灵魂,数据结构是加工对象,语言,是工具,编程需要采用合适的算法。算法是解决“做什么”,和“怎么做”的问题。,11/22/2025,33,.,算法的表示,1、用自然语言表示算法,采用汉语、英语或其它语言来描述解决问题的方法和步骤。,由于自然语言容易出现“歧义性”,且描述问题的文字冗长,,因此一般很少使用自然语言来描述算法。,11/22/2025,34,.,例1:,有50个学生,要求将他们之中成绩在80分以上者打
19、印出来。用n表示学号,n,1,代表第一个学生学号,n,i,代表第i个学生学号。用g代表学生成绩,g,i,代表第i个学生成绩,算法可表示如下:,S1,:1,i,S2,:,读入学号n,i,和成绩g,i,S3,:,如果g,i,80,则打印,n,i,和,g,i,,否则不打印,S4,:,i+1,i,S5,:如果 i 50,返回S2,继续执行;否则,算法结束。,11/22/2025,35,.,起止框,输入/输出框,判断框,处理框,流程线,2、用流程图表示算法,(1)常用的流程图符号,11/22/2025,36,.,上例,用流程图表示:,(1)流程图表示算法的优点:,表示算法直观形象,比较清楚地显示出各个框
20、之间,的逻辑关系。,简单,易于掌握。,流程图,11/22/2025,37,.,3、用,N,S,图表示算法,1973年美国学者I.Nassi和B.Shneiderman提出了,一种新的流程图形式。在这种流程图中,完全去掉,了带箭头的流程线。全部算法写在一个矩形框内,,在该框内还可以包含其他的从属于它的框。,这种流程图又称,NS,结构化流程图。,NS,流程图用以下的流程图符号:,(1)顺序结构:,A,B,11/22/2025,38,.,(2)选择结构:,P,成立,不成立,A,B,(3)循环结构:,当p1成立,A,当型循环结构,直到p1成立,A,直到型循环结构,用以上3种,NS,流程图中的基本框,可
21、以组成复杂的,NS,流程图,以表示算法,11/22/2025,39,.,上例,用NS图表示:,用,NS,表示算法如图,1=i,输入ni,gi,gi80,是,否,输出ni,gi,i+1=i,直到i50,11/22/2025,40,.,4、用伪码表示算法,伪代码是用介于自然语言和计算机语言之间的文字和符号来,描述算法。它不用图形符号,因此书写方便,格式紧凑,也,比较好懂,便于向计算机语言算法(即程序)过渡。,例,有50个学生,要求将他们之中成绩在80分以上者打印出来。,用n表示学生学号,n,1,表示第一个学生学号,n,i,表示第,i,个学生,学号。用g表示学生成绩,g,i,表示第i个学生成绩。,1
22、1/22/2025,41,.,BEGIN(算法开始),1=i,While ii,END(算法结束),用伪代码表示算法如下:,11/22/2025,42,.,5、用计算机语言表示算法,设计算法的目的是为了实现算法。因此,不仅要考,虑如何设计一个算法,也要考虑如何实现一个算法。,我们的任务是用计算机解题,也就是要用计算机实,现算法。计算机是无法识别流程图和伪代码的。只,有用计算机语言编写的程序才能被计算机执行(当,然还要经过编译成目标程序才能被计算机识别和执,行)。因此,在用流程图或伪代码描述出一个算法,后,还要将它转换成计算机语言程序。,11/22/2025,43,.,例:,有50个学生,要求将
23、他们之中成绩在80分以上者打印出来。,用n表示学生学号,n,1,表示第一个学生学号,n,i,表示第,i,个学生,学号。用g表示学生成绩,g,i,表示第i个学生成绩。,C,语言程序如下:,main(),int g50,n50,i;,for(i=0;i50;i+),scanf(“%d,%d”,for(i=0;i=80)printf(“%6d,%3dn”,ni,gi);,11/22/2025,44,.,例2:对一个大于或等于3的正整数,判断它是不是一个素数。,方法:将 n(其中n,3)作为被除数,将2 到(n-1)各个整数轮流作为除数,如果都不能被整除,则n为素数。,简单的算法实例,11/22/20
24、25,45,.,算法表示如下:,S1:输入n的值,S2:2,i (i 作为除数),S3:n 被 i 除,得余数 r,S4:如果 r 等于 0,表示 n 能 被 i 整除,则打印 n“不是素数”,算法结束;否则执行S5,S5:i+1,i,S6:如果 i n-1,返回S3;否则,打印 n“是素数”,算法结束。,11/22/2025,46,.,S1:,1,sign,S2:1 sum,S3:2 deno,S4:(-1)*sign sign,S5:sign*(1/deno)term,S6:sum+term sum,S7:deno+1 deno,S8:若deno 100 返回S4;否则算法结束。,例3:求
25、 1-1/2+1/3 1/4+1/99 1/100。,11/22/2025,47,.,结构化程序设计方法简介,1、三种基本结构回顾,(1)顺序结构,A,B,a,b,11/22/2025,48,.,(2)选择结构,或称分支结构,a,b,B,A,p,不成立,成立,11/22/2025,49,.,(3)循环结构,它又称为重复结构,即反复执行某一部分,的操作。又两类循环结构:,(a)当型(,while,型)循环结构,a,p1,T,F,A,b,11/22/2025,50,.,(b)直到型(,Until,型)循环结构,a,A,F,T,b,p2,11/22/2025,51,.,2、结构化程序,所谓结构化程序
26、就是仅仅使用顺序、选择、循环等三种基本结构所构造的程序。,3、结构化程序设计方法,结构化程序设计方法的基本思想是,把一个复杂问题的求解过程分阶段进行。每个阶段的问题都控制在人们容易理解和处理的范围内。,11/22/2025,52,.,1=i,i+1=i,g,i,80,i50,结束,开始,打印n,i,g,i,Y,N,N,Y,读入ni和gi,11/22/2025,53,.,解答:()用自然语言表示()用传统的流程图表示()NS流程图()用伪代码表示等。,1、算法的表示形式主要有哪些?,课堂练习,11/22/2025,54,.,2、设计算法:A,、,B,两人各有一桶油,现两人要将各自桶 内的油互换
27、解答:必须借助另外一个空桶,并按如下算法进行:,(用,Si,表示第,i,步操作,,A,的桶叫,A,,,B,的桶叫,B,,空桶叫,M,),开始:,S0,:将,A,桶中的油倒入,M,桶中;,S1,:将,B,桶中的油倒入,A,桶中;,S2,:将,M,桶中的油倒入,B,桶中;,11/22/2025,55,.,3、设计算法写出求,n!,的算法,解答:,S0,:给出,n,的值;,S1:1=p;,S2:2=i;,S3:p*i=p;,S4:i+1=i;,S5:,若,i=n,返回,S3;,否则,结束,11/22/2025,56,.,第三章 数据描述与基本操作,3.1,基本数据类型,3.2 常用的运算符和表达
28、式,3.3 表达式及赋值语句,3.4 基本输入输出操作的实现,3.5 顺序结构程序设计实例,11/22/2025,57,.,概 述,使用高级语言编写程序,必须在程序中做好两件事:,一是描述数据,二是描述数据的加工方法。前者是通过,数据定义语句实现的,后者是通过若干执行语句,包括,用各种运算符构成的表达式来实现的。本单元主要介绍,C,语言的基本数据类型,为后续单元的学习奠定一个基,础。关于复杂的数据类型(如数组、指针、结构型、共,用型等)将在以后单元中介绍。,11/22/2025,58,.,3.1 C,语言的数据类型,C,语言具有十分丰富的数据类型。所谓数据类型是指数据的内在表现形式。具体的数据
29、类型有以下若干种:,1.,基本数据类型:整型、实型和字符型。,2.,构造类型:由若干个相关的基本数据类型数据组合在一起形,成的一种复杂的数据类型,如数组型、结构型和共用型。,3.,指针型:一种简单的数据类型,它是用来表示内存地址的。,指针类型的数据可以表示基本类型数据的地址,它可以表,示结构类型数据的首地址和其中某个具体数据的地址。,11/22/2025,59,.,4.,枚举型:某数据在程序运行中,只取固定的几个值。我们可,以把这几个值列出来,以后这个数据只能取这几个值中的,某一个。,5.,空类型:没有任何具体值的数据类型。,11/22/2025,60,.,C,语言中的数据类型如下图所示,:,
30、数据类型,基本类型,整型,字符型,实型(浮点型),单精度型,双精度型,枚举类型,构造类型,数组类型,结构体类型,共用体类型,指针类型,空类型,11/22/2025,61,.,常量和变量,2.常量的分类 (1)整型常量,(2)实型常量,(3)字符常量,(4)字符串常量,(5)符号常量,常量的类型,可通过书写形式来判别。,常量,1.常量的概念 在程序运行过程中,其值不能被改变的量称为常量。,11/22/2025,62,.,变量,1.变量的概念,在程序运行过程中,其值可以被改变的量称为变量。,2.变量的两个要素,(1)变量名。每个变量都必须有一个名字变量名,变量命名遵循标识符命名规则。,(2)变量值
31、在程序运行过程中,变量值存储在内存中。在程序中,通过变量名来引用变量的值。,11/22/2025,63,.,变量有以下几个特征:,变量名、变量值、变量的数据类型、变量的地址、变量的存储类别、变量的作用域及变量的生存期等。,变量必须先定义后使用。定义变量格式如下:,数据类型关键字,;,如,int x,y,z;,变量的初始化:变量赋初值的过程就是变量初始化过程。,11/22/2025,64,.,整型数据,整型常量,:整型常量就是整常数,包括正整数和负整数及 0。其书写形式如下:,(1)十进制整数。如 123,456,0。,(2)八进制整数。以0开头的是八进制数。如0123表示八进制,数123,即
32、123),8,。,(3)十六进制整数。以0 x开头的数是十六进制数。如0 x123,,代表十六进制数,,(123),16,116216316256323291。,11/22/2025,65,.,整型常量在一般微型机中占用,2,个字节,不管是,十进制、八进制或十六进制整数,它们的数值范,围都是十进制的,3276832767,。,注意:,C语言还提供一种“长整型常量”。它们的数值范围,是十进制的,21474836482147483647,,在计算,机中占用四个字节,它们的书写方法是在数据的末,尾加一个大写字母“L”或小写字母“l”,如0L,038L,0 x15L。,11/22/2025,66,.
33、整型变量,1.分类 根据占用内存字节数的不同,整型变量又分为类:,(1)基本整型(类型关键字为int)。,(2)短整型(类型关键字为short int)。,(3)长整型(类型关键字为long int)。,(4)无符号整型。无符号型又分为无符号基本整型(unsigned int)、无符号短整型(unsigned short)和无符号长整型(unsigned long)三种,只能用来存储无符号整数。,11/22/2025,67,.,2.占用内存字节数与值域 上述各类型整型变量占用的内存字节数,随系统而异。在16位操作系统中,一般用字节表示一个int型变量,且long型(字节)int型(字节)sh
34、ort型(字节)。,11/22/2025,68,.,实型数据,实型常量,.表示形式实型常量即实数,在语言中又称浮点数,其值有两种表达形式:,(1)一般形式的实数,它是由整数、小数点、小数三部分组,成。其中整数部分或小数部分可以省略。数的正负用前,面的“”(可以省略)号或“”号来区分。例如,,12.345,,,1.2345,47.0,.234,47.,等都是,实型常量,。,11/22/2025,69,.,(2)指数形式的实数,它是由尾数、小写字母e或大写字母E、,指数三部分组成,尾数部分可以是十进制整型常量或一般,形式的实数,指数部分是十进制的短整型常量(可以带E负,号)例如,,12.3e2,,
35、1.2e-3,,,47.0e2,,,.234e-3,等都是,实,型常量,。,C语言规定,字母e(或者E)之前必须要有数字,且e(或者E),后面的指数必须为整数。,如:e3,5e3.5,.e3都是不合法的指数形式。,11/22/2025,70,.,注意:,实型常量在一般的微机中是占用4个字节的,不管是一般,形式还是指数形式,它们的数值范围都是,10 10,有效数,字,7,位。例如,1.23456789和1.234567是相同的,因为实型常,量的有效数字是7位,所以1.23456789中的后两位是无效的。,38,38,11/22/2025,71,.,实型变量,语言的实型变量,分为两种:,(1)单
36、精度型。类型关键字为float,一般占字节 (位)、提供位有效数字。,(2)双精度型。类型关键字为double,一般占个字节、提供1516位有效数字。,11/22/2025,72,.,字符型数据,A、把单个字符用一对单引号括起来表示字符常量。,如,a,,,d,,,w,,,?,等都是字符常量。,B、用该字符的ASCII码值表示字符常量。如65表示A,C、转义字符:反斜杠开头后跟规定的单个字符或数字,,并用一对单引号括起来表示字符常量。如下:,一 字符常量,1.字符常量是ASCII码字符集里的一个字符,包括字母(大、小写有区别)、数字和标点符号以及特殊字符等,均为半角字符。,2.字符常量表示形式:
37、11/22/2025,73,.,字符形式,含 义,ASC,n,换行,将当前位置移到下一行开头,10,t,水平制表(跳到下一个tab位置,),9,b,退格,将当前位置移到前一列,8,r,回车,将当前位置移到本行开头,13,f,换页,将当前位置移到下页开头,12,反斜杠字符“”,92,单引号(撇号)字符,39,“,双引号字符,34,ddd,1到3位8进制数所代表的字符,xhh,1到2位16进制数所代表的字符,11/22/2025,74,.,例1:字符与整数的转化,#include stdio.h,void main(),int i;,char n;,n=97;,i=b;,printf(n=%cn
38、n);,printf(i=%dn,i);,printf(i=%cn,i);,程序的输出为:,n=a,i=98,i=b,11/22/2025,75,.,例2,字符参与整数运算,#include stdio.h,void main(),char n;,n=a;,n=n-65;,printf(n=%dn,n);,程序的输出结果为:,n=32,11/22/2025,76,.,例3,字母的大小写转换,#include stdio.h,void main(),char n,i;,n=a;,i=B;,n=n-32;,i=i+32;,printf(n=%cn,n);,printf(i=%cn,i);,程序的
39、输出为,n=A,i=b,11/22/2025,77,.,二 字符串常量,字符串就是用两个双引号,(,“,),号后括住的若干个字符,,例如,“,abc,”,“,123 456,”,“,aBbB,”都是字符串。,转义符可以出现在字符串中,例如,“ABC”,,“101102x43x44”等都是字符串,分别表示“ABCD”、,“ABCD”两个字符串。,11/22/2025,78,.,一个字符串中所有的字符的个数称为该字符串的长度,,其中每个转义字符只当做一个字符。例如,“,ABC”,的长,度为5。,注意,!,a与“a”的区别。,C,语言规定:每个字符串在内存中占用的字符数等于字符,串的长度1。其中最后
40、一个字符存放的字符称为“空字符”,其值为0,书写时常用转义字符“,0,”来表示。在,C,语言中称,为字符串结束标志。,11/22/2025,79,.,关于变量的补充内容,1.,变量,:变量是指在程序运行过程中其值可以发生变化的量。,2.变量的取名规则为,:以字母、下划线“_”开头,后跟若干,个字母、下划线、数字。一般约定,用户使用的变量名采用,以字母开头,,C,语言内部使用的变量名以下划线开头。例如,,abc,a_1,age_1等都是合法的变量名,而3a,age则是非,法的变量名。,当程序运行时,每个变量都要占用若干个连续的字节,,所占用的字节数由变量的数据类型确定。其中第1个字节的,地址称为
41、变量的地址。,C,语言规定,程序中变量的地址是用,“,&变量名,”来表示的。,11/22/2025,80,.,3.变量的数据类型及其定义,(1),变量可以是任何一种数据类型,具有某种数据类型的,变量就叫做该类型变量。,(2),每个变量在使用前必须定义,说明其数据类型。,(3),定义变量数据类型的语句格式如下:,数据类型符 变量1,变量2.;,11/22/2025,81,.,数据类型,数据类型符,占用字节数,数据范围,整型,int,2(或4),同短整型(或长整型),短整型,short,2,3276832767,长整型,long,4,-21474836482147483647,无符号整型,unsi
42、gned int,2(或4),同无符号短整型(或长整型),无符号短整型,unsigned short,2,065535,无符号长整型,unsigned long,4,04294967295,单精度实型,float,4,10 10,双精度实型,double,8,10 10,字符型,char,1,128127,基本数据类型符及含义如下表所示:,38,38,308,308,11/22/2025,82,.,5.变量的初始化,(1)在定义变量的同时给变量赋予初始值就称为变量的初始化。,(2)变量赋初值的语句格式如下:,存储类型符 数据类型符 变量名1初值1,变量名2初值2,,11/22/2025,83,
43、3.2 运算符,1 概述,2 算术运算符,3 赋值运算符,4 逗号运算符,5条件运算符,6长度运算符,7位运算符,8 关系运算符,-下章介绍,9逻辑运算符 下章介绍,11/22/2025,.,一.概述,用来表示各种运算的符号称为,运算符,。,运算符必须有运算对象,运算对象是一个的,则称为,单目运算,;运算对象是两个的,则称为,双目运算,;运算对,象是三个的,则称为,三目运算,。,例如,数值运算中经常用到的、*、/等。,11/22/2025,.,每个运算符都代表对运算对象的某种运算,都有自己,特定的,运算规则,。每个运算符运算的对象都规定了,数据类型,,,同时运算结果也有确定的,数据类型,。
44、当表达式中出现多个运算符,计算表达式值时,就有谁,先算,谁后算的问题,我们把这个问题称为,运算符的优先级,。,计算表达式值时,优先级高的运算要先进行运算。,同级别的运算符有左结合和右结合之分。,11/22/2025,.,C的运算符十分丰富,,有13类,30多种,,其分类如下:,C语言运算符,基本运算符,算术运算符,基本算术运算符,(、*、/、),增1减1运算符,(、),关系运算符(、=、!),逻辑运算符(!、&、|),赋值运算符,基本赋值运算符(),算术自反赋值运算符,(、*、/、),逗号运算符(,),条件运算符(?:),数据长度运算符(sizeof),位运算符,位逻辑运算符(、&、|、),
45、位移运算符(、,,.,),指针运算符(&,*),11/22/2025,.,注意!,少数运算符号有双重意义,主要有以下几种,:,(,1)“,”号,在算术运算中即表示单目的取正运算,,又可表示双目的加法运算。,(2)“,”号,在算术运算中即表示单目的取负运算,,又可表示双目的减法运算,(3)“,*,”号,在算术运算中即表示双目的乘法运算,,在指针运算中表示指针变量指向的变量。,(4)“,&,”号,在位逻辑运算中表示双目“与”运算,,在指针运算中表示取地址的运算,。,11/22/2025,.,二.算术运算符,1.基本算术运算符,基本算术运算符的运算对象、运算规则与结果、结合性如表所示:,对象数,运算
46、符,名称,运算对象,运算结果,结合性,单 目,双 目,正,负,整 型,或,实 型,整 型,或,实 型,自右向左,自左向右,*,/,加,减,乘,除,整除取余,整型,整数,11/22/2025,.,算术运算符的优先级规定如下:,单目基本算术运算符 优先于 双目基本算术运算符,*、/、优先于、,同级单目基本算术运算符的结合性是自右向左,同级双目基本算术运算符的结合性是自左向右,11/22/2025,.,例1.基本算术运算符的使用,设变量定义如下:,int n=10,m=3;,float f=5.0,g=10.0;,double d=5.0,e=10.0;,则,n,的结果是10,nm,nm,n*m,n
47、/m,n%m,的结果,分别为13、7、30、3、1,de,de,d*e,d/e,的结果,分别为15.0,5.0,50.0,0.5,nmf*g/d,的运算顺序相当于,(nm(f*g)/d),结果是3.0,nm*f*,d的运算顺序相当于,(nm)*f)*d,结果是25.0,如果参加运算的两个数中有一个为浮点型,则结果是,double,型,11/22/2025,.,2 增1减1运算符,(1)增1减1运算符的运算对象、运算规则与结果、,结合性如下表所示:,对象数,单,目,名称,运算符,运算规则,运算对象,运算结果,结合性,增1(前缀),先加1,后使用,增1(后缀),减1(前缀),减1(后缀),先使用,
48、后加1,先减1,后使用,先使用,后减1,整型、字,符型、指,针型变量,或数组,元素,同运算,对象的,类型,自,右,向,左,11/22/2025,.,(2)增1,减,1,运算符的优先级:,增,1,减,1,运算符,优先于,双目基本算术运算符,增,1,减,1,运算符和单目运算符、同级别,结合性,是自右向左,注意:,若出现难以区分的若干个或组成运算符串时,,C语言规定,自左向右取尽可能多的符号组成运算符。,例1:,a,b,应理解为(,a,),b,a,b,应理解为,(,a,),b,11/22/2025,.,例2:,增,1,减,1,运算符的使用,设变量定义如下:,char c1b,c2B;,(,c1,,,
49、c2,可看成整型,其值分别为,98,,,66,),则:,c1 的值是99,运算后c1的值是c,c1 的值是98,运算后c1的值是a,c1c2的值是164,运算后c1的值是c,c2的值是B,c1,c2,的值是,32,,运算后,c1,的值是,a,,,c2,的值是,B,11/22/2025,.,三.,赋值运算符,1.,赋值运算符,赋值运算符是双目运算符,赋值运算符的左边必须是变量,,右边是表达式。,(1),赋值运算符的运算对象及有关规则如下表:,对象数,名称,运算符,运算规则,运算结果,结合性,双目,赋值,将表达式的值赋予变量,表达式的,类型,自右向左,11/22/2025,.,(2),赋值运算符的
50、优先级,算术运算符 优先于 关系运算符 优先于 双目逻辑运算符,优先于 赋值运算符,赋值运算符的结合性是自右向左,11/22/2025,.,(3)赋值运算符的使用,设变量定义如下:char c1a,c2;,int n165,n2,n3,n4,n5,n6;,float f1,3.0,,,f2,;,则:c2n1运算后,c2的值是65,n1的值不变。,n2!c1运算后,n2的值是0,c1的值不变。,f2f10.001运算后,f2的值是3.001,f1的值不变。,n3,c1,n1|c1,!,n1,运算后,,n3,的值是,1,,,c1,和,n1,的值不变。,注:运算顺序相当于,n3,(,c1,n1,),






