C语言程序设计案例教程ppt课件完整版.pptx

上传人:可****阿 文档编号:77248979 上传时间:2023-03-13 格式:PPTX 页数:297 大小:2.08MB
返回 下载 相关 举报
C语言程序设计案例教程ppt课件完整版.pptx_第1页
第1页 / 共297页
C语言程序设计案例教程ppt课件完整版.pptx_第2页
第2页 / 共297页
点击查看更多>>
资源描述

《C语言程序设计案例教程ppt课件完整版.pptx》由会员分享,可在线阅读,更多相关《C语言程序设计案例教程ppt课件完整版.pptx(297页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、1目录第1章 C语言程序设计基础 1.1【案例1】程序的开始与结束 main()函数 C语言程序的基本语法结构 程序终止函数exit()1.2【案例2】信息与数据的格式化显示 标识符与关键字 变量与常量 数据类型 输出函数printf()1.3【案例3】计算圆的周长与面积 输入函数scanf()格式化字符串中非格式字符的处理2目录 字符串输入与宽度控制 指定输入数据的范围 一次输入多个数据 电话号码的输入 1.4【案例4】温度换算 运算符与表达式 算术运算符与算术表达式 赋值运算符与赋值表达式 逗号运算符 sizeof运算符 类型转换运算符 3目录 1.5【案例5】字母转换 关系运算 逻辑运算

2、 条件运算符4程序源码 1.1【案例1】程序的开始与结束 1.2【案例2】信息与数据的格式化显示 1.3【案例3】计算圆的周长与面积 1.4【案例4】温度换算 1.5【案例5】字母转换 51.11.1【案例1】程序的开始与结束案例效果案例效果本案例是一个简单的C语言程序,它显示了一个程序从哪里开始执行,执行到哪里结束。程序运行效果如图1-1-1所示。图图1-1-1 1-1-1 程序的开始和结束程序的开始和结束在本案例的实现过程中,将学习C语言的主函数main()及程序中的语句、语句块、注释语句等程序设计中的基本元素,了解程序的基本语法结构。设计过程(见书)设计过程(见书)61 1main()m

3、ain()函数函数相关知识相关知识1 1main()main()函数函数所有的程序都有一个执行的起点,这个执行的起点不是按程序代码的书写顺序来决定,而是通过专用的标识main()函数。main()是C语言程序的主函数,每个C程序有且仅有一个主函数。所有的C程序都是从这里开始执行。也就是说,在C语言中程序总是从main()函数开始执行,而不管main()是在程序的什么位置。任何主函数都由main()和它之后的一个左花括号“”和一个右花括号“”组成。这一对花括号之间就是函数的主体,简称函数体。main()函数的常见结构如下所示。void main()void main()/*/*函数体函数体*/第

4、一行是函数头,它指明了这是主函数main(),程序从这里开始执行。紧跟在main标识符后的是一对圆括号,这是函数的标志。void部分用于表示函数的返回值,这里使用的是void,表示函数没有返回值,在需要的情况下,可以将它改成其他类型,如int(返回值是一个整数)、float(返回值是一个小数)等,也可以省略void,这时的返回值为默认的类型int。72 2C C语言程序的基本语法结构语言程序的基本语法结构在本书的学习中,在大多数情况下,main()函数都是不需要返回值的,因此,基本上是使用如上所示的void main()格式。main()函数的函数体由紧跟在函数名后的左花括号开始,到与之对应的

5、相同层次的右花括号结束。花括号必须成对出现,如果在程序中的花括号不配对(如缺少右花括号),则在程序编译时会出现错误提示信息:syntax error:。花括号除了可以作为函数体的开头和结尾的标识外,还可以用于复合语句(也称做块语句)的开头和结尾标志。如果主函数执行完毕,则整个程序便结束。2 2C C语言程序的基本语法结构语言程序的基本语法结构(1)单行语句在前一章的学习中,程序案例中所看到的程序语句都只是单行语句,即一条语句就是一行,前后两行语句都是独立执行的。C语言程序中单行语句的最后是分号(;),这是C语言程序语句的结束符号,所有的C语言语句都必须以分号结束。除了单行语句外,C语言中最基本

6、的语法结构还有复合语句和空语句。81 1main()main()函数函数(2)复合语句在程序中,有时需要将相邻的数条语句作为一个整体来执行,就可以将这些语句用花括号括起来,成为一个复合语句。如下面所示的程序段:void main()void main()/*/*函数体开始函数体开始*/*/*复合语句开始复合语句开始*/printf(printf(欢迎进入欢迎进入C C语言程序设计的世界语言程序设计的世界!n);!n);printf(printf(你现在所在的位置是你现在所在的位置是main()main()函数,这里是函数,这里是C C语言程序执行语言程序执行的入口的入口 n);n);/*/*复

7、合语句结束复合语句结束*/*/*函数结束函数结束*/这段程序中,内部的一对花括号内所包括的就是复合语句。从语法上来说,一个复合语句可以视为一条单行语句,即可以将复合语句看成一个整体,放在任何可以放置单行语句的位置,执行时也是作为一个整体来执行。复合语句的花括号内,不限制语句的条数,除执行语句外,还可以有定义语句出现。91 1main()main()函数函数(3)空语句除单行语句与复合语句外,还有一种特殊语句形式,即空语句。空语句仅起到占位的作用,以便以后对语句进行充实。形式如下:;/*空语句*/*空语句*/注意:空语句不是空行。空语句在编译中得到执行,能得到编译后的目标代码。空行仅是为了使程序

8、易于阅读,不参与编译,程序编译时会将其忽略。为写出好的程序,使程序易读,空行有时也是必要的。103 3程序终止函数程序终止函数exit()exit()3 3程序终止函数程序终止函数exit()exit()通常情况下,程序在运行到主函数结尾的右花括号“”时退出,但某些时候则需要程序提前退出。在Turbo C中,提供了一个程序终止函数exit(),执行时遇到了程序终止函数,则调用出口函数,结束程序的运行。该函数的调用格式为:exit(exit(出口状态出口状态););其中,“出口状态”用来提供出口状态,通常,值0表示正常退出,非0表示有错误发生。对于前面的程序段tc1-1.c,如果在第二个prin

9、tf语句与第三个printf语句之间增加一行如下所示的终止程序的语句:exit(0);exit(0);则第二个printf()输出之后,程序便终止。这时得到的运行结果如图1-1-2所示。图图1-1-2 1-1-2 提前退出的程序提前退出的程序111.21.2【案例2】信息与数据的格式化显示案例效果案例效果本案例将在屏幕中显示信息和格式化的数据,效果如图1-2-1所示。图图1-2-1 1-2-1 信息的显示信息的显示在本案例实现过程中,将学习C语言中的标识符与关键字、常量与变量、数据类型等基础知识,还将学习如何通过输出函数printf()格式化输出数据。设计过程设计过程(见书)见书)121 1标

