C语言程序设计课件

上传人:m**** 文档编号:588698147 上传时间:2024-09-08 格式:PPT 页数:158 大小:1.65MB
返回 下载 相关 举报
C语言程序设计课件_第1页
第1页 / 共158页
C语言程序设计课件_第2页
第2页 / 共158页
C语言程序设计课件_第3页
第3页 / 共158页
C语言程序设计课件_第4页
第4页 / 共158页
C语言程序设计课件_第5页
第5页 / 共158页
点击查看更多>>
资源描述

《C语言程序设计课件》由会员分享,可在线阅读,更多相关《C语言程序设计课件(158页珍藏版)》请在金锄头文库上搜索。

1、武汉理工大学计算机学院武汉理工大学计算机学院授课教师授课教师:王红霞王红霞C语言程序设计9/8/20241选用教材与参考书n n主教科书主教科书主教科书主教科书顾治华、陈天煌等顾治华、陈天煌等C C C C语言程序设计语言程序设计语言程序设计语言程序设计机械工业出版社机械工业出版社机械工业出版社机械工业出版社 2007.22007.2n n参考教材参考教材参考教材参考教材 顾治华、陈天煌等顾治华、陈天煌等顾治华、陈天煌等顾治华、陈天煌等C C C C语言程序设计语言程序设计语言程序设计语言程序设计 实验实验实验实验指导指导指导指导 机械工业出版社机械工业出版社机械工业出版社机械工业出版社 20

2、07.22007.22007.22007.2n n参考书参考书参考书参考书 谭浩强谭浩强C C C C语言程序设计语言程序设计语言程序设计语言程序设计 清华大学出版清华大学出版清华大学出版清华大学出版社社社社9/8/20242课程内容第一章 C语言程序设计概述 第二章 算法及算法设计简介 第三章 数据描述与基本操作第四章 选择结构程序设计 第五章 循环结构程序设计 第六章 数组与指针第七章 函数与模块化程序设计方法9/8/20243第一章第一章 C C语言程序设计基础语言程序设计基础1.1 1.1 程序与程序设计程序与程序设计1.2 C.2 C语言简介语言简介1.3 1.3 简单的简单的C语言

3、程序语言程序1.4 C1.4 C语言程序的上机步骤语言程序的上机步骤1.5 C1.5 C语言的基本词法语言的基本词法1.6 C1.6 C语言程序的基本言程序的基本结构构9/8/20244程序与计算机语言程序与计算机语言程序是存放在计算机中的操作指令的集合。用程序设计语言安排好的处理问题的步骤称为计算机程序用程序设计语言编制一个能完成某项任务的计算机程序的过程叫做计算机程序设计。程序设计=数据结构+算法+程序设计方法+编程语言程序设计的关键:必须掌握一种程序设计语言。掌握程序设计的逻辑思维。9/8/20245 程序设计过程程序设计过程(1)问题的提出,要达到的要求;(2)确定数据结构和所采用的算

4、法;(3)编制程序;(4)调试程序;(5)整理并写出文档;9/8/20246C语言的特点(1)语言简洁、紧凑,使用方便、灵活。C语言一共只有32个关键字,主要用小写字母表示。(2)比其他高级语言更接近硬件,比低级语言更接近算法。程序易编、易读、易查错、易修改,兼有高级语言和低级语言的优点。(3)数据类型和运算符十分丰富,程序设计和算法描述更为简单和方便。(4)语法结构十分简单,语句数目少,简单易学。9/8/20247(6)它是一种模块化的程序设计语言,适合大型软件的研制和调试。(5)它是一种结构化程序设计语言,提供了完整的程序控制语句(选择语句和循环语句),很适合结构化的程序设计方法。(7)生

5、成目标代码质量高,程序执行效率高。(8)用c语言写的程序可移植性好。(9)它提供了大量的库函数以供调用,简化了程序设计工作。9/8/20248C语言程序的结构1)C语言是结构化的程序设计语言。2)C语言是模块化的程序设计语言,程序是由函数构成的。一个C源程序至少包含一个main函数,也可以包含一个main函数和若干个其他函数。因此,函数是C程序的基本单位。3)一个函数由两部分组成:函数的首部,函数的第一行。包括函数名、函数类型、函数属性、函数参数(形参)名、参数类型。函数体,即函数首部下面的大括弧.内的部分。如果一个函数内有多个括弧,则最外层的一对为函数的范围。函数体一般包括:声明部分声明部分

6、:在这部分中定义所用到的变量。执行部分执行部分: 由若干个语句组成。9/8/20249(4)一个C程序总是从main函数开始的,而不论main函数在整个程序中的位置如何(main函数可以放在程序最前头,也可以放在程序最后,或在一些函数之前,在另一些函数之后)。(5)C程序书写格式自由,一行内可以写几个语句,一个语句可以分写在多行上。(6)每个语句和数据定义的最后必须有一个分号。分号是C语句的必要组成部分。分号不可少。(7)C语言本身没有输入输出语句。输入输出的操作是由库函数scanf和printf等函数来完成的。(8)可以用/*/对C程序中的任何部分作注释。9/8/202410简单的C语言程序

7、示例例一main()printf(“ThisisaCprogram.n”);本程序的作用是输出以下一行信息:ThisisaCprogram.9/8/202411例二main()inta,b,sum;/*这是定义变量*/a=123;b=456;/*以下3行为C语句*/sum=a+b;printf(“sumis%dn”,sum);程序的运行结果:Sumis5799/8/202412例三/* example1.3 输入两个数,求其中较大的数*/#include int max(int x,int y) /* 被调用函数*/ int z; if (xy) z=x; else z=y; return(z

8、); /* 将z的值返回,通过max带回调用处*/main() /* 主函数*/ int a,b,c; scanf(“%d,%d”,&a,&b); c=max(a,b); printf(“max=%dn”,c);运行结果:4,6max=69/8/202413C程序的上机步骤 开始编辑编译有错?执行连接结果正确结束可执行目标程序f.exe源程序f.c目标程序f.obj库函数和其他目标程序YesNoYesNo9/8/202414C语言的基本词法标识符定定义义:在程序中使用的变量名、函数名、标号等统称为 标识符。除库函数的函数名由系统定义外,其余的都由用户自己定义。命命名名规规则则:标识符只能是字母

9、(AZ,az)、数字(09)、下划线(_)组成的字符串,并且其第一个字符必须是字母或下划线。 例如例如:以下标识符是合法的: a,x,x3,BOOK_1,sum5,_x7。 以下标识符是非法的: 3s,s*T,-3x,bowy-1,M.D.John,ab。9/8/202415(1)标准C不限制标识符的长度,但它受各种版本的C语言编 译系统限制,同时也受到具体机器的限制。Turbo C规定标识符的长度为32。一般情况下,标识符的长度不要超过8个字符。(2)在标识符中,大小写是有区别的。例如SUM和sum是两个 不同的标识符。变量名应尽量使用小写字母,以增加程序的可读性。(3)标识符虽然可由程序员

