版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、本章(bn zhn)概要:掌握C程序中各种( zhn)数据的具体表示和运算。了解C程序中的语句类型。掌握程序中数据的基本输入/输出方式。掌握简单顺序结构程序设计。重点(zhngdin)、难点 v变量的数据类型及定义和使用v复合语句v输入/ /输出语句及格式v简单顺序结构程序设计 第1页/共154页第一页,共154页。1、理解C语言的数据类型2、进一步理解数据在内存的存放3、应用C语言的常量和变量表示并处理数据4、理解程序交互,掌握输入输出语句的格式(g shi)控制及使用5、体会程序设计思想,应用6步法解决简单实际问题6、掌握本章常用基本算法本章(bn zhn)教学目标 第2页/共154页第二
2、页,共154页。本章(bn zhn)项目任务“学生信息管理系统” 软件界面( jimin)的设计优化第3页/共154页第三页,共154页。本章(bn zhn)内容2.1 程序入门:引导设计一个简单应用案例2.2 C语言的数据及其类型2.3 程序中的常量和变量2.4 程序中的常用(chn yn)运算符和表达式2.5 程序中的人机交互设计2.6 C语言的基本语句2.7 C语言中的输入输出语句2.8 工程计算问题求解与数学函数的应用2.9 项目任务:“学生信息管理系统”软件界面的优化设计第4页/共154页第四页,共154页。2.1 程序(chngx)入门:引导设计一个简单应用案例分析:陈述问题(wn
3、t):求任意圆的面积和体积。 需求分析:输入圆半径,输出圆面积和体积。 数学建模:对于数值计算类问题(wnt),首先要确定问题(wnt)的数学模型。设,半径为r,值为3,面积为S,体积为V。则,圆的面积和体积的数学公式为:S=rr=28.27,V=43rrr=113.10 【例【例2-12-1】简单数值计算】简单数值计算(j sun)(j sun)。编程实现求任意圆的面积和体积。编程实现求任意圆的面积和体积。第5页/共154页第五页,共154页。 确定算法(自然语言描述 ) (1)设计表示半径、面积和体积(tj)的变量:r(整型或实型)、S(实型)和V(实型)。 (2)利用scanf输入函数输
4、入圆的半径r的值。 (3)利用数学公式S=rr和V=43rr求出圆的面积和体积(tj)。 (4)输出圆的面积和体积(tj)值。第6页/共154页第六页,共154页。u编码编码(bin m) (bin m) /* program ch2-1.c */#include /*文件(wnjin)包含,编译预处理命令*/#define PI 3.1415926 /*符号常量宏定义*/void main(void) /*主函数首部*/ int r; /*定义半径变量为整型数据*/ float S,V; /*定义面积和体积为实型变量*/ printf(请输入圆的半径(整数):); /*提示信息*/ scan
5、f(%d,&r); /*人机交互,从键盘输入半径值*/ S= PI*r*r;/*计算圆的面积*/ V=4.0/3* PI*r*r*r;/*计算圆的体积*/ printf(area=%6.2fn,S); /*按要求格式在屏幕上输出面积值*/ printf(volume=%6.2fn,V); /*按要求格式在屏幕上输出体积值*/第7页/共154页第七页,共154页。程序(chngx)中所使用的数据分析:(1)C语言符号常量。 #define PI 3.1415926 /*符号常量宏定义*/ 符号常量定义格式如下: #define 符号常量 常量数据定义符号常量用宏定义命令宏定义是编译(bi
6、ny)预处理命令。符号常量一般用大写字母。第8页/共154页第八页,共154页。(2)立即数常量。 程序(chngx)中有系数“4.0/3”等,显然4.0和3是立即数常量。(3)C语言中的变量。 int r;和float S,V;语句定义了所使用的变量。C语言中的变量也有类型。第9页/共154页第九页,共154页。2.2 C语言的数据(shj)(Data)及其类型(Type)2.2.2 2.2.2 语言语言(yyn)(yyn)的数据的数据类型类型2.2.1 2.2.1 数据类型有关数据类型有关(yugun)(yugun)概念概念第10页/共154页第十页,共154页。2.2.1 2.2.1 数
7、据类型(数据类型(Data TypeData Type)有关)有关(yugun)(yugun)概念概念 1、数据存储的本质 在计算机运行过程中,运行所需的程序和数据必须保存在内存中。 程序中所使用(shyng)的数据,划分成不同的类型。不同类型的数据在内存中的存储形式不同。 现实(xinsh)问题中的各种各样的“数据”在计算机中的存在形式主要有两种:常量和变量。 第11页/共154页第十一页,共154页。2、数据是运算和操作的对象(duxing)。 例2-1中, (1)圆半径r是待输入的变量数据; (2)处理过程中用到的3.1415926、4.0和3是常量数据; (3)结果S和V是变量数据。这
8、些常量和变量均是数值数据。 (4)提示信息“请输入圆的半径(整数):”是字符串常量数据。第12页/共154页第十二页,共154页。3. 数据的表示和运算 在计算机程序中使用数据需要解决(jiju)下列问题。(1)数据如何表示:即在编写程序时如何表示(书写、描述)数据;(2)数据如何存储:即在计算机中存储一个数据需要多大内存以及按怎样的形式存储;(3)数据可以参与哪些操作运算。第13页/共154页第十三页,共154页。4、数据类型概念(ginin) “数据类型”代表了数据所表示的信息类型,刻画描述了数据的值域、存储特性和运算集合。相同性质的数据划分为一类。 如何使用数据类型? 按被说明信息的性质
9、、表示形式、占据存储空间按被说明信息的性质、表示形式、占据存储空间的多少的多少(dusho)(dusho)、构造特点和运算集来划分类型、构造特点和运算集来划分类型的。的。 5、数据类型的种类 第14页/共154页第十四页,共154页。2.2.2 2.2.2 语言语言(yyn)(yyn)的数据类型的数据类型C语语言言数数据据类类型型基本类型基本类型(原子类型)(原子类型)数值数值类型类型整型整型有符号短整型(有符号短整型(short)无符号短整型(无符号短整型(unsigned short) 有符号整型(有符号整型(int)无符号整型(无符号整型( unsigned int)有符号长整型(有符号
10、长整型(long)无符号长整型(无符号长整型( unsigned long)实型实型(浮点型)(浮点型)单精度型(单精度型(float)双精度型(双精度型(double)非数值非数值类型类型字符类型(字符类型(char)空类型(空类型(void)构造类型构造类型数组(数组(array)结构体结构体 (struct)共用体(共用体(union)枚举类型枚举类型(enum)指针类型指针类型 基本(jbn)数据类型最主要的特点是其值不可以再分解为其它类型。也叫简单类型或原子类型。第15页/共154页第十五页,共154页。1.基本数据类型(1)数值型数据:数值型数据主要(zhyo)用于科学计算领域,分
11、为“整型”和“实型”;整型(Integer)数据类型数据类型(括号中关键字可省括号中关键字可省)字节个数字节个数取值范围取值范围shortshort (int)2-32768+32767(-215215-1)unsigned short (int)2065535 (0216-1)intint4-21474836482147483647(-231231-1)unsigned (int)404294967295(0232-1)longlong (int)4-21474836482147483647(-231231-1)unsigned long (int)404294967295 (0232-1)
12、第16页/共154页第十六页,共154页。整型数据根据在机器(j q)中的存储长度短整型(short) 基本整型(int) 长整型(long) 所占字节数增大无符号短整型(unsigned short))有符号短整型(short))无符号基本整型(unsigned)有符号基本整型(int)无符号长整型(unsigned long)有符号长整型(long)2字节4字节4字节-32768+32767(-215 215-1) 065535 (0216-1) 04 294 967 295 (0232-1) -2 147 483 6482 147 483 647(-231231-1)04 294 967
13、 295 (0232-1) -2 147 483 6482 147 483 647(-231231-1)整数以补码(b m)存储第17页/共154页第十七页,共154页。十进制整数(zhngsh)形式:1286八进制整数(zhngsh)形式:017 十六进制整数(zhngsh)形式:0 x1a 第18页/共154页第十八页,共154页。u实型(Real)数据类型数据类型(关键字)(关键字)字节个字节个数数取值范围取值范围精度(位)精度(位)float4约约-3.410383.41038(6位有效数字)位有效数字)7double 8约约-1.7103081.710308(12位有效数字)位有效数
14、字)15第19页/共154页第十九页,共154页。十进制小数(xiosh)形式:1.2354、326.89指数形式,又称科学记数法: 123.456=0.123456103=12.3456101=12345.610-2=1.234e+002 在实型数据的表示中,注意:、小数点不可(bk)单独出现;、字母E或(e)的前后必须有数字,且其后的数据必须为整数。第20页/共154页第二十页,共154页。 字符类型(Character) 字符数据类型是构建其它文本数据的“原子”。用来定义和规范字符类型数据和小数值整型数据。 每个字符型数据在内存中占一个字节(z ji)。 字符类型说明符:char 值域:
15、ASCII码表的所有符号,包括字母、数字、标点、空格、回车等。 (2)非数值(shz)型数据第21页/共154页第二十一页,共154页。 ASCII ASCII表的结构特征。表的结构特征。 ASCIIASCII码表中的每个字符都码表中的每个字符都有一个有一个ASCIIASCII编码值,称为编码值,称为字符代码值(字符代码值(character character codecode)。例如字母)。例如字母AA的的ASCIIASCII码值是码值是6565,BB是是6666。 由于字符的代码及存由于字符的代码及存储储(cn ch)(cn ch)特性,字符特性,字符能像整数一样计算。例如,能像整数一样
16、计算。例如,字符字符AA在参加整数运算在参加整数运算时,当作整数时,当作整数6565处理。处理。 第22页/共154页第二十二页,共154页。 空类型(void) void的字面意思是“无类型”,是一个无类型关键字,强调函数的返回值类型为空或函数无参数(cnsh)。 C语言中,凡不加返回值类型限定的函数,会被编译器作为整型返回值处理。第23页/共154页第二十三页,共154页。2.指针(Pointer)数据类型根据内存(ni cn)单元地址可以找到所需内存(ni cn)单元值,通常把内存(ni cn)地址称为指针(Pointer)。指针类型是一种特殊数据类型,指针型数据的值是内存(ni cn)
17、地址。第24页/共154页第二十四页,共154页。3.构造类数据类型 在C语言中,构造类型有数组类型、结构类型和共用体类型三种。(1)数组(Aarry)数组定义形式(xngsh):数据类型 数组名常量表达式其中,常量表达式是数组的长度。 例:a0、a1、a2, (2)结构体(Struct)在实际问题中,我们使用的一组数据往往具有不同的数据类型。在C语言中,存放该复杂数据需要使用一种特殊的构造数据类型结构体。第25页/共154页第二十五页,共154页。2.3 程序中的常量(chngling)(Constant)和变量(Variables) 常量:在程序运行过程中值不会发生变化的数据,如3.141
18、5926、3等。 变量:在程序运行过程中,其值可以变化的数据。使用(shyng)不同的标识符来表示不同的变量,如r、S、V等,代表不同的内存单元。第26页/共154页第二十六页,共154页。2.3.1 程序中的直接(zhji)常量和符号常量1.整型常量(整常数)(1)三种形式(xngsh)十进制整数(一般表示方法):可以是09的一个或多个十进制数位,首位不能为0。例如:100、-200、32767等。 八进制整数:必须以0(注意,不是字母o)作为起始位,由07的一个或多个八进制数位。例如:011、023等。分别代表十进制的9和19。十六进制整数:以0X(或0 x)作为起始位,由09、af(AF
19、)的一个或多个十六制数。例如0 x12、0 xaf、0X1e等,分别代表十进制数的18、175和30。第27页/共154页第二十七页,共154页。2.实型常量(实数):带有小数点的常量。(1)十进制小数形式由数字和小数点组成(必须要有小数点)。 例如3.14、0.5、.5、5.、7.0、0.0等都是合法的实型常量。注意:小数点不可单独出现。(2)指数(zhsh)形式由“十进制小数”+“e(或E)”+“十进制整数”三部分组成。 例如:1234.567可表示为:1.234567E3或注意:C语言的语法规定,字母e(或E)之前必须有数字且其后的数据必须为整数。第28页/共154页第二十八页,共154
20、页。3.字符(Character)型常量(1)字符常量的表示用一对半角单引号括起来的一个字符 如A、a、 2等注意: 单引号中的大、小写字母表示不同的符号常量,如A和a表示不同的字符。单引号引起的空格(kn )()也是一个字符常量。字符常量只包含一个字符,AB是非法的。第29页/共154页第二十九页,共154页。(2)字符常量在内存中的存储方式ASCII码表中的每个字符都有一个ASCII编码值,称为字符代码值(Character Code)。字符常量在内存中存储的是字符的ASCII码值的二进制形式(xngsh),如字母“A”在内存中存储的是01000001 第30页/共154页第三十页,共15
21、4页。(3)字符(z f)常量可以进行的运算有三种:给某字符(z f)加上一个整数。例,如整数n在09之间,则0+n得到的是字符(z f)0后第n个字符(z f)的代码;某大写字母加上整数32,则转换为相应的小写字母等。 对某字符(z f)减去一个整数。如:表达式z-2代表字母z倒数前两个的字符(z f)“x”比较两个字符(z f)。如AB,结果为真。因为字符(z f)“A”的ASCII值小于字符(z f)“B”的ASCII第31页/共154页第三十一页,共154页。(4)转义字符(Escape Character)常量(chngling)字符字符功能功能字符字符功能功能n换行换行t横向跳格横
22、向跳格v竖向跳格竖向跳格b退格退格r回车回车f换页换页反斜杠字符反斜杠字符单引号字符单引号字符”双引号字符双引号字符ddd1到到3位位8进制表示的字符进制表示的字符xhh1到到2位位16进制表示的字符进制表示的字符0空值空值第32页/共154页第三十二页,共154页。4 4、字符(z f)(z f)串(string)(string)常量字符(z f)(z f)串常量或串常量(String)(String)是由半角双引号(”)括起来的零个或多个字符(z f)(z f)(charactercharacter)组成的有限序列。字符(z f)(z f)串的长度:字符(z f)(z f)串结束标志:“0
23、” “0” 。该结束标志在内存中占一个字节,但不记入字符(z f)(z f)长度 例:字符串常量“ABC”“ ” /*一个(y )空格字符串*/“” /*双引号中什么也没有,称为空串*/ 第33页/共154页第三十三页,共154页。5.简单宏定义符号常量(chngling)(Symbolic Constant)符号常量(chngling)必须先定义,后使用。 定义的一般形式是: #define 符号常量(chngling) 常量(chngling) “符号常量(chngling)”是一个遵循变量命名规则的名字,也称为宏名;习惯上用大写字母表示。 “常量(chngling)”是C语言中的一个常量
24、(chngling),简称“宏体”,由ASCII字符集中的字符组成。#define开头的行也叫宏定义行。通常,程序中的宏定义行放在程序文件的开头部分。 例如:#define LIMIT 100 #define PRICE 500第34页/共154页第三十四页,共154页。2.3.2 C程序(chngx)中的变量【例2-3】简单事务问题处理。交换(jiohun)两个变量的值是许多程序设计中经常用到的技巧,编程实现交换(jiohun)两个变量的值(必记算法)。分析:分析:(1 1)问题陈述:交换任意)问题陈述:交换任意(rny)(rny)两个变量的值。两个变量的值。(2 2)需求分析:对于任意)需
25、求分析:对于任意(rny)(rny)两个变量两个变量a a和和b b,如,如变量变量a a的值为的值为2 2,变量,变量b b的值为的值为3 3,则经过交换后,输,则经过交换后,输出变量出变量a a的值为的值为3 3,变量,变量b b的值为的值为2 2。第35页/共154页第三十五页,共154页。 设,有黑和蓝两个墨水瓶,但却错把黑墨水装在了蓝墨水瓶子里,而蓝墨水错装在了黑墨水瓶子里,要求将其互换。 设第三个墨水瓶为红色,其交换步骤(bzhu)如下: (3 3)处理流程)处理流程(lichng)(lichng) 数据数据“两两交换两两交换”,即交换两个变量内存中的值。,即交换两个变量内存中的值
26、。 此类问题需要借用第三个变量实现数据交换。此类问题需要借用第三个变量实现数据交换。 第36页/共154页第三十六页,共154页。第37页/共154页第三十七页,共154页。(4)确定(qudng)算法输出a a和b b的值t=a,a=b,b=tt=a,a=b,b=t 例2-22-2的算法流程图算法开始a=3,b=2a=3,b=2算法结束a=2,b=3,t; /*t为第三(d sn)变量*/t=a; /* c值为2*/a=b; /* a值为3*/b=t; /* b值为2*/则a=3,b=2;第38页/共154页第三十八页,共154页。(5)程序代码 :/*program ch2-3-1.c *
27、/ #include void main(void) float a,b,t; /* 定义3个实型变量(binling) */ a=2,b=3; /* 给a和b变量(binling)赋值*/ printf(交换前:a=%f,b=%fn,a,b); t=a,a=b,b=t; /*交换两个变量(binling)的值*/ printf(交换后:a=%f,b=%fn,a,b); /*输出*/ 第39页/共154页第三十九页,共154页。为了使程序具有(jyu)通用性,程序改进如下:/*program ch2-3-2.c */ #include void main(void) float a,b,t;
28、/*定义3个实型变量 */ scanf(%f%f,&a,&b); /*从键盘给a和b变量赋值*/ printf(交换前:a=%f,b=%fn,a,b); t=a,a=b,b=t; /*交换两个变量的值*/ printf(交换后:a=%f,b=%fn,a,b); /*输出*/第40页/共154页第四十页,共154页。1.变量的概念 数学中的变量与“=”。C语言中的变量:程序的运行过程中随时可以发生变化的量。变量在任何编程语言中都居于核心地位,理解变量是编程的关键所在。变量可表示问题(wnt)领域中所需的任何信息,可以是数字(如建筑物的高度)、字符或字符串(如单词、人的名字),或者
29、复杂得多的排列组合(如数学中的矩阵)变量有三个重要属性:名称、值和类型 。变量是命名的内存空间,具有存储数据的能力。 例1:x=x+5 例2:int a=10; a=a+1; 同样不难理解product= product*n。第41页/共154页第四十一页,共154页。v 不同类型的变量需要不同大小不同类型的变量需要不同大小(dxio)(dxio)的存储空间和具有不同的存储形式。的存储空间和具有不同的存储形式。v 变量名应使读者易于明白其中存储的变量名应使读者易于明白其中存储的值是什么。值是什么。 第42页/共154页第四十二页,共154页。2.简单变量的说明(或称声明,Declaring)及
30、使用C语言中,变量须“先定义,后使用”使用变量的三个步骤:声明:在程序(chngx)中为了能使用变量,必须先用类型说明符和标识符对变量进行声明定义 赋值:为了能正确使用变量,变量使用时必须有确定的值。 使用:变量的使用指的是在程序(chngx)中获得变量中所存储的值。 第43页/共154页第四十三页,共154页。(1)声明变量(Declare Variable) 一般(ybn)格式为: 类型标识符 变量名,变量名,;例如:例如:int a,b,c; /int a,b,c; /* *定义三个基本整型变量定义三个基本整型变量a,b,ca,b,c* */ /char d;char d;/ /* *定
31、义字符定义字符(z f)(z f)型变量型变量d d* */ /说明:说明:类型标识符是类型标识符是C C语言合法的数据类型。语言合法的数据类型。变量名必须满足变量名必须满足C C语言中标识符的命名规则。语言中标识符的命名规则。声明语句是一种非执行语句。声明语句是一种非执行语句。在同一程序段中,变量不允许被重复定义。在同一程序段中,变量不允许被重复定义。第44页/共154页第四十四页,共154页。(2)变量赋值(Variable Evaluate)变量初始化:在声明语句中指定变量的值,称为(chn wi)变量的初始化(Initialization); 例,int sum=0; /*对和值变量,
32、一般置初值为0*/ short a=291,b=-1; unsigned short u=65535; unsigned long ul=65551;注意:定义而未初始化的变量具有未知的初值。初始化语句中,int a=b=100;是不允许的。第45页/共154页第四十五页,共154页。变量a、b、u、ul实际存储(cn ch)情况如下图所示:第46页/共154页第四十六页,共154页。 变量赋值:在程序执行过程中,执行语句中指定了变量的值,值送入到相应的存储空间,称为(chn wi)变量赋值,占用的是运行时间。 例,int a,b; a=10,b=2; /*执行过程中为变量赋值*/ a=a+b
33、; /*执行过程中为变量赋值*/第47页/共154页第四十七页,共154页。(3)变量(binling)的使用(Using Variable)。例:int a,b; a=10; /*执行过程中为变量(binling)赋值*/ b=2*a; /*执行过程中使用变量(binling)a并为b赋值*/例:int a=10;a=a+1;上面的代码执行后,结果a的值是11。第48页/共154页第四十八页,共154页。3.指针变量(Pointer Variable)的概念变量地址:变量所占存储空间的首地址。指针变量:语言中,允许用一个变量来存放指针,这种变量称为指针变量。某内存单元的指针(即内存地址)和内
34、存单元的值是两个不同(b tn)的概念。指针变量基类型:当一个指针变量存放另一简单变量的地址时,我们称该指针指向该简单变量,该简单变量的类型是这个指针变量的基本类型,也叫基类型。第49页/共154页第四十九页,共154页。v通过变量名访问数据(shj)(shj)的方式称为“直接访问”,v 如,printf(printf(“%d%d”,i);,i);。v通过变量地址访问数据(shj)(shj)的方式称为“间接访问”v 如,scanf(scanf(“%d%d”, &i);, &i);。第50页/共154页第五十页,共154页。2.3.3学习如何确定问题领域的数据(shj)及其类型
35、分 析: 设三角形三边(sn bin)分别用a,b,c表示,三角形半周长的变量数据用t表示,t= 用变量s表示三角形的面积,s=2cba)()(ctbtatt定义变量和类型定义变量和类型(lixng)(lixng)如下:如下:float a,b,c,t;float a,b,c,t;double s;double s;【例例2-42-4】编程计算一个三角形的面积时,我们需要定义哪编程计算一个三角形的面积时,我们需要定义哪些数据(常量和变量),它们的类型如何确定?些数据(常量和变量),它们的类型如何确定?第51页/共154页第五十一页,共154页。2.4 程序(chngx)中的常用运算符(Oper
36、ator)和表达式(Expression)1.运算符(部分自学)(1)运算符的分类 运算符是告诉编译程序执行特定操作的符号。按结合操作数的个数:单目运算符(Unary Operator),双目运算符(Binary Operator),三目运算符(Ternary Operator) 按运算功能分为(fn wi):算术运算符、赋值运算符、关系运算符、逻辑运算符、逗号运算符等。C还有一些特殊的运算符,用于完成一些特殊的任务。(2)运算符的优先级(Priority)和结合性(Combine)优先级分为(fn wi)15级。 左结合(自左至右) 右结合(自右至左)通过对常用(chn yn)运算符和表达式
37、的学习,掌握C语言程序如何计算、处理数据。第52页/共154页第五十二页,共154页。2.表达式(Expression)(自学)由运算符和操作对象组成的式子叫表达式。操作数可以是常量、变量、函数或表达式。每个表达式均有结果值:表达式中的操作数按照一定的运算规则(guz)和顺序,在各种运算符的作用下,得到的运算结果。表达式运算中,不仅要考虑运算符的优先级,还要考虑结合方向。第53页/共154页第五十三页,共154页。C C语言运算符有如下(rxi)(rxi):第54页/共154页第五十四页,共154页。2.4.1 算术(sunsh)运算符(Arithmetic Operators)及其表达式 算
38、术(sunsh)运算符分为:基本算术(sunsh)运算符、正负号运算符和自增/自减运算符三大类。单目单目双目双目运算符运算符+-+-+-*/%名称名称自加自加自减自减正正负负加加减减乘乘除除求余求余结合方向结合方向右结合右结合左结合左结合第55页/共154页第五十五页,共154页。1.基本算术运算符(+、-、*、/、%) 双目运算符;*、/、%为同一(tngy)优先级,高于+、;在优先级相同的情况下是左结合。(1)除法运算(“/”)“整除”和“实除”:如果除运算的两个操作数都是整型数据则运算结果也为整型,叫“整除”运算;若除数或被除数至少有一个是实数,则被看成是“实除”。 第56页/共154页
39、第五十六页,共154页。整除例:float a ; a=5/2; /*结果为2.000 000,精度( jn d)为什么丢失?*/实除例: float a=5.0/2.0; 或者:a=5/2.0; 或者:a=5.0/2.0; 结果均为2.500000例:求1/2(a+b)的结果。 因为1/2的结果为整型0,所以表达式的结果为0。例:char ch=101; int a=ch/3; /*a的值为33*/第57页/共154页第五十七页,共154页。(2)%(取模)运算 取模运算操作对象只能是整数类型(lixng)。 例:int a=5%2; /*则a值是1*/。 取余操作结果的符号与机器有关,一般
40、是与第一个操作数符号相同。 例: 5%2 结果为:1 5%-2 结果为:1 -5%2 结果为:-1求余用途 应用例1:判断奇/偶数等。 如,x%2的结果为0,则说明x为偶数;x%2的结果不为0,则说明x为奇数。第58页/共154页第五十八页,共154页。应用例2:判断a是否(sh fu)能被3整除。 a%3的结果(ji gu)为0,则说明a能被3整除;如a%3的结果(ji gu)不为0,则说明a不能被3整除。应用例3:利用整除和求余运算拆分一个整数的各位数字。 设a是一个三位数,则: a%10的结果是a的个位数字; a/100的结果是a的百位数字; a%100/10的结果是a的十位数字;例:1
41、23%10=3 123/100=1 123%100/10=2第59页/共154页第五十九页,共154页。2.自增(Increment)/自减(Decrement)运算符符号:+、-操作数只能是变量,不能是常量和表达式。功能:使该变量加1(自增)或减1(自减)。单目运算符,优先级与正、负号优先级相同,但高于基本算术运算符,结合性为自右向左。可以生成最优化的汇编代码(di m)+、-有前置(Prefix)和后置(Postfix)两种运算方式。前置运算:运算符在变量的前面,如+n,-n等;后置运算:运算符在变量的后面,如n+,n等。第60页/共154页第六十页,共154页。 如仅仅是对单个变量进行自
42、运算(Self-operation),前置运算或后置运算的结果相同。 例,有语句(yj)如下: int n=10; n+; /*或+n;n的值都是11*/ n-; /*或-n;n的值都是9*/例,例,int a=10; int a=10; 则实现变量则实现变量a a加加1 1的方法的方法(fngf)(fngf)有:有:方法方法(fngf)1(fngf)1:a=a+1;a=a+1;方法方法(fngf)2(fngf)2:a+=1;a+=1;方法方法(fngf)3(fngf)3:+a;+a;或者或者a+;a+;第61页/共154页第六十一页,共154页。4.算术表达式(自学)算术表达式是指用算术运算
43、符将各操作数连接起来的、符合一定语法规则的式子。算术表达式中可以包含算术运算符、常量(chngling)、变量、函数和表达式等元素。 如,前面所见的5%2、a/2、a+b+c、3+6、a*(b/c-d)、+n等都是算术表达式。第62页/共154页第六十二页,共154页。2.4.2 赋值(Assigment)运算符和赋值表达式1、赋值运算符(Assignment Operator):也称为赋值操作符,用“=”表示。赋值表达式形式为:变量=表达式说明:(1)赋值号的左边是任何合法的变量名,右边是任何合法的C语言表达式,它确定了特定(tdng)的值。(2)赋值操作:先计算右边表达式的值,再转换成左边
44、变量对象的类型,存入左边变量代表的内存空间。(3)结合方向是自右向左。(4)优先级别很低(14级),仅高于将学到的逗号(,)运算符。第63页/共154页第六十三页,共154页。注意:(1)赋值表达式加上分号(;),就构成赋值语句。如,“r=2;”是一个赋值语句。(2)“=”的左边必须是变量名,不能是表达式。如: a+b=3; /*错误!不能给表达式赋值*/(3)C语言中,可以使用连续(linx)赋值操作。如: int a ,b; a=b=100; /*等价于a=(b=100),结果a和b的值都为100*/ 但是,初始化语句中,int a=b=100;是不允许的。第64页/共154页第六十四页,
45、共154页。2.复合(fh)赋值运算符例:product= product*n; n=n+1; a=a/b; m=m+3; i=i-1; C语言中有许多(xdu)类似这样对变量自身进行某种运算再赋值给变量自身的运算。它们等价于复合赋值运算符:*=、+=、-= 、/= 、%= 等。 作用:优化代码作用:优化代码(di m):生成更短小的汇编代码:生成更短小的汇编代码(di m)第65页/共154页第六十五页,共154页。C语言中复合(fh)赋值运算符有“*=”、“+=”、“-=”、“/=”、“%=”等。例:假设在分别进行以下复合运算操作之前,a a原值都为1010。 a-=2; a-=2; 该语
46、句(yj)(yj)执行后,a a值为8 8; a a* *=2;=2; 该语句(yj)(yj)执行后,a a值为2020; a/=2; a/=2; 该语句(yj)(yj)执行后,a a值为5 5; a%=2; a%=2; 该语句(yj)(yj)执行后,a a值为0 0; 例:求5 5!p=p*i i=5 定义变量i、p输入初始数据 p=1,i=1 开始Y(p*=i) 输出p i=i+1N结束第66页/共154页第六十六页,共154页。2.4.3* 自增(减)运算(yn sun)的进一步理解 在有其它运算的复杂表达式中,自增(减)的前置(qin zh)和后置运算是有区别的。 1前置(qin zh
47、)运算:先加(或减1),然后用已加(或减1)的变量参加其它运算。 2后置运算:先用未加的变量参加其它运算,然后再将该变量加(或减1)。第67页/共154页第六十七页,共154页。【例2-6】学习阅读C语句(yj),判断语句(yj)执行结果和对变量值的修改结果。语句(yj)段如下: int a=8,b=2,c,d; c=+a; d=b+; 分析:分析: 阅读阅读C C语句,判断语句,判断(pndun)(pndun)语句执行结果,语句执行结果,可以通过模拟计算机执行或完善程序在编译环境中可以通过模拟计算机执行或完善程序在编译环境中执行程序来实现。执行程序来实现。第68页/共154页第六十八页,共1
48、54页。【例【例2-72-7* *】学习阅读】学习阅读C C语句语句(yj)(yj)程序段,判断语句程序段,判断语句(yj)(yj)执行结果和对变量值的修改结果。执行结果和对变量值的修改结果。 int int a=3,b=3,c,d; a=3,b=3,c,d; c=a+b+; c=a+b+; d=a+-a; d=a+-a; d=a+-a+-a; d=a+-a+-a; 分析:分析: 可以先完善程序段在编译环境中看执行结果。以上可以先完善程序段在编译环境中看执行结果。以上语句语句(yj)(yj)段完善后的程序如下:段完善后的程序如下: 第69页/共154页第六十九页,共154页。/* progra
49、m ch2-7.c*/#include void main()int a=3,b=3,c,d;c=a+b+; printf(%d %d %dn,a,b,c); /*添加该输出语句(yj)观察结果*/d=a+-a;printf(%d %d n,a,d); /*输出语句(yj)观察结果*/d=(a+)+(-a)+(-a); printf(%d %d n,a,d); /*输出语句(yj)观察结果*/第70页/共154页第七十页,共154页。注意注意(zh y):对于这种复杂的有多个:对于这种复杂的有多个自增自减运算的表达式,我们尽量避免自增自减运算的表达式,我们尽量避免使用,应该先把精力放在程序设计
50、的整使用,应该先把精力放在程序设计的整体环节上。体环节上。第71页/共154页第七十一页,共154页。2.4.4 逗号(duho)(Comma)运算符 用逗号运算符(,)将表达式连接起来的式子称为(chn wi)逗号表达式。逗号表达式的一般形式为: 表达式1,表达式2,表达式n 例,交换两变量的值:t=x,x=y,y=t v 说明:v 逗号运算符的优先级别最低(1515级),结合性是自左至右。v 功能:依次求解每个表达式,即先计算表达式1 1,最后计算表达式n n。整个逗号表达式的值是逗号表达式序列中最后一个表达式的值。v 注意(zh y)(zh y):v 并非所有的逗号都是作为逗号运算符的,
51、有的地方仅是作为分隔符使用。v 例,printf(printf(“%d,%dn%d,%dn”,x,y),x,y);v 语句中,两个参数间的逗号是分隔符。第72页/共154页第七十二页,共154页。2.4.5 *位(Bit)运算符(自学(zxu))1.按位与运算符(&)运算规则(guz):把参与运算的两个操作数的对应二进制位分别进行“与”运算。 例如,int a=12,b=13;,则表达式a&b的运算如下: (12)0 0 0 0 1 1 0 0 & (13)0 0 0 0 1 1 0 1 结果:0 0 0 0 1 1 0 0 第73页/共154页第七十三页,共154页。
52、2.按位或运算符(|)运算规则:把参与运算的两个操作数的对应二进制位分别进行“或”运算。例如(lr),表达式“12|13”的运算下: (12)0 0 0 0 1 1 0 0 | (13)0 0 0 0 1 1 0 1 结果: 0 0 0 0 1 1 0 1 即运算结果为13。第74页/共154页第七十四页,共154页。3.按位异或运算符() 运算规则:参与运算的两个(lin )操作数的对应二进制位异或。例如,表达式1213的运算如下: (12)0 0 0 0 1 1 0 0(13)0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 1 即运算结果为1。第75页/共154页第七十五页,共
53、154页。4.按位取反运算符() 运算对象应置于运算符的右边,例a。 运算规则:把运算对象的内容按位取反。5.左移运算符() 由左移运算符构成的表达式中,左移运算符的左边是移位对象,右边是整型表达式,代表移位的位数。左移时,右端补0,左端移出的部分舍弃。例如,123的运算如下: (12)0 0 0 0 1 1 0 0 12)由右移运算符构成的表达式中,右移运算符的左边是移位对象,右边是整型表达式,代表移位的位数。右移时右端移出的部分舍弃,若操作数为无符号数或正数,高位(o wi)补0,否则补1。例如,123的运算如下: (12)0 0 0 0 1 1 0 0 123的结果:0 0 0 0 0
54、0 0 1所以经过移位运算的结果为1。第77页/共154页第七十七页,共154页。2.4.6 指针(zhzhn)运算符 与地址操作有关的运算符叫指针运算符。 “&”和“*”均是单目运算符,优先(yuxin)级别相同,结合性都是自右向左。 “&”:求变量地址运算符,通常放在变量名的前面,得到其后变量的地址。 “*”: 指针运算符。 在指针定义语句中,“*”说明其后的变量是指针变量; 在执行语句中,“*指针变量名”表示取其后指针变量所指向变量的值。第78页/共154页第七十八页,共154页。分析(fnx):(1)定义指针变量的一般语法形式为:类型说明符 *指针变量1,*指针变量2,
55、*指针变量n; 为解决本问题,定义两个指针变量: float *p1,*p2; /*指向float类型的指针变量*/【例【例2-82-8】利用】利用(lyng)(lyng)指针变量交换两个简单变指针变量交换两个简单变量的值。量的值。(2 2)指针变量指向简单变量指针变量存放地址。通过(tnggu)(tnggu)将指针变量赋以简单变量地址值使指针指向简单变量。 例,接上一语句: float a,b; / float a,b; /* *简单变量* */ / p1=&a,p2=&b; / p1=&a,p2=&b; /* *指针变量指向简单变量* */ /第79页/共1
56、54页第七十九页,共154页。(3)间接访问(fngwn)简单变量 指针指向简单变量后,可以通过间接访问(fngwn)运算符“*”来间接访问(fngwn)简单变量。 如:*p1=3; /*表示简单变量a=3*/第80页/共154页第八十页,共154页。程序代码:/*program ch2-8.c*/ #include void main(void) float a,b,t; /*定义3个整型变量*/ float *p1,*p2; /*定义基类型为float型的指针变量*/ p1=&a; /*指针变量 p1指向变量a*/ p2=&b; /*指针变量 p2指向变量b*/ scanf
57、(%f%f,&a,p2); /* 给a和b输入(shr)数据*/ printf(交换前:a=%f,b=%fn,a,b); /*交换两个变量的值*/ t=*p1,*p2=*p1,*p1=t; printf(交换后:a=%f,b=%fn,a,b); 第81页/共154页第八十一页,共154页。2.4.7 数据(shj)类型转换(Type Conversion)(自学) C C语言允许整型、实型和字符型数据进行混合运算。不同类语言允许整型、实型和字符型数据进行混合运算。不同类型的数据进行混合运算时,要考虑的问题有:型的数据进行混合运算时,要考虑的问题有: 运算符的优先级别;运算符的优先级别;
58、 运算符的结合方向;运算符的结合方向; 数据类型的转换数据类型的转换(zhunhun)(zhunhun)。 类型转换类型转换(zhunhun)(zhunhun)在在C C语言中也属于一种运算。语言中也属于一种运算。第82页/共154页第八十二页,共154页。1.数据类型自动转换(隐式转换)数据类型转换有时是根据需要(xyo)由编译系统自动进行完成的,称为自动转换。(1)算术运算中的数据类型转换 自动转换遵循“类型提升”的原则 低 int char,short unsigned long高 double float图2-7 2-7 算术运算过程的转换规则第83页/共154页第八十三页,共154页
59、。转换(zhunhun)的两条方向线:char/unsigned char-short/unsigned short- int/unsigned int- doublefloat-double例:float a=5/2 ; /*隐式类型转换*/例:int r; float girth; girth=2*PI*r 右侧的算术表达式,涉及到常量和变量、整型和实型,在运算时自动进行数据类型(lixng)的转换:常量2转换为double类型(lixng),和符号常量PI(对应的实数值转换为double类型(lixng))相乘,变量r转换为double类型(lixng),然后再进行运算,算术表达式的结果
60、为double类型(lixng) 第84页/共154页第八十四页,共154页。例 :V=43rrr 表达式中,常量4和3均是整数,43结果是整数(为1),这并不是我们想要的结果。为了保证结果的有效性,写为4.0或3.0,自动变换为实数(shsh)运算。 例:例:S=1S=12 2 r rr r 常量常量1 1和和2 2均是整数,均是整数,1 12 2结果也是整数(为结果也是整数(为0 0),这并),这并不是我们想要的结果。为了保证结果的有效性,写为不是我们想要的结果。为了保证结果的有效性,写为1.01.0或或2.02.0,自动变换为实数,自动变换为实数(shsh)(shsh)运算。运算。 第85页/共154页第八十五页,共154页。(2)赋值运算中的自动类型转换 如果(rgu)赋值运算符两侧的数据类型不同,赋值号右
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年互联网广告代理与推广服务合同3篇
- 2024年水利工程项目施工安全责任协议
- 2024年度大型企业智能工厂建设合作协议2篇
- 笨-氯苯课程设计
- 2024年数据中心幕墙劳务分包合同范本3篇
- 2024年版家用太阳能维修保障协议版B版
- 幼儿园菌菇类课程设计
- 石窟研学课程设计
- 疫情课程设计幼儿园
- 2024-2025学年沪教新版九年级(上)化学寒假作业(九)
- 浙江省杭州市学军中学2025届高三最后一模物理试题含解析
- 四川省成都市锦江区嘉祥外国语学校2024-2025学年九年级上学期入试考试数学试题
- 2024-2030年中国压电薄膜传感器行业市场发展趋势与前景展望战略分析报告
- TSG+23-2021气瓶安全技术规程
- 期末试卷(试题)-2024-2025学年三年级上册数学人教版
- 新外研版高中英语必修1单词正序英汉互译默写本
- 媒介审判完整版本
- 水生生物学智慧树知到期末考试答案章节答案2024年宁波大学
- 2024北京市《安全员》C证考试题库及参考答案一套
- 社区矫正专业人员的培训
- 安全隐患规范依据查询手册22大类12万字
评论
0/150
提交评论