10、识符与关键字标识符与关键字相关知识相关知识1 1标识符与关键字标识符与关键字(1)标识符在程序设计中,常用具有一定意义的名字来标识程序中的变量、函数、数组、类、标号以及其他用户自定义的数据类型,以方便在程序设计中按名字来访问数据,这种名字被称为标识符。在C语言程序中,标识符由18个字符组成。构成标识符的字符只能是下划线(_)、数字(09)和英文字母,并且标识符的第一个字符只能是下划线或英文字母。下列这些都是合法的标识符:address、Tel、name、password、_var1、year_1999、_123、ID_view下列这些都是非法标识符:T-3、2abc、Tel#、str、mail

11、sina、+point、!keyC语言是一种对字母大小写敏感的语言,定义标识符时必须注意字母的大小写,例如,PassWord和password在C语言中就是两个不同的标识符,一定要注意这一点。131 1标识符与关键字标识符与关键字(2)关键字在C语言程序中,有一类特殊的标识符,它们仅供系统专用,不能用来作为用户定义的标识符,这就是关键字,又称为系统保留字。关键字是有特殊含义的系统保留标识符,它们不能作为用户程序中定义的标识符。以下是ANSI C标准中所规定的关键字:142 2变量与常量变量与常量2 2变量与常量变量与常量变量与常量是程序设计中的基本概念,弄清楚这两个概念的含义,对于程序设计来说

12、是非常重要的。(1)变量变量是指在程序运行过程中,值可以发生变化的量。C语言变量遵循“先定义,后使用”的原则,变量在使用前,都要求先定义其数据类型。在定义时系统会为变量分配固定的内存,在程序执行中可以按照变量名对其中的内容进行访问。变量定义的一般形式如下:数据类型 变量名表;在定义变量时,要注意变量的命名应符合标识符的命名规则。下面是一些合法的变量定义形式:int m1,a;char str;float _val;int max=100;第一行定义了两个整型变量m1和a,第二行定义了一个字符型变量str;第三行定义了一个实型变量_val,第四行定义了一个整型变量max,并同时赋予其初始值为10