10、随意定义,但标识符是用于标识某个量的符号。因此,命名应尽量有相应的意义,以便于阅读理解,做到“顾名思义”。在C语言中,所有的变量都是先定义后应用,使用没有定义的变量名被认为是“非法”的。 在使用标识符时还必须注意以下几点:在使用标识符时还必须注意以下几点:9/8/202416C语言的基本词法关键字关键字定定义义:关键字是由语言规定的具有特定意义的字符串,通常也称为保保留留字字。用户定义的标识符不应该与关键字相同。分类分类:语言的关键字分为以下3类:(1)类型说明符 用于定义和说明变量、函数或其它数据结构的类型。如int,double,float,long,short,auto,signed,s

11、tatic,struct,unsigned,char,enum,extern,register和union等。9/8/202417(2)语句定义符用于表示一个语句的功能。如条件语句的语句定义符if else,循环语句的语句定义符do,while,for等。(3)预处理命令字用于表示一个预处理命令,使用时前面要加“”。如include,define,ifdef,endif等。关键字后必须有空格、圆括号、尖括号、双引号等分隔符,否则与其它字符一起组成新的标识符。9/8/202418C语言的基本词法其它其它运算符运算符语言中含有相当丰富的运算符。运算符与变量,函数一起组成表达式,表示各种运算功能。运

12、算符由一个或多个字符组成。分隔符分隔符在语言中采用的分隔符有逗号和空格两种。逗号主要是用在类型说明和函数参数表中分隔各个变量。空格多用于语句各单词之间作间隔符。常量常量C语言中使用的常量可分为数字常量、字符常量、字符串常量、符号常量、转义字符等多种。9/8/202419语言的字符集语言的字符集(1)字母 小写字母az共26个,大写字 母AZ共26个。(2)数字09共10个。(3)空格符、制表符、换行符等统称为空白符。(4)标点和特殊字符9/8/202420C语言程序设计的基本结构 (1)顺序结构 ABa b 9/8/202421(2)选择结构,或称分支结构 此结构中必包含一个判断框。根据给定的

13、条件P是否成立而选择执行A框或B框abBAp不成立成立9/8/202422(3)循环结构,它又称为重复结构,即反复执行某一部分的操作。又两类循环结构: (a)当型(while型)循环结构它的功能是判断当前给定的条件p1成立时,执行A框操作,执行完A后,再判断条件p1是否成立,如果仍然成立,再执行A框,如此反复执行A框,直到某一次p1条件不成立为止,此时不执行A框,而从b点脱离循环结构。ap1TFAb9/8/202423(b)直到型(Until型)循环结构 它的功能是先执行A框,然后判断给定的p2条件是否成立,如果p2条件不成立,则再执行A,然后再对p2条件作判断,如果p2条件仍然不成立,又执行

14、A如此反复执行A,直到给定的p2条件成立为止,此时不再执行A,从b点脱离本循环结构。aAFTbp29/8/202424本章课堂练习 (1) 以下说法中正确的是( ). A) C语言程序总是从第一个函数开始执行 B) 在C语言程序中,要调用的函数必须在main()函数中定义 C) C语言程序总是从main()函数开始执行 D) C语言程序中的main()函数必须放在程序的开始部分9/8/202425解答:C解释:C语言程序总是从main()函数开始执行,而不论其在程序中的位置。当主函数执行完毕时,亦即程序执行完毕。除main函数外,其它函数都是在执行main函数时被调用执行的。在C语言中,函数不

15、允许嵌套定义。习惯上,将主函数main()放在最前头,但并不是必须的。9/8/202426(2)以下叙述不正确的是A)一个C源程序可由一个或多个函数组成B) 一个C源程序必须包含一个main函数C) C程序的基本组成单位是函数 D) 在C程序中,注释说明只能位于一条语句的后面9/8/202427解答:D解释: 凡是用“/*”和“*/”括起来的文字,都是注释。其出现的位置可以任意。9/8/202428(3)下列标识符中,合法的变量名有:A)a.b B)$888 C)A1 D) 3x56 9/8/202429解答:C解释:变量名只能由字母、数字和下划线三种字符所组成,且第一个字符必须为字母或下划线

16、。C语言的关键字不能用作变量名。另外,C语言对英文字母的大小写敏感,即同一字母的大小写,被认为是两个不同的字符。习惯上,变量名和函数名中的英文字母用小写,以增加可读性。9/8/202430 第二章 算法及算法设计简介2.1 2.1 算法的概念算法的概念2.2 2.2 算法的设计与表达算法的设计与表达2.3 2.3 简单的算法实例简单的算法实例2.4 2.4 结构化程序设计方法简介结构化程序设计方法简介9/8/202431算法的概念算法的概念任何一个程序应包含的如下两方面的内容:(1)对数据的描述。在程序中要指定数据的类型和数据的组织形式,即数据结构(datastructure). (2)对操作

17、的描述。即操作步骤,也就是算法(algorithm)。著名计算机科学家沃思(Nikiklaus Wirth)提出公式 数据结构算法程序算法:算法:是对解决某个问题的方法步骤的描述。程序:程序:从计算机角度来说,程序是用某种计算机能理解并执行的计算机语言描述解决问题的方法和步骤。9/8/202432实际上,一个程序除了以上两个主要要素之外,还应当采用结构化程序设计方法进行程序设计,并且用某一种计算机语言表示。因此,可以这样表示: 程序算法数据结构程序设计方法语言工具和环境 在这4个方面中,算法是灵魂,数据结构是加工对象,语言是工具,编程需要采用合适的算法。算法是解决“做什么”和“怎么做”的问题。

18、9/8/202433算法的表示算法的表示 1、用自然语言表示算法 采用汉语、英语或其它语言来描述解决问题的方法和步骤。由于自然语言容易出现“歧义性”,且描述问题的文字冗长,因此一般很少使用自然语言来描述算法。 9/8/202434例例1:有有50个学生个学生,要求将他们之中成绩在,要求将他们之中成绩在80分以上者打印出来。分以上者打印出来。用用n表示学号,表示学号,n1代表第一个学生学号,代表第一个学生学号,ni代表第代表第i个学生学号。个学生学号。用用g代表学生成绩,代表学生成绩,gi代表第代表第i个学生成绩,算法可表示如下:个学生成绩,算法可表示如下:S1:1iS2:读入学号读入学号ni和

19、和成绩成绩giS3:如果如果gi 80,则,则打印打印ni和和gi,否则不打印否则不打印S4:i+1iS5:如果如果i 50,返回返回S2,继续执行;继续执行;否则,算法结束。否则,算法结束。9/8/202435起止框输入/输出框判断框处理框流程线2、用流程图表示算法(1)常用的流程图符号9/8/202436上例用流程图表示: (1)流程图表示算法的优点:表示算法直观形象,比较清楚地显示出各个框之间的逻辑关系。简单,易于掌握。 流程图9/8/2024373、用NS图表示算法 1973年美国学者I.Nassi和B.Shneiderman提出了一种新的流程图形式。在这种流程图中,完全去掉了带箭头的

