版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、武汉理工大学计算机学院C语言程序设计授课教师:王红霞10/5/20181选用教材与参考书n 主教科书顾治华、陈天煌等 C语言程序设计机械工业2007.2n 参考教材 顾治华、陈天煌等C语言程序设计实验指导 机械工业 2007.210/5/20182课程内容C语言程序设计概述算法及算法设计简介数据描述与基本操作第一章第二章第三章第四章 选择结构程序设计第五章第六章循环结构程序设计数组与指针第七章 函数与模块化程序设计方法10/5/20183第一章 C语言程序设计基础1.1 程序与程序设计1.2 C语言简介1.3 简单的C语言程序1.4 C语言程序的上机步骤1.5 C语言的基本词法1.6 C语言程
2、序的基本结构10/5/20184程序与计算机语言 程序是存放在计算机中的操作指令的集合。 用程序设计语言安排好的处理问题的步骤称为计算机程序 用程序设计语言编制一个能完成某项任务的计算机程序的过程叫做计算机程序设计。 程序设计=数据结构+算法+程序设计方法+编程语言 程序设计的关键:必须掌握一种程序设计语言。掌握程序设计的逻辑思维。10/5/20185程序设计过程(1) 问题的提出,要达到的要求;(2) 确定数据结构和所采用的算法;(3) 编制程序;(4) 调试程序;(5) 整理并写出文档;10/5/20186C语言的特点(1) 语言简洁、紧凑,使用方便、灵活。C语言一共只有32个关键字,主要
3、用小写字母表示。(2) 比其他高级语言更接近硬件,比低级语言更接近算法。程序易编、易读、易查错、易修改,兼有高级语言和 低级语言的优点。(3) 数据类型和运算符十分丰富,程序设计和算法描述更为简单和方便。(4) 语法结构十分简单,语句数目少,简单易学。10/5/20187(5)它是一种结构化程序设计语言,提供了完整的程序控制语句(选择语句和循环语句),很适合结构化的程序设计方法。(6)它是一种模块化的程序设计语言,适合大型软件的研制和调试。生成目标代码质量高,程序执行效率高。(7)(8)用c语言写的程序可移植性好。(9)它提供了大量的库函数以供调用,简化了程序设计工作。10/5/20188C语
4、言程序的结构C语言是结构化的程序设计语言。C语言是模块化的程序设计语言,程序是由函数构成的。一个C源程序至少包含一个main函数,也可以包含一个main函数和若干个其他函数。因此,函数是C程序的基本单位。 一个函数由两部分组成:函数的首部,函数的第一行。包括函数名、函数类型、函数属性、函数参数(形参)名、参数类型。1)2)3)函数体,即函数首部下面的大括弧.内的部分。如果一个函数内有多个括弧,则最外层的一对 为函数的范围。函数体一般包括:声明部分:在这部分中定义所用到的变量。执行部分: 由若干个语句组成。10/5/20189(4)一个C程序总是从main函数开始的,而不论main函数在整个程序
5、中的位置如何(main函数可以放在程序最前头,也可以放在程序最后,或在一些函数之前,在另一些函数之后)。C程序书写格式自由,一行内可以写几个语句,一个语句可以分写在多行上。(5)(6)每个语句和数据定义的最后必须有一个分号。分号是C语句的必要组成部分。分号不可少。(7)C语言本身没有输入输出语句。输入输出的操作是由库函数scanf和printf等函数来完成的。(8)可以用/*/对C程序中的任何部分作注释。10/5/201810简单的C语言程序示例例一main( )printf (“This is a C program.n”);本程序的作用是输出以下一行信息:This is a C progr
6、am.10/5/201811例二main( )int a,b,sum; a=123;b=456;sum=a+b;/*这是定义变量*/*以下3行为C语句*/printf(“sum is %dn”,sum);程序的运行结果: Sum is 57910/5/201812例三10/5/201813/* example1.3输入两个数,求其中较大的数*/#include int max(int x,int y)/* 被调用函数*/int z;if (xy) z=x; else z=y;return(z);/* 将z的值返回,通过max带回调用处*/main()/* 主函数*/inta,b,c; scan
7、f(“%d,%d”,&a,&b); c=max(a,b); printf(“max=%dn”,c);运行结果:4,6max=6开始C程序的上机步骤 源程序f.c Yes 有错?No目标程序f.obj可执行 目标程序f.exe库函数 和其他目标程序结果正确Yes结束10/5/201814No执行连接编译编辑C语言的基本词法标识符定义:在程序中使用的变量名、函数名、标号等统称为 标识符。除库函数的函数名由系统定义外,其余的都由用户自己定义。命名规则:标识符只能是字母(AZ,az)、数字(09)、下划线(_)组成的字符串,并且其第一个字符必须是字母或下划线。 例如:以下标识符是合法的: a,x,x3
8、,BOOK_1,sum5,_x7。 以下标识符是非法的: 3s,s*T,-3x,bowy-1,M.D.John,ab。10/5/201815在使用标识符时还必须注意以下几点:(1)标准C不限制标识符的长度,但它受各种版本的C语言编 译系统限制,同时也受到具体机器的限制。Turbo C规定标识符的长度为32。一般情况下,标识符的长度不要超过8个字符。(2) 在标识符中,大小写是有区别的。例如SUM和sum是两个 不同的标识符。变量名应尽量使用小写字母,以增加程序的可 读性。(3) 标识符虽然可由程序员随意定义,但标识符是用于标识某个量的符号。因此,命名应尽量有相应的意义,以便于阅读理解,做到“顾
9、名思义”。在C语言中,所有的变量都是先定义后应用,使用没有定义的变量名被认为是“非法”的。10/5/201816C语言的基本词法关键字定义:关键字是由语言规定的具有特定意义的字符串,通常也称为保留字。用户定义的标识符不应该与关键字相同。分类:语言的关键字分为以下3类:(1)类型说明符 用于定义和说明变量、函数或其它数据结构的类型。 如int, double, float, long, short, auto,signed,static,struct,unsigned,char,enum,extern,register和union等。10/5/201817(2) 语句定义符用于表示一个语句的功能
10、。如条件语句的语句定义符if else,循环语句的语句定义符do,while,for等。(3) 预处理命令字用于表示一个预处理命令,使用时前面要加“ ”。如include,define,ifdef,endif等。关键字后必须有空格、圆括号、尖括号、双引号 等分隔符,否则与其它字符一起组成新的标识符。10/5/201818C语言的基本词法其它运算符语言中含有相当丰富的运算符。运算符与变量,函数一起组成表达式,表示各种运算功能。运算符由一个或多个字符组成。 分隔符在语言中采用的分隔符有逗号和空格两种。逗号主要是用在类型说明和函数参数表中分隔各个变量。空格多用于语句各单词之间作间隔符。 常量C语言中
11、使用的常量可分为数字常量、字符常量、字符串常量、符号常量、转义字符等多种。10/5/201819语言的字符集(1) 字母 小写字母az共26个,大写字母AZ共26个。(2) 数字09共10个。(3) 空格符、制表符、换行符等统称为空白符。(4) 标点和特殊字符10/5/201820C语言程序设计的基本结构a(1)顺序结构Bb10/5/201821A(2)选择结构,或称分支结构此结构中必包含一个判断框。根据给定的条件P是否成立而选择执行A框或B框b10/5/201822a不成立成立pAB(3)循环结构,它又称为重复结构,即反复执行某一部分的操作。又两类循环结构:a它的功能是判断当前给定的条件p1
12、成立时,执行A 框操作,执行完A后,再判断条件p1是否成立,如 果仍然成立,再执行A框, 如此反复执行A框,直到 某一次p1条件不成立为止, 此时不执行A框,而从b点脱离循环结构。b(a)当型(while型)循环结构10/5/201823Fp1TA(b)直到型(Until型)循环结构a它的功能是先执行A框, 然后判断给定的p2条件是否成立,如果p2条件不成立,则再执行A, 然后再对p2条件作判断, 如果p2条件仍然不成立, 又执行A如此反复执行A,直到给定的p2条件成立为止,此时不再执行A,从b点脱离本循环结构。b10/5/201824 Fp2TA本章课堂练习(1) 以下说法中正确的是( ).
13、A)B)数C语言程序总是从第一个函数开始执行在C语言程序中,要调用的函数必须在main()函中定义C语言程序总是从main()函数开始执行C)D) C语言程序中的main()函数必须放在程序的开始部分10/5/201825解答:C解释:C语言程序总是从main()函数开始执行,而不论其在程序中的位置。当主函数执行完毕时,亦即程序执行完毕。除main函数外,其它函数都是在执行main函数时被调用执行的。在C语言中,函数不允许嵌套定义。习惯上,将主函数main()放在最前头,但并不是必须的。10/5/201826(2)以下叙述不正确的是A) 一个C源程序可由一个或多个函数组成B) 一个C源程序必须
14、包含一个main函数C) C程序的基本组成单位是函数D) 在C程序中,注释说明只能位于一条语句的后面10/5/201827解答:D解释: 凡是用“/*”和“*/”括起来的文字, 都是注释。其出现的位置可以任意。10/5/201828(3)下列标识符中,合法的变量名有:A)a.bB)$888C)A1D) 3x5610/5/201829解答:C解释:变量名只能由字母、数字和下划线三种字符所组成,且第一个字符必须为字母或下划线。C语言的关键字不能用作变量名。另外, C语言对英文字母的大小写敏感,即同一字母的大小写,被认为是两个不同的字符。习惯上, 变量名和函数名中的英文字母用小写,以增加 可读性。1
15、0/5/2018302.1 算法的概念2.2 算法的设计与表达2.3 简单的算法实例2.4 结构化程序设计方法简介10/5/201831第二章算法及算法设计简介算法的概念算法:是对解决某个问题的方法步骤的描述。程序:从计算机角度来说,程序是用某种计算机能理解并执行的计算机语言描述解决问题的方法和步骤。任何一个程序应包含的如下两方面的内容:(1) 对数据的描述。在程序中要指定数据的类型和数据的组织形式,即数据结构(data structure).(2) 对操作的描述。即操作步骤,也就是算法(algorithm)。著名计算机科学家沃思(Nikiklaus Wirth)提出公式数据结构算法程序10/
16、5/201832实际上,一个程序除了以上两个主要要素之外,还应当采用结构化程序设计方法进行程序设计,并且用某一种计算机语言表示。因此,可以这样表示:程序算法数据结构程序设计方法语言工具和环境在这4个方面中,算法是灵魂,数据结构是加工对象,语言是工具,编程需要采用合适的算法。算法是解决“做什么” 和“怎么做”的问题。10/5/201833算法的表示1、用自然语言表示算法采用汉语、英语或其它语言来描述解决问题的方法和步骤。由于自然语言容易出现“歧义性”,且描述问题的文字冗长, 因此一般很少使用自然语言来描述算法。10/5/201834例1:有50个学生 ,要求将他们之中成绩在80分以上者打印出来。
17、用n表示学号,n1代表第一个学生学号,ni代表第i个学生学号。用g代表学生成绩, gi 代表第i个学生成绩,算法可表示如下:S1:1iS2:读入学号ni和成绩giS3:如果gi 80 ,则打印 ni和gi ,否则不打印S4: i+1 iS5: 如果 i 50, 返回S2, 继续执行; 否则,算法结束。10/5/2018352、用流程图表示算法起止框(1)常用的流程图符号输入/输出框判断框处理框流程线10/5/201836上例用流程图表示:流程图(1)流程图表示算法的优点:表示算法直观形象,比较清楚地显示出各个框之间的逻辑关系。简单,易于掌握。10/5/2018373、用NS图表示算法1973年
18、美国学者I.Nassi和B.Shneiderman提出了一种新的流程图形式。在这种流程图中,完全去掉了带箭头的流程线。全部算法写在一个矩形框内, 在该框内还可以包含其他的从属于它的框。这种流程图又称NS结构化流程图。NS流程图用以下的流程图符号:(1)顺序结构:10/5/201838AB(2)选择结构:(3)循环结构:当型循环结构直到型循环结构用以上3种NS流程图中的基本框,可以组成复杂的NS流程图,以表示算法10/5/201839当p1成立AA直到p1成立成立P不成立AB上例用NS图表示:用NS表示算法如图10/5/2018401=i输入ni,gigi80是否输出ni,gii+1=i直到i5
19、04、用伪码表示算法伪代码是用介于自然语言和计算机语言之间的文字和符号来描述算法。它不用图形符号,因此书写方便,格式紧凑,也比较好懂,便于向计算机语言算法(即程序)过渡。例有50个学生,要求将他们之中成绩在80分以上者打印出来。用n表示学生学号,n1表示第一个学生学号,ni表示第i个学生学号。用g表示学生成绩,gi表示第i个学生成绩。10/5/201841用伪代码表示算法如下:BEGIN(算法开始)1=iWhile iiEND(算法结束)and gi10/5/2018425、用计算机语言表示算法设计算法的目的是为了实现算法。因此,不仅要考虑如何设计一个算法,也要考虑如何实现一个算法。我们的任务
20、是用计算机解题,也就是要用计算机实现算法。计算机是无法识别流程图和伪代码的。只有用计算机语言编写的程序才能被计算机执行(当然还要经过编译成目标程序才能被计算机识别和执行)。因此,在用流程图或伪代码描述出一个算法后,还要将它转换成计算机语言程序。10/5/201843例:有50个学生,要求将他们之中成绩在80分以上者打印出来。用n表示学生学号,n1表示第一个学生学号,ni表示第i个学生学号。用g表示学生成绩,gi表示第i个学生成绩。C语言程序如下:main( )int g50,n50,i; for(i=0;i50;i+) scanf(“%d,%d”,&ni,&gi); for(i=0;i=80)
21、 printf(“%6d,%3dn”,ni,gi);10/5/201844简单的算法实例例2:对一个大于或等于3的正整数,判断它是不是一个素数。方法:将 n (其中n 3) 作为被除数, 将2 到(n-1) 各个整数轮流作为除数,如果都不能被整除,则n为素数。10/5/201845算法表示如下:S1:输入n的值S2:2 i( i 作为除数)S3: n 被 i 除,得余数 rS4: 如果 r等于 0 , 表示 n 能 被 i 整除,则打印 n “不是素数”,算法结束;否则执行S5S5:i+1 iS6: 如果 i n-1, 返回S3;否则,打印 n “是素数”,算法结束。10/5/201846例3
22、:求 1-1/2 + 1/3 1/4 + 1/99 1/100。S1: 1 sign S2: 1 sumS3: 2 denoS4: (-1)*sign signS5: sign*(1/deno) term S6: sum+term sum S7: deno+1 denoS8: 若deno 100 返回S4;否则算法结束。10/5/201847结构化程序设计方法简介a1、三种基本结构回顾(1)顺序结构Bb10/5/201848A(2)选择结构,或称分支结构b10/5/201849a不成立成立pAB(3)循环结构,它又称为重复结构,即反复执行某一部分的操作。又两类循环结构:ab(a)当型(whil
23、e型)循环结构10/5/201850Fp1TA(b)直到型(Until型)循环结构ab10/5/201851Fp2TA2、结构化程序所谓结构化程序,就是仅仅使用顺序、选择、循环等三种基本结构所构造的程序。3、结构化程序设计方法结构化程序设计方法的基本思想是,把一个复杂问题的求解过程分阶段进行。每个阶段的问题都控制在人们容易理解和处理的范围内。10/5/201852开始NYg 80i打印ni,giNi50Y结束10/5/201853i+1 =i读入ni和gi1 = i课堂练习1、算法的表示形式主要有哪些?解答:()用自然语言表示()用传统的流程图表示()NS流程图()用伪代码表示等。10/5/2
24、018542、设计算法:A、B两人各有一桶油,现两人要将各自桶内的油互换。解答:必须借助另外一个空桶,并按如下算法进行:(用Si表示第i步操作,A的桶叫A,B的桶叫B,空桶叫M)开始:S0:将A桶中的油倒入M桶中; S1:将B桶中的油倒入A桶中;S2:将M桶中的油倒入B桶中;10/5/2018553、设计算法写出求n!的算法解答:S0:给出n的值;S1:S2:S3:S4:S5:1=p;2=i;p*i=p; i+1=i;若i=n,返回S3;否则,结束10/5/201856第三章 数据描述与基本操作3.1 基本数据类型3.2 常用的运算符和表达式3.3 表达式及赋值语句3.4 基本输入输出操作的实
25、现3.5 顺序结构程序设计实例10/5/201857概述使用高级语言编写程序,必须在程序中做好两件事:一是描述数据,二是描述数据的加工方法。前者是通过数据定义语句实现的,后者是通过若干执行语句,包括用各种运算符构成的表达式来实现的。本单元主要介绍C语言的基本数据类型,为后续单元的学习奠定一个基础。关于复杂的数据类型(如数组、指针、结构型、共用型等)将在以后单元中介绍。10/5/2018583.1 C语言的数据类型 C语言具有十分丰富的数据类型。所谓数据类型是指数据的内在表现形式。具体的数据类型有以下若干种:1. 基本数据类型:整型、实型和字符型。2. 构造类型: 由若干个相关的基本数据类型数据
26、组合在一起形成的一种复杂的数据类型,如数组型、结构型和共用型。3. 指针型:一种简单的数据类型,它是用来表示内存地址的。指针类型的数据可以表示基本类型数据的地址,它可以表示结构类型数据的首地址和其中某个具体数据的地址。10/5/2018594. 枚举型:某数据在程序运行中,只取固定的几个值。我们可以把这几个值列出来,以后这个数据只能取这几个值中的某一个。5. 空类型:没有任何具体值的数据类型。10/5/201860C语言中的数据类型如下图所示: 整型基本类型字符型实型(浮点型)单精度型双精度型枚举类型数组类型结构体类型数据类型构造类型共用体类型指针类型空类型10/5/201861常量和变量常量
27、1.常量的概念在程序运行过程中,其值不能被改变的量称为常量。2. 常量的分类(1) 整型常量(2) 实型常量(3) 字符常量(4) 字符串常量(5) 符号常量常量的类型,可通过书写形式来判别。10/5/201862变量1. 变量的概念在程序运行过程中,其值可以被改变的量称为变量。2. 变量的两个要素(1) 变量名。每个变量都必须有一个名字变量名, 变量命名遵循标识符命名规则。(2) 变量值。在程序运行过程中,变量值存储在内存中。在程序中,通过变量名来引用变量的值。10/5/201863变量有以下几个特征: 变量名、变量值、变量的数据类型、变量的地址、 变量的存储类别、变量的作用域及变量的生存期
28、等。 变量必须先定义后使用。定义变量格式如下:;数据类型关键字如intx,y,z; 变量的初始化:变量赋初值的过程就是变量初始化过程。10/5/201864整型数据整型常量:整型常量就是整常数,包括正整数和负整数及 0。其书写形式如下:(1)(2)十进制整数。如 123,456,0。八进制整数。以0开头的是八进制数。如0123表示八进制数123,即(123)8 。十六进制整数。以0x开头的数是十六进制数。如0x123,代表十六进制数,(3)(123)16116216316256323291。10/5/201865注意: 整型常量在一般微型机中占用2个字节,不管是十进制、八进制或十六进制整数,它
29、们的数值范围都是十进制的3276832767。 C语言还提供一种“长整型常量”。它们的数值范围是十进制的21474836482147483647,在计算机中占用四个字节,它们的书写方法是在数据的末尾加一个大写字母“L”或小写字母“l”,如0L,038L,0x15L。10/5/201866整型变量1.分类根据占用内存字节数的不同,整型变量又分为类:(1) 基本整型(类型关键字为int)。(2) 短整型(类型关键字为shortint)。(3)长整型(类型关键字为longint)。(4)无符号整型。无符号型又分为无符号基本整型(unsignedint)、无符号短整型(unsigned short)和
30、无符号长整型(unsignedlong)三种,只能用来存储无符号整数。10/5/2018672.占用内存字节数与值域上述各类型整型变量占用的内存字节数,随系统而异。在16位操作系统中,一般用字节表示一个int型变量,且long 型(字节)int型(字节)short型(字节)。10/5/201868实型数据实型常量.表示形式实型常量即实数,在语言中又称浮点数,其值有两种表达形式:(1)一般形式的实数,它是由整数、小数点、小数三部分组成。 其中整数部分或小数部分可以省略。数的正负用前面的“”(可以省略)号或“”号来区分。例如,12.345,1.2345,47.0,.234,47.等都是实型常量。1
31、0/5/201869(2)指数形式的实数,它是由尾数、小写字母e或大写字母E、指数三部分组成,尾数部分可以是十进制整型常量或一般形式的实数,指数部分是十进制的短整型常量(可以带E负号)例如, 12.3e2,1.2e-3,47.0e2,.234e-3 等都是实型常量。C语言规定,字母e(或者E)之前必须要有数字,且e(或者E)后面的指数必须为整数。如:e3,5e3.5,.e3都是不合法的指数形式。10/5/201870注意:实型常量在一般的微机中是占用4个字节的,不管是一般形式还是指数形式,它们的数值范围都是10381038 有效数字7位。例如,1.23456789和1.234567是相同的,因
32、为实型常量的有效数字是7位,所以1.23456789中的后两位是无效的。10/5/201871语言的实型变量,分为两种:(1)单精度型。类型关键字为float,一般占字节(位)、提供位有效数字。(2)双精度型。类型关键字为double,一般占个字节、提供1516位有效数字。10/5/201872实型变量字符型数据 字符常量1. 字符常量是ASCII码字符集里的一个字符,包括字母(大、小写有区别)、数字和标点符号以及特殊字符等, 均为半角字符。2. 字符常量表示形式:A、把单个字符用一对单引号括起来表示字符常量。如a,d,w,?等都是字符常量。B、用该字符的ASCII码值表示字符常量。如65表示
33、AC、转义字符:反斜杠开头后跟规定的单个字符或数字,并用一对单引号括起来表示字符常量。如下:10/5/20187310/5/2018字符形式含义ASCn换行,将当前位置移到下一行开头10t水平制表(跳到下一个tab位置)9b退格,将当前位置移到前一列8r回车,将当前位置移到本行开头13f换页, 将当前位置移到下页开头12反斜杠字符“”92单引号(撇号)字符39“双引号字符34ddd1到3位8进制数所代表的字符xhh1到2位16进制数所代表的字符74例1:字符与整数的转化#include stdio.hvoid main() int i; char n; n=97; i=b; printf(n=
34、%cn,n); printf(i=%dn,i); printf(i=%cn,i);程序的输出为: n=a i=98 i=b10/5/201875例2 字符参与整数运算#include stdio.h void main() char n; n=a; n=n-65; printf(n=%dn,n);程序的输出结果为: n=3210/5/201876例3 字母的大小写转换#include stdio.hvoid main() char n,i; n=a; i=B; n=n-32; i=i+32; printf(n=%cn,n); printf(i=%cn,i); 10/5/2018程序的输出为n=
35、A i=b77二 字符串常量字符串就是用两个双引号(“)号后括住的若干个字符, 例如,“abc”,“123 456”,“aBbB”都是字符串。转义符可以出现在字符串中,例如,“ABC”,“101102x43x44”等都是字符串,分别表示“ABCD”、“ABCD”两个字符串。10/5/201878一个字符串中所有的字符的个数称为该字符串的长度,其中每个转义字符只当做一个字符。例如,“ABC”的长度为5。C语言规定:每个字符串在内存中占用的字符数等于字符串的长度1。其中最后一个字符存放的字符称为“空字符” 其值为0,书写时常用转义字符“0”来表示。在C语言中称为字符串结束标志。注意!a与“a”的区
36、别。10/5/201879关于变量的补充内容1. 变量: 变量是指在程序运行过程中其值可以发生变化的量。2. 变量的取名规则为:以字母、下划线“_”开头,后跟若干个字母、下划线、数字。一般约定,用户使用的变量名采用以字母开头,C语言内部使用的变量名以下划线开头。例如, abc,a_1,age_1等都是合法的变量名,而3a,age则是非 法的变量名。当程序运行时,每个变量都要占用若干个连续的字节,所占用的字节数由变量的数据类型确定。其中第1个字节的地址称为变量的地址。C语言规定,程序中变量的地址是用“&变量名”来表示的。10/5/2018803.变量的数据类型及其定义(1)变量可以是任何一种数据
37、类型,具有某种数据类型的变量就叫做该类型变量。每个变量在使用前必须定义,说明其数据类型。定义变量数据类型的语句格式如下:(2)(3)变量1,变量2.;数据类型符10/5/20188110/5/201882数据类型数据类型符占用字节数数据范围整型int2(或4)同短整型(或长整型)短整型short23276832767长整型long4-2147483648 2147483647无符号整型unsigned int2(或4)同无符号短整型(或长整型)无符号短整型unsigned short2065535无符号长整型unsigned long404294967295单精度实型float410 3810
38、38双精度实型double810 30810 308字符型char1128127基本数据类型符及含义如下表所示:5.变量的初始化(1) 在定义变量的同时给变量赋予初始值就称为变量的初始化。(2) 变量赋初值的语句格式如下:变量名1初值1,变量名2初值2,存储类型符数据类型符10/5/2018833.2运算符1 概述2 算术运算符3 赋值运算符4 逗号运算符5条件运算符6长度运算符7位运算符8 关系运算符-下章介绍9逻辑运算符 下章介绍10/5/2018一.概述。例如,数值运算中经常用到的、*、/等。运算符必须有运算对象,运算对象是一个的,则称为单目运算;运算对象是两个的,则称为双目运算;运算对
39、象是三个的,则称为三目运算。10/5/2018用来表示各种运算的符号称为运算符每个运算符都代表对运算对象的某种运算,都有自己特定的运算规则。每个运算符运算的对象都规定了数据类型, 同时运算结果也有确定的数据类型。当表达式中出现多个运算符,计算表达式值时,就有谁 先算,谁后算的问题,我们把这个问题称为运算符的优先级。计算表达式值时,优先级高的运算要先进行运算。同级别的运算符有左结合和右结合之分。10/5/2018基本算术运算符(、*、/、)增1减1运算符(、)C的运算符十分丰富, 有13类,30多种,其分类如下:算术运算符关系运算符(、=、!)逻辑运算符(!、&、|)基本赋值运算符()赋值运算符
40、算术自反赋值运算符基本运算符C语言运算符(、*、/、)逗号运算符(,)条件运算符(?:)数据长度运算符(sizeof).位逻辑运算符(、&、|、)位移运算符(、,)指针运算符(&,*)10/5/2018注意!少数运算符号有双重意义,主要有以下几种:(1) “”号,在算术运算中即表示单目的取正运算,又可表示双目的加法运算。(2) “”号,在算术运算中即表示单目的取负运算,又可表示双目的减法运算(3) “*”号,在算术运算中即表示双目的乘法运算, 在指针运算中表示指针变量指向的变量。(4) “&”号,在位逻辑运算中表示双目“与”运算,在指针运算中表示取地址的运算。10/5/2018二.算术运算符1
41、.基本算术运算符基本算术运算符的运算对象、运算规则与结果、结合性如表所示 :10/5/2018对象数运算符名称运算对象运算结果结合性单 目正负整型或实型整型或实型自右向左双 目*/加减乘除自左向右整除取余整型整数算术运算符的优先级规定如下: 单目基本算术运算符优先于双目基本算术运算符 *、/、优先于 、 同级单目基本算术运算符的结合性是自右向左 同级双目基本算术运算符的结合性是自左向右10/5/2018(nm)*f)*d,结果是25.0例1.基本算术运算符的使用设变量定义如下:int n=10, m=3;float f=5.0,g=10.0; double d=5.0,e=10.0; 则 n的
42、结果是10nm,nm,n*m,n/m,n%m的结果分别为13、7、30、3、1de,de,d*e,d/e的结果分别为15.0,5.0,50.0,0.5nmf*g/d的运算顺序相当于(nm(f*g)/d),结果是3.0nm*f*d的运算顺序相当于 l如果参加运算的两个数中有一个为浮点型,则结果是double型10/5/20182 增1减1运算符(1)增1减1运算符的运算对象、运算规则与结果、结合性如下表所示:10/5/2018对象数名称运算符运算规则运算对象运算结果结合性单目增1(前缀)先加1 后使用整型、字符型、指针型变量或 数 组 元素同运算对象的类型自右向左增1(后缀)先使用后加1减1(前
43、缀)先减1 后使用减1(后缀)先使用后减1(2)增1减1运算符的优先级:增1减1运算符优先于双目基本算术运算符增1减1运算符和单目运算符、同级别,结合性 是自右向左注意:例1:ab 应理解为(a)bab应理解为 (a)b10/5/2018若出现难以区分的若干个或组成运算符串时,C语言规定,自左向右取尽可能多的符号组成运算符。例2:增1减1运算符的使用设变量定义如下:char c1b,c2B;(c1,c2可看成整型,其值分别为98,66)则: c1 的值是99,运算后c1的值是c c1 的值是98,运算后c1的值是a c1c2的值是164,运算后c1的值是c,c2的值是B c1c2的值是32,运
44、算后c1的值是a,c2的值是B10/5/2018三.赋值运算符1.赋值运算符 赋值运算符是双目运算符,赋值运算符的左边必须是变量, 右边是表达式。(1)赋值运算符的运算对象及有关规则如下表:10/5/2018对象数名称运算符运算规则运算结果结合性双目赋值将表达式的值赋予变量表达式的类型自右向左(2)赋值运算符的优先级算术运算符优先于关系运算符优先于双目逻辑运算符优先于赋值运算符赋值运算符的结合性是自右向左10/5/2018(3)赋值运算符的使用设变量定义如下: charc1a,c2;intn165,n2,n3,n4,n5,n6; floatf13.0,f2;则: c2n1运算后,c2的值是65
45、,n1的值不变。 n2!c1运算后,n2的值是0,c1的值不变。 f2f10.001运算后,f2的值是3.001,f1的值不变。 n3c1n1|c1!n1运算后,n3的值是1,c1和n1的值不变。注:运算顺序相当于 n3(c1n1)|(c1!n1) n4n5n6(n1)运算后,n4,n5,n6的值均是64,n1的值是64。10/5/201897注意:上述表达式的值就等于赋值表达式中的最左边的变量值。2 .算术自反赋值运算符(1)运算规则10/5/201898对象数名称运算符运算规则运算对象运算结果结合性双目加赋值a+=b相当于a=a+(b)数值型数值型自右向左减赋值a=b相当于a=a(b)乘赋值*a*=b相当于a=a*(b)除赋值/ =a/=b相当于a=a/(b)模赋值%=a%=b相当于a=a%(b)整型整型
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- XX中学2025-2026学年春季学期寒假教研活动总结
- 超级福利攻略
- XX中学2025-2026学年春季学期寒假教师培训总结
- 工程概算员职业规划
- 医学人文视角的患者隐私保护
- 2026年教育法知识试题及答案
- 湖北省武汉市部分学校2026届高一下数学期末经典模拟试题含解析
- 2026届浙江宁波市北仑区高一下生物期末达标检测模拟试题含解析
- 江苏省南京市江浦高级中学2026届高一数学第二学期期末质量跟踪监视试题含解析
- 一年级语文下册2026年下学期期末模拟卷(AL)
- 2026年春节后复工复产安全培训:筑牢安全防线护航开工大吉
- 2026年江西省高职单招数学试题及答案
- 《跨境电商客户关系管理》课件-项目4 跨境电商客户忠诚度
- 2025幼儿园园务工作计划
- 2026年黑龙江伊春市高职单招语文考试试卷及答案
- 2025-2030高端大圆坯行业供需形势分析及重点企业投资建议研究报告
- 护理不良事件根本原因分析
- 2026春统编版小学道德与法治五年级下册(全册)课时练习及答案(附教材目录)
- 旅游服务质量管理课件 第6章旅游资源管理
- 2026年江苏城市职业学院江都办学点单招职业倾向性测试题库带答案
- 2026年山东力明科技职业学院单招综合素质考试题库带答案详解
评论
0/150
提交评论