13、0。152 2变量与常量变量与常量变量在程序运行中可以通过表达式来赋值,以改变其内容。例如:m1=100;a=m+1;str=C;执行上面的语句后,变量m1的内容为整数100,变量a的内容为整数101,变量str的内容为字符“C”。(2)常量与变量的定义相反,常量是指在程序运行过程中不能发生改变的量。常量的类型通常有5种:整型、实型、字符型、字符串型和符号常量。整型常量整型常量整型常量就是整数,可以是十进制、八进制(以0开头)或十六进制数(以0 x或0X开头)的整数。例如:12-150120X12上面的整型常量中,12和-15是十进制整数,012为八进制整数,其值即为十进制的10,0X12为十

14、六进制的整数,其值即为十进制的18。162 2变量与常量变量与常量实型常量实型常量实型常量也称为浮点常数,它是带小数位的数值,可以是小数,也可以是指数。例如:12.342-1.343.141 59 1.234e5-12E5需要注意的是,浮点常数只有一种进制(十进制),绝对值小于1的浮点数,其小数点前面的零可以省略。如0.123可写为.123,在Turbo C中,使用默认格式输出浮点数时,最多只保留小数点后6位。字符型常量字符型常量字符型常量是括在半角单引号内的一个字符。这些字符通常是ASCII码字符,它们的值即该字符的ASCII码值。例如:a0bN字符串常量字符串常量字符串常量是由半角双引号括

15、起来的字符序列。字符串常量与字符常量有严格的不同,编译程序在每个字符串的后面自动加上一个空字符0以示区别。例如:Visual C+Turbor Ca其中,字符串Visual C+共有11个字符,除本身10个(注意,空格也算一个字符)外还加上 0,同样,Turbor C具有9个字符,而a则不同于字符a,相当于a和0,共2个字符。172 2变量与常量变量与常量符号常量符号常量符号常量是指以标识符形式出现的常量,C语言中符号常量的定义可以由编译预处理命令#define来进行,符号常量定义形式如下:#define#define 常量名常量名 值值下面是一些合法的符号常量定义:#define A10/*

16、A代表十进制数10*/#define X010 /*X代表八进制数10,即十进制数8*/#defineK0 x10 /*K代表十六进制数10,即十进制数16*/#defineC1a/*C1代表字符a*/#defineN 0/*N代表字符0*/#define Ffalse/*F代表字符串false*/#define TRUE 1/*TRUE 表示数值1*/#define FALSE0/*FALSE表示数值0*/注意:与定义变量的语句不同,常量在使用#define 进行定义时,命令行的末尾不得加分号。182 2变量与常量变量与常量为了与变量相区别,使程序更具可读性,通常使用大写字母来定义常量。常量

17、只能在定义时赋值,在程序运行过程中不能改变,如下所示的语句在程序中将出现错误。#define PI3.14PI=3.142;/*编译时会报错,在程序中不能通过赋值改变常量PI的内容*/注意:使用#define来定义常量,一定要仔细,如果不谨慎,很容易导致错误。192 2变量与常量变量与常量转义字符转义字符在C语言中,有一种特殊的字符常量,它是以反斜杠“”开头的字符序列,称为转义字符,如表1-2-1所示。表表1-2-1 1-2-1 转义字符转义字符203 3数据类型数据类型与普通字符不同,转义字符序列表达的不再是字符表面的意义,而是一个特殊的ASCII码字符,因此也可以用该字符的ASCII码值来

18、表示。例如:n表达的不是字母n,而表示回车换行;a表达的不是字母a,而是一声铃声;07也表示响铃;0表示一个空操作;45表示百分号%,x45则表示字母E。3 3数据类型数据类型数据类型用于说明数据的取值类型,以便于在内存中为其分配相应的存储空间。C语言提供了丰富的数据类型,可以分为两个大类:基本类型和结构/派生类型。本节主要学习基本数据类型,其他类型在以后的章节中学习。C语言的基本数据类型主要有:整型、实型、字符型、指针型和无值型。下面对这些基本数据类型进行详细介绍。(1)整型整型用于存储整数,其值可以是十进制、八进制或十六进制的数。整型变量用关键字int来定义,例如:int key;int