20、流程线。全部算法写在一个矩形框内,在该框内还可以包含其他的从属于它的框。 这种流程图又称NS结构化流程图。NS流程图用以下的流程图符号:(1)顺序结构:AB9/8/202438(2)选择结构:P成立不成立AB(3)循环结构:当p1成立A当型循环结构直到p1成立A直到型循环结构用以上3种NS流程图中的基本框,可以组成复杂的NS流程图,以表示算法9/8/202439上例用NS图表示:用NS表示算法如图 1=i输入ni,gigi80是否输出ni,gii+1=i直到i509/8/2024404、用伪码表示算法 伪代码是用介于自然语言和计算机语言之间的文字和符号来描述算法。它不用图形符号,因此书写方便,

21、格式紧凑,也比较好懂,便于向计算机语言算法(即程序)过渡。 例 有50个学生,要求将他们之中成绩在80分以上者打印出来。用n表示学生学号,n1表示第一个学生学号,ni表示第i个学生学号。用g表示学生成绩,gi表示第i个学生成绩。9/8/202441BEGIN(算法开始算法开始)1=iWhile ii END(算法结束)算法结束) 用伪代码表示算法如下:9/8/2024425、用计算机语言表示算法 设计算法的目的是为了实现算法。因此,不仅要考虑如何设计一个算法,也要考虑如何实现一个算法。我们的任务是用计算机解题,也就是要用计算机实现算法。计算机是无法识别流程图和伪代码的。只有用计算机语言编写的程

22、序才能被计算机执行(当然还要经过编译成目标程序才能被计算机识别和执行)。因此,在用流程图或伪代码描述出一个算法后,还要将它转换成计算机语言程序。9/8/202443例: 有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) printf(“%6d,%3dn”,ni,gi);9/8/202444例例2:对一个大于或等于:对

23、一个大于或等于3的正整数,判断它是不是一个素数。的正整数,判断它是不是一个素数。方法:将方法:将n(其中其中n 3)作为被除数,作为被除数,将将2到(到(n-1)各个整数各个整数轮流作为除数,如果都不能被整除,则轮流作为除数,如果都不能被整除,则n为素数。为素数。简单的算法实例简单的算法实例9/8/202445算法表示如下:算法表示如下:S1:输入输入n的值的值S2:2i(i作为除数)作为除数)S3:n被被i除,得余数除,得余数rS4:如果如果r等于等于0,表示表示n能能被被i整除,则打印整除,则打印n“不不是素数是素数”,算法结束;否则执行,算法结束;否则执行S5S5:i+1iS6:如果如果

24、i n-1,返回返回S3;否则,打印否则,打印n“是素数是素数”,算,算法结束。法结束。9/8/202446S1:1signS2:1sumS3:2denoS4:(-1)*signsignS5:sign*(1/deno)termS6:sum+termsumS7:deno+1denoS8:若若deno 100返回返回S4;否则算法结束。否则算法结束。例3:求1-1/2+1/31/4+1/991/100。9/8/202447结构化程序设计方法简介 1、三种基本结构回顾 (1)顺序结构 ABa b 9/8/202448(2)选择结构,或称分支结构 abBAp不成立成立9/8/202449(3)循环结构

25、,它又称为重复结构,即反复执行某一部分的操作。又两类循环结构: (a)当型(while型)循环结构ap1TFAb9/8/202450(b)直到型(Until型)循环结构 aAFTbp29/8/2024512、结构化程序 所谓结构化程序,就是仅仅使用顺序、选择、循环等三种基本结构所构造的程序。 3、结构化程序设计方法 结构化程序设计方法的基本思想是,把一个复杂问题的求解过程分阶段进行。每个阶段的问题都控制在人们容易理解和处理的范围内。 9/8/2024521 = ii+1 =igi80i50结束开始打印ni,giYNNY读入ni和gi9/8/202453解答:()用自然语言表示()用传统的流程图

26、表示()NS流程图()用伪代码表示等。1、算法的表示形式主要有哪些?课堂练习课堂练习9/8/2024542、设计算法:A、B两人各有一桶油,现两人要将各自桶内的油互换。解答:必须借助另外一个空桶,并按如下算法进行:(用Si表示第i步操作,A的桶叫A,B的桶叫B,空桶叫M)开始: S0:将A桶中的油倒入M桶中; S1:将B桶中的油倒入A桶中; S2:将M桶中的油倒入B桶中; 9/8/2024553、设计算法写出求n!的算法解答:S0:给出n的值;S1: 1=p;S2: 2=i;S3: p*i=p;S4: i+1=i;S5: 若i=n,返回S3;否则,结束 9/8/202456第三章第三章 数据描

27、述与基本操作数据描述与基本操作3.1基本数据基本数据类型型3.2 3.2 常用的运算符和表达式常用的运算符和表达式3.3 3.3 表达式及赋值语句表达式及赋值语句3.4 3.4 基本输入输出操作的实现基本输入输出操作的实现3.5 3.5 顺序序结构程序构程序设计实例例9/8/202457概述使用高级语言编写程序,必须在程序中做好两件事:一是描述数据,二是描述数据的加工方法。前者是通过数据定义语句实现的,后者是通过若干执行语句,包括用各种运算符构成的表达式来实现的。本单元主要介绍C语言的基本数据类型,为后续单元的学习奠定一个基础。关于复杂的数据类型(如数组、指针、结构型、共用型等)将在以后单元中

28、介绍。9/8/2024583.1 C语言的数据类型 C语言具有十分丰富的数据类型。所谓数据类型是指数据的内在表现形式。具体的数据类型有以下若干种:1.基本数据类型:整型、实型和字符型。2.构造类型:由若干个相关的基本数据类型数据组合在一起形成的一种复杂的数据类型,如数组型、结构型和共用型。3.指针型:一种简单的数据类型,它是用来表示内存地址的。指针类型的数据可以表示基本类型数据的地址,它可以表示结构类型数据的首地址和其中某个具体数据的地址。9/8/2024594.枚举型:某数据在程序运行中,只取固定的几个值。我们可以把这几个值列出来,以后这个数据只能取这几个值中的某一个。5.空类型:没有任何具

29、体值的数据类型。9/8/202460C语言中的数据类型如下图所示: 数据类型基本类型整型字符型实型(浮点型)单精度型双精度型枚举类型构造类型数组类型结构体类型共用体类型指针类型空类型9/8/202461常量和变量常量和变量2.常量的分类 (1)整型常量 (2)实型常量 (3)字符常量 (4)字符串常量 (5)符号常量 常量的类型,可通过书写形式来判别。常量常量 1.常量的概念 在程序运行过程中,其值不能被改变的量称为常量。9/8/202462变量变量1.变量的概念在程序运行过程中,其值可以被改变的量称为变量。2.变量的两个要素(1)变量名。每个变量都必须有一个名字变量名,变量命名遵循标识符命名

30、规则。(2)变量值。在程序运行过程中,变量值存储在内存中。在程序中,通过变量名来引用变量的值。9/8/202463变量有以下几个特征:变量名、变量值、变量的数据类型、变量的地址、变量的存储类别、变量的作用域及变量的生存期等。变量必须先定义后使用。定义变量格式如下:数据类型关键字 ;如int x,y,z;变量的初始化:变量赋初值的过程就是变量初始化过程。 9/8/202464整型数据整型数据整型常量:整型常量就是整常数,包括正整数和负整数及0。其书写形式如下:(1)十进制整数。如十进制整数。如123,456,0。(2)八进制整数。以八进制整数。以0开头的是八进制数。如开头的是八进制数。如0123

31、表示八进制表示八进制数数123,即,即(123)8。(3)十六进制整数。以十六进制整数。以0x开头的数是十六进制数。如开头的数是十六进制数。如0x123,代表十六进制数,代表十六进制数,(123)16116216316256323291。9/8/202465整型常量在一般微型机中占用2个字节,不管是十进制、八进制或十六进制整数,它们的数值范围都是十进制的3276832767。注意:注意:C语言还提供一种“长整型常量”。它们的数值范围是十进制的21474836482147483647,在计算机中占用四个字节,它们的书写方法是在数据的末尾加一个大写字母“L”或小写字母“l”,如0L,038L,0x

32、15L。9/8/202466 整型变量整型变量1.分类 根据占用内存字节数的不同,整型变量又分为类:(1)基本整型(类型关键字为int)。(2)短整型(类型关键字为short int)。(3)长整型(类型关键字为long int)。(4)无符号整型。无符号型又分为无符号基本整型(unsigned int)、无符号短整型(unsigned short)和无符号长整型(unsigned long)三种,只能用来存储无符号整数。9/8/2024672.占用内存字节数与值域 上述各类型整型变量占用的内存字节数,随系统而异。在16位操作系统中,一般用字节表示一个int型变量,且long型(字节)int型

33、(字节)short型(字节)。9/8/202468 实型数据实型数据 实型常量实型常量 .表示形式实型常量即实数,在语言中又称浮点数,其值有两种表达形式: (1)一般形式的实数,它是由整数、小数点、小数三部分组成。其中整数部分或小数部分可以省略。数的正负用前面的“”(可以省略)号或“”号来区分。例如,12.345,1.2345,47.0,.234,47.等都是实型常量。9/8/202469(2)指数形式的实数,它是由尾数、小写字母e或大写字母E、指数三部分组成,尾数部分可以是十进制整型常量或一般形式的实数,指数部分是十进制的短整型常量(可以带E负号)例如,12.3e2,1.2e-3,47.0e

34、2,.234e-3等都是实型常量。C语言规定,字母e(或者E)之前必须要有数字,且e(或者E)后面的指数必须为整数。如:e3,5e3.5,.e3都是不合法的指数形式。9/8/202470注意:实型常量在一般的微机中是占用4个字节的,不管是一般形式还是指数形式,它们的数值范围都是1010有效数字7位。例如,1.23456789和1.234567是相同的,因为实型常量的有效数字是7位,所以1.23456789中的后两位是无效的。38389/8/202471实型变量实型变量语言的实型变量,分为两种: (1)单精度型。类型关键字为float,一般占字节 (位)、提供位有效数字。 (2)双精度型。类型关

35、键字为double,一般占个字节、提供1516位有效数字。9/8/202472字符型数据字符型数据A、把单个字符用一对单引号括起来表示字符常量。如a,d,w,?等都是字符常量。B、用该字符的ASCII码值表示字符常量。如65表示AC、转义字符:反斜杠开头后跟规定的单个字符或数字,并用一对单引号括起来表示字符常量。如下:一一字符常量字符常量1.字符常量是ASCII码字符集里的一个字符,包括字母(大、小写有区别)、数字和标点符号以及特殊字符等,均为半角字符。2.字符常量表示形式:9/8/202473 字符形式 含 义 ASC n换行,将当前位置移到下一行开头 10 t水平制表(跳到下一个tab位置

36、) 9 b退格,将当前位置移到前一列 8 r回车,将当前位置移到本行开头 13 f换页, 将当前位置移到下页开头 12 反斜杠字符“” 92 单引号(撇号)字符 39 “双引号字符 34 ddd1到3位8进制数所代表的字符 xhh1到2位16进制数所代表的字符 9/8/202474例1:字符与整数的转化#include stdio.hvoid main() int i; char n; n=97; i=b; printf(n=%cn,n); printf(i=%dn,i); printf(i=%cn,i);程序的输出为: n=a i=98 i=b9/8/202475例2 字符参与整数运算#in

37、clude stdio.hvoid main() char n; n=a; n=n-65; printf(n=%dn,n);程序的输出结果为: n=329/8/202476例例3 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); 程序的输出为n=Ai=b 9/8/202477二字符串常量字符串就是用两个双引号(“)号后括住的若干个字符,例如,“abc”,“123456”,“aBbB”都是字符串。转义符可以出现在字符串中,例如,“A

38、BC”,“101102x43x44”等都是字符串,分别表示“ABCD”、“ABCD”两个字符串。9/8/202478一个字符串中所有的字符的个数称为该字符串的长度,其中每个转义字符只当做一个字符。例如,“ABC”的长度为5。注意注意!a与“a”的区别。C语言规定:每个字符串在内存中占用的字符数等于字符串的长度1。其中最后一个字符存放的字符称为“空字符”其值为0,书写时常用转义字符“0”来表示。在C语言中称为字符串结束标志。9/8/202479关于变量的补充内容 1.变量:变量是指在程序运行过程中其值可以发生变化的量。2.变量的取名规则为:以字母、下划线“_”开头,后跟若干个字母、下划线、数字。

39、一般约定,用户使用的变量名采用以字母开头,C语言内部使用的变量名以下划线开头。例如,abc,a_1,age_1等都是合法的变量名,而3a,age则是非法的变量名。当程序运行时,每个变量都要占用若干个连续的字节,所占用的字节数由变量的数据类型确定。其中第1个字节的地址称为变量的地址。C语言规定,程序中变量的地址是用“&变量名”来表示的。9/8/2024803.变量的数据类型及其定义(1)变量可以是任何一种数据类型,具有某种数据类型的变量就叫做该类型变量。(2)每个变量在使用前必须定义,说明其数据类型。(3)定义变量数据类型的语句格式如下:数据类型符数据类型符变量变量1,变量,变量2.;9/8/2