19、max=100;int a=0 x12;/*0 x12表示十六进制的12,即十进制数18*/int n=010;/*010表示八进制的10,即十进制数8*/此外,整型还可以与short、long、signed、unsigned等修饰符合用,构成新的类型。213 3数据类型数据类型例如:short int 表示短整型,long int表示长整型,singned int表示有符号整型,unsigned int表示无符号整型。表1-2-2给出了一些常见的修饰符组合形式及其可表示的数据范围。表表1-2-2 1-2-2 常见的修饰符组合形式及其可表示的数据范围常见的修饰符组合形式及其可表示的数据范围表中

20、的字长指的是该类型的数据在内存中所占的字节数。这些修饰符也可以单独使用。单独使用时,singned 等价于singned int,unsingned等价于unsingned int,short 等价于short int,long等价于 long int。下面是使用修饰符的整型变量定义语句:short int x;unsigned long int y;223 3数据类型数据类型(2)浮点型浮点型也称为实型单精度类型或实型,常用来表示小数或超出整型范围的数值。浮点型变量用关键字float来定义。例如:float val1,val2;float r,pi=3.14;要一次定义多个同类型变量时,变量

21、名间用逗号分隔。如在定义时赋值,则该值仅赋予赋值符号(=)左侧第一个变量。上例中,同时定义了两个浮点变量r和pi,仅pi被赋予初始值3.14。(3)双精度型双精度型常用于很大的数值或要求精确度的科学计算。双精度变量用关键字double来定义。例如:double x=123.456789012345;double pi=3.14159265;double a=1.23*E50;/*使用科学计数法,表示1.231050*/(4)字符型字符型是用于表示ASCII字符的数据类型。字符变量用关键字char来定义。例如:char c1,c2;char flat=T;C语言中没有字符串变量类型,字符类型只能

22、存储单独的一个字符。如char str=program这样的定义语句是错误的。如果要存储字符串只能以字符数组或指针形式实现。233 3数据类型数据类型(5)无值型无值型用关键字void来定义,无值型是一类特殊的类型,常用在函数定义中,表示函数无返回值。表1-2-3中列出了C语言中常用的基本数据类型的存储方式和取值范围。(Visual C+6.0环境中。)表表1-2-3 1-2-3 基本数据类型的存储方式和取值范围基本数据类型的存储方式和取值范围 由于不同数据类型所占存储空间不同,在定义变量时应充分考虑该变量的取值范围。在定义变量时,如数据过大,应考虑将其定义为更长的数据类型,以保证数据不会溢出

23、。243 3数据类型数据类型(6)自定义数据类型除系统提供的数据类型之外,C语言还允许用户自定义数据类型。定义形式如下:typedef typedef 类型名类型名 新类型名新类型名;通过typedef可以定义一个有意义的名字来代替一种已知的数据类型,增强程序的易读性。如下所示:typedef int AGE;/*声明AGE为一个int类型的类型名*/typedef int BOOL;/*声明BOOL为一个int类型的类型名*/typedef char TEXT;/*声明TEXT为一个char类型的类型名*/定义新类型后,就可以按普通数据类型一样使用了。例如:AGE a,b;/*定义a、b为A

24、GE类型的变量,等同于int a,b*/BOOL f;/*定义f为BOOL类型的变量,等同于int f*/TEXT c,s;/*定义c、s为TEXT类型的变量,等同于char c,s*/使用typedef定义的数据类型既可以是已知的简单数据类型,也可以是复杂的结构类型,参见本书“结构体”部分。254 4输出函数输出函数printf()printf()4 4输出函数输出函数printf()printf()前面已经多次使用printf()函数输出字符串信息,在这一节中,将学习使用printf()函数输出不同类型的数据。C语言没有用于输出的语句,信息输出都用printf()函数来完成。printf(

25、)函数用于向标准输出设备(屏幕)写入数据,该函数在文件stdio.h中定义。因此在调用前应使用如下包含语句:#include stdio.h(1)printf()函数的基本格式printf()函数的调用格式为:printf(printf(格式化字符串格式化字符串,输出项列表输出项列表 ););其中,“格式化字符串”是用双引号括起来的字符串,它包括两部分:一部分是正常字符,这些字符按原样输出;另一部分是格式说明,它总是以“%”开始,后跟一个或几个格式字符,在格式化字符串中格式说明用来规定相应输出项的输出格式。输出项列表是需要输出的一系列参数,其个数必须与以“%”开始的格式说明的个数相同,各输出项