40、02481 数据类型数据类型 数据类型符数据类型符占用字节数占用字节数 数据范围数据范围 整型整型 int 2(或或4)同短同短整型整型(或长整型或长整型) 短整型短整型 short 23276832767 长整型长整型 long 4-21474836482147483647无无符号整型符号整型unsigned int 2(或或4)同无同无符号短整型符号短整型(或长整型或长整型)无符号短整型无符号短整型unsigned short 2 065535无符号长整型无符号长整型unsigned long 4 04294967295单精度实型单精度实型 float 4 10 10双精度实型双精度实型

41、double 8 10 10 字符型字符型 char 1 128127基本数据类型符及含义如下表所示:基本数据类型符及含义如下表所示:38383083089/8/2024825.变量的初始化变量的初始化(1)在定义变量的同时给变量赋予初始值就称为变量的初始化。(2)变量赋初值的语句格式如下:存储类型符数据类型符变量名1初值1,变量名2初值2,9/8/2024833.2运算符运算符1概述概述2算术运算符算术运算符3赋值运算符赋值运算符4逗号运算符逗号运算符5条件运算符条件运算符6长度运算符长度运算符7位运算符位运算符8关系运算符关系运算符-下章介绍下章介绍9逻辑运算符逻辑运算符下章介绍下章介绍9

42、/8/202484一一.概述概述用来表示各种运算的符号称为运算符。运算符必须有运算对象,运算对象是一个的,则称为单目运算;运算对象是两个的,则称为双目运算双目运算;运算对象是三个的,则称为三目运算三目运算。例如,数值运算中经常用到的、*、/等。9/8/202485每个运算符都代表对运算对象的某种运算,都有自己特定的运算规则。每个运算符运算的对象都规定了数据类型,同时运算结果也有确定的数据类型。当表达式中出现多个运算符,计算表达式值时,就有谁先算,谁后算的问题,我们把这个问题称为运算符的优先级。计算表达式值时,优先级高的运算要先进行运算。同级别的运算符有左结合和右结合之分。9/8/202486C

43、的运算符十分丰富,有13类,30多种,其分类如下:C语言运算符基本运算符算术运算符基本算术运算符(、*、/、)增1减1运算符(、)关系运算符(、=、!)逻辑运算符(!、&、|)赋值运算符基本赋值运算符()算术自反赋值运算符(、*、/、)逗号运算符(,)条件运算符(?:)数据长度运算符(sizeof)位运算符位逻辑运算符(、&、|、)位移运算符(、,.)指针运算符(&,*)9/8/202487注意!少数运算符号有双重意义,主要有以下几种:(1)“”号,在算术运算中即表示单目的取正运算,又可表示双目的加法运算。(2)“”号,在算术运算中即表示单目的取负运算,又可表示双目的减法运算(3)“*”号,在

44、算术运算中即表示双目的乘法运算,在指针运算中表示指针变量指向的变量。(4)“&”号,在位逻辑运算中表示双目“与”运算,在指针运算中表示取地址的运算。9/8/202488二二.算术运算符算术运算符1.基本算术运算符基本算术运算符的运算对象、运算规则与结果、结合性如表所示:对象数 运算符 名称运算对象运算结果结合性单目双目正负整型或实型整型或实型自右向左自左向右*/加减乘除整除取余整型整数9/8/202489算术运算符的优先级规定如下:单目基本算术运算符优先于双目基本算术运算符*、/、优先于、同级单目基本算术运算符的结合性是自右向左同级双目基本算术运算符的结合性是自左向右9/8/202490例1.

45、基本算术运算符的使用设变量定义如下:intn=10,m=3;floatf=5.0,g=10.0;doubled=5.0,e=10.0;则n的结果是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的运算顺序相当于(nm)*f)*d,结果是25.0l如果参加运算的两个数中有一个为浮点型,则结果是double型9/8/2024912增1减1运算符(1)增1减1运算符的运算对象、运算规则与结果、结合性如下表所示:对象数单目名称运算

46、符 运算规则 运算对象运算结果 结合性增1(前缀)先加1后使用增1(后缀)减1(前缀)减1(后缀)先使用后加1先减1后使用先使用后减1整型、字符型、指针型变量或数组元素同运算对象的类型自右向左9/8/202492(2)增1减1运算符的优先级:增1减1运算符优先于双目基本算术运算符增1减1运算符和单目运算符、同级别,结合性 是自右向左注意:注意:若出现难以区分的若干个或组成运算符串时,若出现难以区分的若干个或组成运算符串时,C语言规定,自左向右取尽可能多的符号组成运算符。语言规定,自左向右取尽可能多的符号组成运算符。例1:ab应理解为(a)bab应理解为(a)b9/8/202493例2:增1减1

47、运算符的使用设变量定义如下:charc1b,c2B;(c1,c2可看成整型,其值分别为98,66)则:c1的值是99,运算后c1的值是cc1的值是98,运算后c1的值是ac1c2的值是164,运算后c1的值是c,c2的值是Bc1c2的值是32,运算后c1的值是a,c2的值是B9/8/202494三三.赋值运算符赋值运算符1.赋值运算符 赋值运算符是双目运算符,赋值运算符的左边必须是变量,右边是表达式。(1)赋值运算符的运算对象及有关规则如下表:对象数 名称 运算符 运算规则 运算结果 结合性 双目赋值 将表达式的值赋予变量 表达式的 类型自右向左9/8/202495(2)赋值运算符的优先级算术

48、运算符优先于关系运算符优先于双目逻辑运算符优先于赋值运算符赋值运算符的结合性是自右向左9/8/202496(3)赋值运算符的使用设变量定义如下:charc1a,c2;intn165,n2,n3,n4,n5,n6;floatf13.0,f2;则:c2n1运算后,c2的值是65,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。注意注

49、意:上述表达式的值就等于赋值表达式中的最左边的变量值。9/8/2024972.算术自反赋值运算符(1)运算规则对象数 名称 运算符运算规则运算对象 运算结果结合性双目加赋值减赋值乘赋值除赋值模赋值*/=%=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)数值型数值型自右向左整型整型9/8/202498(2)算术自反赋值运算符的优先级算术运算符优先于关系运算符优先于双目逻辑运算符优先于算术自反赋值运算符算术自反赋值运算符和赋值运算符是同级别的,结合性是 自右向左9/8/202499(3)算术自反赋值运算符的使

50、用设变量定义如下intn1=10,n2=10,m1=10,m2=10,m3=10,m4=10;则:n1n2,n1的值为20,n2的值不变n1n2,n1的值为0,n2的值不变n1*n2,n1的值为100,n2的值不变n1/n2,n1的值为1,n2的值不变m1m2m3*m4/2运算后,m1,m2,m3,m4的值依次是30,40,50,5。运算顺序相当于m1(m2(m3*(m4/2)9/8/2024100四四.逗号运算符逗号运算符逗号运算符是双目运算符,其运算对象是表达式。逗号运算符是双目运算符,其运算对象是表达式。1.逗号运算符对象数 名称 运算符 运算规则运算对象 结合性 双目逗号 ,依次计算前

51、、后表达式 表达式自左向右注意:由逗号运算符组成的式子也是表达式,其值等于最右边 的表达式的值2.逗号运算符的优先级任何运算符优先于逗号运算符逗号运算符的结合性是自左向右9/8/20241013.例题。设整型变量a,b为2,则:ba3,cb4运算结果:a不变,b为5,c为9,表达式的值为9da,ed,fe运算结果:a为1,d为1,e为1,f为1,表达式的值为19/8/2024102五五.条件运算符条件运算符1.条件运算符对象数 名称 运算符 运算规则运算对象运算结果结合性 三目条件 ?:对e1?e2:e3e1为真,获得e2e1为假,获得e3 表达式 e2(e3)的类型 自右 向左 2.条件运算

52、符的优先级其它运算符优先于条件运算符优先于赋值、算术自反赋值运算符条件运算符的结合性是自右向左9/8/20241033.例子(1)设整型变量a,b,c,d均为2则ab?(c1):(d0);结果a,b,d不变,c为1,表达式的值为1(2)a13?(ba2):(ca3); 结果a,c不变,b为4,表达式值为4(3)ab?(c0):(ab?(c1):(c1)); 结果a,b不变,c为0,表达式的值为09/8/20241041.长度运算符六六.长度运算符长度运算符对象数 名称 运算符 运算规则运算对象运算结果结合性 单目长度sizeof测试数据类型所占用的字节数类型说明符或变量 整型 无2.长度运算符

53、优先级和单目算术运算符、单目逻辑运算符、增1减1运算符同级别1053.例子设变量定义如下:intn;shorts;unsignedlongu3;floatf;charc;则sizeof(n)的值是2sizeof(s)的值是2sizeof(long)的值是4sizeof(unsignedint)的值是2sizeof(u3)的值是4sizeof(f)的值是4sizeof(double)的值是8sizeof(c)的值是1注意注意:上述结果是:上述结果是TurboC2.0在微机上运行的结果。在微机上运行的结果。106七七 位运算位运算C语言中提供的位运算符: 、 、 & 、 、1.1.按位取反运算符按

54、位取反运算符形式: A功能:把A的各位都取反,(即0变1,1变0)例如:int A=179A0 0 000 0 0 010110011A1 1 111 1 1 1010011009/8/20241072.按位与运算符按位与运算符&形式:A&B功能:对A的各位与B的对应位进行比较,如果两者都为1,A&B对应位上的值为1,否则为0。例如:int A=179(二进制0000000010110011) int B=169(二进制0000000010101001)A0 0 0 0 00 0 0 10 11 0 0 1 1B0 0 0 0 00 0 0 10 10 1 0 0 1A&B 0 0 0 0 0

55、0 0 0 10 10 0 0 0 19/8/20241083.按位或运算符按位或运算符|形式:A|B功能:对A的各位与B的对应位进行比较,如果两者中有一个为1,A|B对应位上的值为1,否则为0。例如:int A=179(二进制0000000010110011) int B=169(二进制0000000010101001)A00 00 0 00 0 1 0 11 00 1 1B00 00 0 00 0 1 0 10 10 0 1A|B 00 00 0 00 0 1 0 11 10 1 19/8/20241094.按位异或运算符按位异或运算符形式:AB功能:对A的各位与B的对应位进行比较,如果两

56、者不同,AB对应位上的值为1,否则为0。例如:int A=179(二进制0000000010110011) int B=169(二进制0000000010101001)A0 0 0 000 0 0 1 0 1 10011B0 0 0 000 0 0 1 0 101001AB 0 0 0 000 0 0 0 0 0110109/8/20241105.左移运算符左移运算符形式:An(其中其中n为一个大于为一个大于0的整型表达式)的整型表达式)功能:把A的值向左移动n位,右边空出的n位用0填补。当左移时移走的高位中全都是0时,相当于对A作n次乘以2的运算。例如:int A=27(二进制0000000

57、000011011)A0 0 0 0 0 0 0 0 0 0011011A形式:An(其中其中n为一个大于为一个大于0的整型表达式)的整型表达式)功能:把A的值向右移动n位,左边空出的n位用0填补。相当于对A作n次除以2的运算。例如:int A=179(二进制0000000010110011)A0 0 0 0 0 0 0 0 1 0110011A3 0 0 0 0 0 0 0 0 0 00101109/8/20241123.3 表达式用运算符将运算对象连接形成的式子就是表达式。1.表达式的定义2.C2.C语言的表达式非常丰富,也有人称语言的表达式非常丰富,也有人称C C语言语言为表达式语言。为

58、表达式语言。9/8/2024113C语言使用的基本表达式有:语言使用的基本表达式有:赋值表达式,如:赋值表达式,如:a=3算术表达式,如:算术表达式,如:3+4*2关系表达式,如:关系表达式,如:32逻辑表达式,如:逻辑表达式,如:35&a=b条件表达式,如:条件表达式,如:ab?a:b逗号表达式,如:逗号表达式,如:a=3,b=4,c=59/8/20241143.4 赋值语句赋值语句 1.构成规则: (1) 变量表达式;(2)变量赋值运算符表达式分号9/8/20241152.注意区分赋值语句和赋值表达式的区别:例如a=b+2(这是赋值表达式)a=b+2;(这是赋值语句)a+(这是表达式)a+

59、;(这是赋值语句,等价与a=a+1;)9/8/20241163.5 输入输出在输入输出在C语言中的实现语言中的实现1.输入输出的概念从计算机向外部输出设备(如显示屏、打印机、磁盘等)输出数据称为“输出输出”,从外部向输入设备(如键盘、磁盘、光盘、扫描仪等)输入数据称为“输入”。2.C语言本身不提供输入输出语句,输入和输出操作是由函数来实现的。在C标准函数库中提供了一些输入输出函数,例如,printf函数和scanf函数。9/8/20241173.在使用C语言库函数时,要用预编译命令“include”将有关的“头文件头文件”包括到用户源文件中。在调用标准输入输出库函数时,文件开头应有以下预编译命

60、令:#include或#include“stdio.h”4.允许在使用printf和scanf两个函数时可不加#include命令。9/8/2024118一、字符数据的输入输出1.putchar函数(字符输出函数)函数格式:putchar(C);C可以是字符型变量或整型变量或常量函数的功能:向终端输出一个字符9/8/20241192.程序实例#includemain()chara,b,c;a=B;b=O;c=Y;putchar(a);putchar(b);putchar(c);注意:该程序可以输出控制字符,如putchar(n)输出一个换行符,也可以输出其他转义字符如putchar(101)(