26、之间用“,”分开,且与格式化字符串中的格式说明一一对应,否则将会出现意想不到的错误。简单的格式说明仅指出输出数据的种类,这时格式说明以“%”开始,后跟一个格式字符。C语言中提供的这种格式字符如表1-2-4所示。264 4输出函数输出函数printf()printf()表表1-2-4 C1-2-4 C语言提供的格式字符语言提供的格式字符图1-2-2给出了printf()函数的使用格式。图图1-2-2 printf()1-2-2 printf()函数的格式函数的格式图中的%d在输出时,将被对应的输出项n的实际内容所取代。同一内容的输出项,在使用不同格式字符输出时,显示的内容也是不同的,例如:pri

27、ntf(整数i的十进制表示为:%d,n);printf(八进制表示为:%o,n);printf(十六进制表示为:%xn,n);274 4输出函数输出函数printf()printf()输出项除了可以使用变量外,还可以使用常量、表达式、带返回值的函数等有意义的内容。例如:#define PI 3.1415926 printf(计算半径为%d的圆的周长:%f n,n,n*2*PI);printf(%c 转化为大写字符是:%cn,ch,toupper(ch);上面程序段中,PI是一个预定义的常量,toupper()是一个函数,用于将传递给它的参数ch转化为对应的大写字母,并返回该大写字母。(2)pr

28、intf()函数的高级格式控制在printf()函数中除了可以使用格式字符来对输出进行控制外,还可以用如下方法进行输出格式的控制。指定输出宽度与小数位指定输出宽度与小数位 可以在“%”和格式字符之间插进数字指定输出宽度,其中,数字的整数部分表示全部宽度,小数部分表示小数位的宽度,需要注意的是,在输出小数时,小数点也要占一位的宽度。例如:%3d表示输出一个3位宽度的整型数,不够3位右对齐,如果大于3位则按实际位数输出;284 4输出函数输出函数printf()printf()%9.2f表示输出宽度为9的浮点数,其中小数位为2位,整数位为6位,小数点占1位,不够9位右对齐;%8s表示输出8个字符宽

29、的字符串,不够8个字符时右对齐,多于8个字符时按实际宽度输出。如果字符串的长度或整型数位数超过说明的宽度,将按其实际长度输出。但对于浮点数,若整数部分位数超过了说明的整数位宽度,将按实际整数位输出;若小数部分位数超过了说明的小数位宽度,则按说明的宽度以四舍五入输出。如果用浮点数表示字符或整型量的输出格式,并且小数点左边的数值小于小数点右边的数据时,小数点后的数字代表最大宽度,小数点前的数字代表最小宽度。例如:%6.9s 表示显示一个长度不小于6个字符且不大于9个字符的字符串。若大于9,则第9个字符以后的内容将被删除;若小于6个字符则添加空格以补齐。设置前导设置前导0 0若想在输出值前加一些0作

30、为输出数据的前导项,就应在宽度项前加个0。例如:%04d表示在输出一个小于4位的整数时,将在前面补0使其总宽度为4位;%010f表示在输出一个小于10位的浮点数时,将在前面补0使其总宽度为10位。294 4输出函数输出函数printf()printf()输出长整型数与双精度浮点数输出长整型数与双精度浮点数可以在“%”和字母之间加小写字母l,表示输出的是长型数。例如:%ld表示输出long整数;%lf表示输出double浮点数。对齐方式对齐方式如果指定的宽度大于实际的宽度,则按数字的正负来指定对齐方式,负数为左对齐,即在“%”和数字之间加入一个“-”号来说明输出为左对齐,否则为右对齐。例如:%7

31、d表示输出宽度为7,右对齐;%-7d表示输出宽度为7,左对齐;%-10s表示输出宽度为10,左对齐。301.31.3【案例3】计算圆的周长与面积案例效果案例效果本案例中程序可以计算给定半径的圆的周长与面积。程序运行时,将提示用户输入圆的半径,并以此计算出圆的周长与面积。程序运行效果如图1-3-1所示。图图1-3-1 1-3-1 计算圆的周长与面积计算圆的周长与面积在本案例的实现过程中,将学习使用输入函数scanf()来格式化输入数据。设计过程设计过程(见书见书)311 1输入函数输入函数scanf()scanf()相关知识相关知识1 1输入函数输入函数scanf()scanf()与输出相类似,

32、C语言没有用于接受输入数据的语句,信息的输入是以scanf()函数来完成的,scanf()函数用于从标准输入设备(键盘)写入数据,该函数在文件stdio.h中定义,因此在调用前也需要使用如下语句:#includestdio.hscanf()函数的调用格式为:scanf(scanf(格式化字符串格式化字符串,输入项地址列表输入项地址列表););其中,格式化字符串包括一个或多个以“%”开始的格式字符,在“%”后跟一个或几个规定的格式描述字符,与printf()函数中一样,它在格式字符串中用来占位,并在该位置用格式字符确定输入数据时,按输入的顺序,将数据存储到与输入项列表中对应的变量存储空间中。输入

33、项地址列表中是一个或多个以“&”开始的变量名称,多个输入项之间用逗号分开。这里的“&”是C语言中的取地址符号,它用于获取后面所跟随的变量的内存地址,以便于将输入的数据存储到指定的地址中。例如,“&r”的意思就是获取变量r的地址,本例中,即是通过语句“scanf(%f,&r);”将键盘输入的数据以float数据格式(%f)存储到变量r所在的存储空间中,此后在调用变量r进行计算时,实质上就是调用了存储在该内存空间的数据进行计算。32C语言中用于scanf()函数的格式字符如表1-3-1所示。表表1-3-1 1-3-1 格式化输入字符格式化输入字符注意:在用scanf()函数进行数据输入时,格式字符

34、的类型与后面对应的输入项的数据类型必须一致,如果类型不一致,则会出现数据的错误输入,但对于此类错误,系统不一定会给出错误信息。332 2格式化字符串中非格式字符的处理格式化字符串中非格式字符的处理与printf()函数不同,在scanf()函数的格式字符串中,如果还有除格式字符以外的其他字符,则这些字符不会显示到屏幕上,需要对它们进行特殊处理。首先,看看下面的语句:int a,b;scanf(a=%d b=%d,&a,&b);printf(%d+%d=%dn,a,b,a+b);上面的scanf()语句本意是希望能在屏幕上显示“a=b=”提示用户输入数据,但在程序运行时,却不能得到希望的效果屏幕

35、上没有任何提示。如果想要正确输入数据,需要用户按“a=5 b=10”的格式进行输入,这样,在按回车键后,数据5被输入到变量a的存储空间,数据10被输入到变量b的存储空间,否则程序将会出错。这里输入的字符“a=”和“b=”用于与scanf()语句中的内容相对应(注意空格也需要输入),如图1-3-2所示。图图1-3-2 输入时的对应关系输入时的对应关系342 2格式化字符串中非格式字符的处理格式化字符串中非格式字符的处理从上面的分析可以得到以下结论:scanf()格式化字符串中的非格式字符不能够显示到屏幕上,但在输入时却要求输入这些字符,且要求一一对应。如果需要在输入数据时对用户进行提示,最好用一

36、行printf()语句来完成。例如,要达到上面scanf()语句所希望的目的,可以用下面的语句来完成:int a,b;printf(a=);scanf(%d,&a);printf(b=);scanf(%d,&b);printf(%d+%d=%dn,a,b,a+b);利用非格式字符需要一一对应输入的特点,可以对一次性输入多个数据进行方便的控制。353 3字符串输入与宽度控制字符串输入与宽度控制3 3字符串输入与宽度控制字符串输入与宽度控制字符串的输入与其他数据有所不同,因为字符串变量的名称就代表了字符串的地址,因此,字符串的输入可以按下面格式进行,不用在变量名前加&符号:char s10;/*定

37、义字符数组及字符串所需要的存储空间*/scanf(%s,s);/*输入字符串到s所指存储空间*/上面定义的字符数组s中最多可以输入10个字符。与printf()函数类似,scanf()函数在输入字符串时可以在“%”和格式字符s之间插进数字,设置输入字符的宽度(即输入字符的个数)。例如:scanf(%4s,s);/*输入4个字符到s所指存储空间*/4 4指定输入数据的范围指定输入数据的范围在输入时还可以使用方括号“”指定输入字符的范围,scanf()函数将依次读入符合条件的字符,直到遇上第一个不符合条件的字符为止。例如:%abcd:输入字符串中的字符只能是a、b、c、d。%abcd:前面加“”表

38、示输入字符串中除a、b、c、d以外的所有字符。%0123456789:输入09的数字。%0-9:输入09的数字,可以用“-”号表示范围,注意“-”前的字符必须小于其后的字符。364 4指定输入数据的范围指定输入数据的范围%A-Z:输入所有大写字母。%A-FN-S:输入AF,NS的所有字母。%+-*/:输入运算符+、-、*、/。371.41.4【案例4】温度换算 案例效果案例效果本案例中的程序将通过数学计算,将输入的华氏温度转换成摄氏温度,如图1-4-1所示。图图1-4-1 1-4-1 温度换算温度换算在本案例的实现过程中,将学习C语言中的运算符与表达式的基本概念。设计过程设计过程(见书见书)3