61、输出字符A)putchar()(输出单引号字符)运行结果:BOY9/8/20241203.getchar函数(字符输入函数)函数格式,getchar()函数的功能:从终端输入一个字符,函数的值就是从输入设备得到的字符。4.程序实例#includemain()charc;c=getchar();putchar(c);在运行时,如果从键盘输入字符a并按回车键,就会在屏幕上看到输出的字符a。a(输入a后,按“回车”键,字符才送到内存)a(输出变量c的值a)9/8/2024121注意:(1)getchar()只能接收一个字符,getchar函数收到的字符可以赋给一个字符变量或整型变量。(2)若在程序中

62、调用getchar、putchar函数,则必须在程序的开头部分加上“包含命令”#include或或#include“stdio.h”9/8/2024122二、格式输入与输出二、格式输入与输出(一)、printf函数(格式输出函数)1.printf函数的一般格式为printf(“格式控制字符串”,输出表列)括弧内包括两部分:(1)“格式控制字符串”是用双引号括起来的字符串,也称“转换控制字符串”,它包括两种信息:格式说明,由“”和格式字符组成,如%d,%f等。它的作用是将输出的数据转换为指定的格式输出。格式说明总是由“”字符开始的。普通字符,即需要原样输出的字符。(2)“输出表列”是需要输出的一

63、些数据,可以是表达式。9/8/2024123下面是一个例子:printf(“%d%d”,a,b);格式说明输出表列printf(“a%db=%d”,a,b);格式说明输出表列9/8/20241242.格式字符常用的有以下几种格式字符:(1)d格式字符。用来输出十进制整数。有以下几种格式字符:d,按整型数据的实际长度输出。md,m为指定的输出字段的宽度。如果数据的位数小于m,则左端补以空格,若大于m,则按实际位数输出。如printf(“%4d,%4d”,a,b);若a123,b12345,则输出结果为|_|123,12345ld,输出长整型数据。如longa=135790;printf(“%ld

64、”,a);9/8/2024125对long型数据应当用ld格式输出。对长整型数据也可以指定字段宽度,如将上面printf函数中的“ld”改为“8ld”则输出为:|_|_|135790(8列)一个int型数据可以用d或ld格式输出。(2)O格式符,以八进制数形式输出整数。由于是将内存单元中的各位的值(0或1)按八进制形式输出,因此输出的数值不带符号,即将符号位也一起作为八进制数的一部分输出。例如:inta=-1;printf(“%d,%o”,a,a);9/8/20241261111111111111111输出为1,177777对长整型数(long型)可以用“lo”格式输出。同样可以指定字段宽度,

65、如printf(“8o”,a)输出为|_|_|1777771在内存单元中的存放形式(以补码形式存放)如下:9/8/2024127(3)x格式符,以十六进制数形式输出整数。同样不会出现负的十六进制数。例如inta=1;Printf(“%x,%o,%d”,a,a,a);输出结果为:ffff,177777,19/8/2024128(4)u格式符,用来输出unsigned型数据,即无符号数,以十进制形式输出。(5)C格式符,用来输出一个字符。如:charc=a;printf(“%c”,c);输出字符a,请注意:“c”中的c是格式符,引号右边的c是变量名,不要搞混。一个整数,只要它的值在0255范围内,

66、也可以用字符形式输出,在输出前,系统会将该整数作为ASCII码转换成相应的字符;反之,一个字符数据也可以用整数形式输出。9/8/2024129(6)S格式符,用来输出一个字符串。有几种用法:s,例如:printf(“%s”,“CHINA”);输出“CHINA”字符串(不包括双引号)。ms,输出的字符率占m列,如字符串本身长度大于m,则突破m的限制,将字符串全部输出。若串长小于m,则左补空格。9/8/2024130ms,如果串长小于m,则在m列范围内,字符率向左靠,右补空格。mns,输出占m列,但只取字符串中左端n个字符。这n个字符输出在m列的右侧,左补空格。mns,其中m、n含义同上,n个字符

67、输出在m列范围的左侧,右补空格。如果nm,则m自动取n值,即保证n个字符正常输出。9/8/2024131(7)f格式符,用来输出实数(包括单、双精度),以小数形式输出。有以下几种用法:m.nf指定输出的数据共占m列,其中有n位小数。如果数值长度小于m,则左端补空格。-mnf与m.nf基本相同,只是使输出的数值向左端靠,右端补空格。f,不指定字段宽度,由系统自动指定,使整数部分全部如数输出。并输出6位小数。应当注意,并非全部数字都是有效数字。单精度实数的有效位数一般为7位。9/8/2024132(1)字符数据的输出:main()charc=a;inti=97;printf(“%c,%dn”,c,

68、c);printf(“%c,%dn”,i,i);运行结果为:a,97a,973.例子9/8/2024133(2)字符串的输出main()printf(“%5s,%7.2s,%.4s,%-5.3sn”,”CHINA”,”CHINA”,“CHINA”,”CHINA”);输出如下:CHINA,|_|_|_|_|_|CH,CHIN,CHI|_|_|其中第3个输出项,格式说明为“%.4s”,即只指定n,没指定m,自动使m=n=4,故占4列。9/8/2024134(3)输出实数时的有效位数:main()floatx,y;x=111111.111;y=222222.222;printf(“%f”,x+y);

69、运行结果为:333333.3281259/8/2024135(4)输出实数时指定小数位数:main()floatf=123.456;printf(“%f|_|_|%10f|_|_|%10.2f|_|_|%.2f|_|_|%-10.2fn”,f,f,f,f,f);运行结果为:运行结果为:123.456001|_|_|123.456001|_|_|_|_|_|_|123.46|_|_|123.46|_|_|123.46|_|_|_|_|9/8/20241364.格式符小结格式符小结格式字符 说 明 d,i以带符号的十进制形式输出整数(正数不输出符号) o以八进制无符号形式输出整数(不输出前导符0)

70、 x,X以十六进制无符号形式输出整数(不输出前导0x),用x则输出十六进制数的af时以小写形式输出。用X时,则以大写字母输出。 u以无符号十进制形式输出整数 c以字符形式输出,只输出一个字符printf格式字符格式字符9/8/2024137格式字符说明 s输出字符串 f以小数形式输出单、双精度数,隐含输出6位小数。 e,E以指数形式输出实数,数字部分小数位数为6位,如用“E”,则输出时,指数以大写表示 g,G选用f或e格式中输出宽度较短的一种格式,不输出无意义的0。用G时,若以指数形式输出,则指数以大写表示9/8/2024138字符说明字母l用长整型整数,可加在格式符d、o、x、u前面m(代表

71、一个正整数)数据最小宽度n (代表一个正整数)对实数,表示输出n位小数;对字符串,表示截取的字符个数输出的数字或字符在域内向左靠printf的附加格式说明字符的附加格式说明字符9/8/20241395.使用printf函数时,还需注意以下几点(1)除了X,E,G外,其他格式字符必须用小写字母,如d不能写成D。(2)可以在printf函数中的“格式控制”字符串内包含“转义字符”,如“n”,“t”,“b”,“r”,“f”,“377”等。(3)上面介绍的d、o、x、u、c、s、i、e、g等字符,如用在“”后面就作为格式符号。一个格式说明以“”开头,以上述9个格式字符之一为结束,中间可以插入附加格式字