39、81 1运算符与表达式运算符与表达式相关知识相关知识1 1运算符与表达式运算符与表达式C语言的运算符按运算类型可分为赋值运算符、算术运算符、逻辑运算符、关系运算符、位运算符、指针运算符和取成员运算符等;按运算对象(又称为操作数)的个数又可分为单目运算符、双目运算符和三目运算符。关于运算符的完整列表,参见附录B。C语言的运算符又称为操作符,是数据间进行运算的符号。将数据或变量用运算符连接起来,就构成了C语言的表达式。表达式就是按照一定规则,将运算对象用运算符连接起来的有意义的式子。表达式中的运算对象可以是常量、变量、函数,也可以是别的表达式。下面是一些C语言的合法表达式:a+bx=a*3s=(a

40、+b)*h/2c=getchar()在构成表达式时,运算符具有不同的优先级,还有不同的结合方式。优先级决定不同级别的运算符在参与运算时的运算次序;结合方向决定运算的方向以及相同优先级的运算符在运算时的先后次序。392 2算术运算符与算术表达式算术运算符与算术表达式2 2算术运算符与算术表达式算术运算符与算术表达式C语言中的算术运算符包括5个双目运算符:加“+”、减“-”、乘“*”、除“/”、求余(取模)“%”及4个单目运算符:自增“+”、自减“-”、单目加“+”和单目减(算术取反)“-”,此外还有圆括号“()”运算符,它可以用来改变运算的顺序。由算术运算符与数值、变量等构成的表达式称为算术表达

41、式,例如:a+1b*an+a*(b-c)/2 双目算术运算符加“+”、减“-”、乘“*”、除“/”与普通的数学运算符没有什么区别,可以像在数学式子中一样使用,如下面的表达式都是正确的:a+ba=5+a2-a/3i*i-5b/a-2单目加“+”和单目减“-”只能有一个操作数,实质就是取操作数的正值或负值。如下面的程序段:int a,b,c;a=10;b=-a;/*单目减运算*/c=a+b;在执行后,上面程序段中的变量a的值为10,变量b的值为-10,变量c的值为0。402 2算术运算符与算术表达式算术运算符与算术表达式自增“+”、自减“-”是指操作数自身增加1或者减少1。按其在操作数的前后又分别

42、称为“前缀自增”、“前缀自减”和“后缀自增”、“后缀自减”。它们之间的不同在于“后缀自增”和“后缀自减”是先进行语句中的其他运算,语句完成后,再执行自增或自减运算;而“前缀自增”和“前缀自减”是先对变量进行自增或自减运算,在运算完成后变量再参与语句中的其他运算,如下面的程序段所示:int a,b,c,i=5;a=i+;/*后缀自增*/b=+i;/*前缀自增*/-i;/*前缀自减*/c=i-;/*后缀自减*/这段程序执行后,变量a值为5,变量b值为7,变量c值为6,变量i值为5。在赋值给a时,先将变量i的值赋给a,此时变量i的值未改变量,值为5,赋值完成后,运算符“+”对变量i进行自增,i值变为

43、6;在赋值给变量b时,i先自增,i值变为7,然后再将值赋给变量b;在语句“-i;”中,自减运算符“-”将使变量i的值减1,此时变量i值为6;在最后一行语句中,先将变量i的值赋给变量c,此时c值为6,再对变量i进行自减运算,最后,变量i值为5。412 2算术运算符与算术表达式算术运算符与算术表达式求余运算符“%”要求左操作数和右操作数都是整数,运算结果是两个操作数相除的余数,例如:int a=20,b=6,c;c=a%b;最后结果c值为a除以b的余数2。同数学式子中一样,算术运算符也具有不同的优先级,不同的优先级决定了运算的先后顺序。算术运算符的优先级如图1-4-2所示。图图1-4-2 1-4-

44、2 算术运算符的优先级算术运算符的优先级其中,垂直方向为运算符的优先级,在同一行上的运算符具有相同的优先级,在表达式中具有相同优先级的多个运算符进行运算时,按从左向右进行运算。423 3赋值运算符与赋值表达式赋值运算符与赋值表达式圆括号“()”运算符具有最高的优先级,它用于改变运算的先后顺序,例如下面的程序段中:int a=10,b=12,c=2,i,j;i=a+b/2;j=(a+b)/2;执行程序段后,变量i的值为16,变量j 的值为11。此外,圆括号“()”运算符还可以多重嵌套,在嵌套时左右括号要相匹配,运算时从内层括号开始,从内向外依次计算表达式的值。例如:int a=4,b=12,c=