72、符(也称修饰符)。例如:9/8/2024140printf(“c=%cf=%fs=%s”,c,f,s);格式说明第一个格式说明为“c”而不包括其后的f,第二个格式说明为“f”,不包括其后的S,第三个格式说明为“s”。其他的字符为原样输出的普通字符。(4)如果想输出字符“”,则应该在“格式控制格式控制”字符串中用连续两个表示,如printf(“%f%”,1.0/3);输出:0.333333%9/8/2024141(二)、scanf函数(格式输入函数)1.一般形式scanf(“格式控制字符串”,地址表列)“格式控制字符串”的含义同printf函数;“地址表列”是由若干个地址组成的表列,可以是变量的

73、地址,或字符串的首地址。9/8/20241422.例子用scanf函数输入数据main()inta,b,c;scanf(“%d%d%d”,&a,&b,&c);printf(“%d,%d,%dn”,a,b,c);运行时按以下方法输入a、b、c的值:3|_|4|_|5 3,4,5&a,&b,&c中的“&”是“地址运算符地址运算符”,&a指a在内存中的地址。9/8/2024143说明:“ddd”表示按十进制整数形式输入数据。输入数据时,在两个数据之间以一个或多个空格间隔,也可以用回车键、跳格健tab。用“ddd”,格式输入数据时,不能用逗号作两个数据间的分隔符。3.格式说明与printf函数中的格式

74、说明类似,以开始,以一个格式字符结束,中间可以插入附加字符。9/8/2024144格式字符 说 明 d,i用来输入有符号的十进制整数 u用来输入无符号的十进制整数 o用来输入无符号的八进制整数 x,X用来输入无符号的十六进制整数(大小写作用相同) c用来输入单个字符 s用来输入字符串,将字符串送到一个字符数组中,在输入时以非空白字符开始,以第一个空白字符结束。字符串以串结束符0作为其最后一个字符 f用来输入实数,可以用小数形式和指数形式输入 e,E,g,G与f作用相同,e与f,g可以互相替换(大小写作用相同)scanf格式字符格式字符9/8/2024145字符 说 明 l用于输入长整型数据(可

75、用%ld,%lo,%lx)以及double型数据(用%lf或le)域宽域宽指定输入数据所占宽度(列数),域宽应为正整数 *表示本输入项在读入后不赋值给相应的变量scanf的附加格式说明字符9/8/2024146说明:(1)对unsigned型变量所需的数据,可以用u,d或o,x格式输入。(2)可以指定植入数据所占列数,系统自动按它截取所需数据。scanf(“%3d%3d”,&a,&b);输入123456系统自动将123赋组a,456赋给b。9/8/20241475.使用scanf函数时应注意的问题(1)scanf函数中的“格式控制”后面应当是变量地址,而不应是变量名。(2)如果在“格式控制字符

76、串”中除了格式说明以外还有其他字符,则在输入数据时应输入与这些字符相同的字符。例如scanf(”d,d”,&a,&b););输入时应用如下形式:3,49/8/2024148如果是scanf(”d|_|_|d”,&s,&b););输入时两个数据间应空2个或更多的空格字符。如:10|_|_|34 或10|_|_|_|34 如果是scanf(”d:d:d”,&h,&m,&s););输入应该用以下形式:12:23:36 9/8/2024149(3)在用“c”格式输入字符时,空格字符和“转义字符”都作为有效字符输入:scanf(“%c%c%c”,&c1,&c2,&c3);如输入:a|_|b|_|c 字符

77、a送给c1,字符|_|送给c2,字符b送给c3,因为c只要求读入一个字符,后面不需要用空格作为两个字符的间隔,因此|_|作为下一个字符送给c2。(4)在输入数据时,遇以下情况时该数据认为结束。遇空格,或按“回车”或“跳格”(Tab)键。按指定的宽度结束,如“3d”,只取3列。遇非法输入。9/8/20241503.6顺序结构程序设计举例顺序结构程序设计举例例1输入三角形的三边长,求三角形面积。为简单起见,设输入的三边长a、b、c能构成三角形。从数学知识已知求三角形面积的公式为area=s(s-a)(s-b)(s-c)其中s=(a+b+c)/2据此编写程序如下:9/8/2024151#includ

78、emain()floata,b,c,s,area;scanf(“%f,%f,%f”,&a,&b,&c);s=1.0/2*(a+b+c);area=sqrt(s*(s-a)*(s-b)*(s-c);printf(“a=%7.2f,b=%7.2f,c=%7.2f,s=%7.2fn”,a,b,c,s);printf(“area=%7.2fn”,area);9/8/2024152程序中第7行中sqrt()是求平方根的函数。由于要调用数学函数库中的函数,必须在程序的开头加一条#include命令,把头文件“math.h”包含到程序中来。请注意,以后凡在程序中要用到数学函数库中的函数,都应当“包含”mat

79、h.h头文件。运行情况如下:3,4,6 a=|_|_|_|3.00,b=|_|_|_|4.00,c=|_|_|_|6.00,s=|_|_|_|6.50area=|_|_|_|5.339/8/2024153例2从键盘输入一个大写字母,要求改用小写字母输出#includemain()charc1,c2;c1=getchar();printf(“%c,%dn”,c1,c1);c2=c1+32;printf(“%c,%dn”,c2,c2);运行情况如下:A A,65a,979/8/2024154用getchar函数得到从键盘上输入的大写字母A,赋给字符变量c1。将c1分别用字符形式(A)和整数形式(6

80、5)输出。再经过运算得到小写字母a,赋给字符变量c2,将c2分别用字符形式(a)和整数形式(97)输出。9/8/2024155课堂练习课堂练习1、下列整数值中,不正确的八进制或十六进制是【 】 A、0x16 B、016 C、086 D、0x3A解答:C解释:八进制整数由数字0开头的整数组成,不能包含8、9等非八进制数字9/8/2024156解答:6解释:i+是在表达式中先使用变量i的值,然后再使变量i的值增1;+i是先让变量i的值增1,然后再使用变量i的值。2、设a=2,则执行语句k=+a+a+后的k值为多少?9/8/2024157解答:20解释:逗号表达式求解过程自左至右,依次计算各表达式的值,“表达式n” 的值即为整个逗号表达式的值。 先求解a = 3 * 5,得a=15;再求a * 4=60;最后求解a + 5=20,所以逗号表达式的值=20。 3、逗号表达式“(a=3*5,a*4),a+5”的值=。9/8/2024158

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号