45、2,i;i=a*(b+(a-b)/c);执行程序段时,先计算a-b得到结果-8;再计算-8/c,结果为-4;再计算b+(-4)的值,结果为8;再计算a*8的值,得到32;最后再将该值赋给变量i,因此变量i的值为32。3 3赋值运算符与赋值表达式赋值运算符与赋值表达式赋值运算用于改变变量的值。C语言中提供了一个简单赋值运算符“=”和10个复合赋值运算符:+=、-=、*=、/=、%=、=、&=、=和|=。在这里先学习与算术运算相关的前面5个赋值运算符。注意:在复合运算符中,构成运算符的两个符号间不能有空格。433 3赋值运算符与赋值表达式赋值运算符与赋值表达式赋值运算符都是左结合运算符,即赋值运算

46、将右边的操作数的值赋给左边的操作数,因此,左操作数必须是一个变量。可以使用赋值运算符对变量进行连续赋值。例如:int a,b,c;a=5;b=c=a;程序段中,先将数值5赋给变量a,再将a的值赋给变量c,最后将变量c的值赋给变量b。赋值运算的结果:a、b、c的值均为5。复合赋值运算符是将一个其他运算符加上简单赋值运算符而得到,其含义为:将左操作数和右操作数按运算符进行运算,将运算结果的值赋给左操作数。例如:int x,y,z;x=y=z=10;/*为变量x、y、z赋初值为10*/x+=10;/*等价于x=x+10*/y-=5;/*等价于y=y-5*/x/=2;/*等价于x=x/2*/z+=12

47、;/*等价于z=z+12*/z%=y;/*等价于z=z%y*/上述程序段运行后,变量x的值为10,变量y的值为5,变量z的值为2。444 4逗号运算符逗号运算符4 4逗号运算符逗号运算符逗号运算符可用来分隔同行中的几个表达式,例如:a+=1,b+,-c;逗号运算符的优先级最低,它主要用作将几行短语句合成一句,简化程序书写。但为保持程序的易读性,不建议过多使用。5 5sizeofsizeof运算符运算符sizeof 运算符用于计算其操作数的大小,即其在内存中所占字节数。例如:int a,b,c;a=sizeof(c);b=sizeof(float);程序运行结果中,a值为4,因为c为整型变量(这

48、是在Visual C+6.0环境中的结果,若是在Turbo C 2.0环境中,则值为2),占4个字节;b值为8,因为float(浮点型)在内存中占8个字节。6 6类型转换运算符类型转换运算符在表达式中,当混合使用不同类型的数据时,C语言中将对其类型自动进行转换,这种转换一般是“向上”的,即由占存储空间小的数据类型向占存储空间大的数据类型转换。在数据类型进行自动转换时,按以下规则进行:456 6类型转换运算符类型转换运算符(1)在非赋值运算中,进行运算前,先对运算符两边的操作数类型进行比较,将两个操作数都转换为同一数据类型,再进行运算。这种转换是向上的,即char、short型都转化为int型,

49、int型转换为unsigned型,unsigned型转换为long型,long型和float型转化为double型。(2)在赋值运算中,右边的数值将转化为与左边变量相同的数据类型,再将其赋予左边的变量。需要注意的是,如果右边的数值超过左边变量所能表达的数值范围,则将对其进行适当的截取处理后再进行赋值。处理方法如表1-4-1所示。表1-4-1中所说的位均为数据对应的二进制位。表表1-4-1 1-4-1 赋值运算中数据类型的转换赋值运算中数据类型的转换466 6类型转换运算符类型转换运算符程序设计中有时需要将表达式的值转换为某一特定类型时,自动转换就不一定能产生正确的结果,例如:int a,b=1

50、3;float c=4.2;a=b%c;程序在编译时将报错,因为求余(%)运算要求左操作数和右操作数均为整型。若要使程序正确运行,就要在这里使用强制类型转换运算符将变量c的值强制转换为整型。在运算中,除了可以进行数据类型的自动转换外,C语言还提供了一个类型转换运算符用于对数据类型进行强制转换,类型转换运算符用圆括号“()”表示,其使用格式如下:(类型名类型名)操作数操作数将“类型名”括起来的圆括号就是类型转换运算符,它用于将其后的操作数的数值转换为指定的数据类型。对于上面的程序段,则可作如下的强制转换:int a,b=13;float c=4.2;a=b%(int)c;程序段中,(int)c将

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 工作计划

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com