版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、课前提问:课前提问:结构化程序设计包含哪几种基本程序结构结构化程序设计包含哪几种基本程序结构项目项目顺序结构程序设计顺序结构程序设计项目项目2 2 顺序结构程序设计顺序结构程序设计本项目主要内容()常量与变量,数据类型,算术运算符,赋值运算符()常量与变量,数据类型,算术运算符,赋值运算符()语句()语句()格式化输入()格式化输入/输出输出重点与难点重点与难点()常量与变量,数据类型,算术运算符,赋值运算符。()常量与变量,数据类型,算术运算符,赋值运算符。()格式化输入()格式化输入/输出输出项目项目2 2 顺序结构程序设计顺序结构程序设计任务任务2.1 2.1 数据的类型与运算数据的类型
2、与运算 任务说明任务说明C C语言程序中使用的各种数据类型是按被定义变量的性质,表语言程序中使用的各种数据类型是按被定义变量的性质,表示形式,占据存储空间的多少,构造特点来划分。在本任务中,示形式,占据存储空间的多少,构造特点来划分。在本任务中,将学习将学习C C语言中数据的表现形式及其运算。语言中数据的表现形式及其运算。任务实施任务实施1.1.程序功能程序功能分析分析Ex2-1.cEx2-1.c运算表达式程序的运行结果。运算表达式程序的运行结果。项目项目2 2 顺序结构程序设计顺序结构程序设计2.2.运算符应用源程序运算符应用源程序Ex2-1.cEx2-1.c: #include /*包含头
3、文件包含头文件*/ void main( ) int a,b,c,t,k; /*定义五个整型变量定义五个整型变量*/ float x,y,z; /*定义三个实型变量定义三个实型变量*/ a=85; b=18; x=42.6; y=28.3; /*给变量给变量a、b、x、y分别赋值分别赋值*/ c=a/b*9+a %b; /*求算术表达式的值,并赋给求算术表达式的值,并赋给c*/ z=x/y+(x+y)/2-1; /*求算术表达式的值,并赋给求算术表达式的值,并赋给z*/ a*=2; /*用复合赋值运算符为用复合赋值运算符为a乘乘2*/ k=b+; /*b的值赋给的值赋给k,然后,然后b加加1*
4、/ printf(a=%d,b=%d,c=%d,k=%dn,a,b,c,k); /*输出变量输出变量a、b、c和和k的值的值*/ printf(t=%dn, (int)(x+y); /*将将x+y的值转换成整型,并输出的值转换成整型,并输出*/ printf(z=%fn, z); /*输出变量输出变量z的值的值*/项目项目2 2 顺序结构程序设计顺序结构程序设计4. . 运行、调试运行、调试在在VC+6.0开发环境下,编辑、编译和调试源程序开发环境下,编辑、编译和调试源程序Ex2-1.c。程序运行的结果为:程序运行的结果为:a=170,b=19,c=49, k=18t=70z=35.95529
5、9任务拓展任务拓展程序中程序中“(int)(x+y)”将将x与与y之和强制转换为之和强制转换为int类型,试分析类型,试分析x、y原来的原来的值及类型是否发生了改变?值及类型是否发生了改变?项目项目2 2 顺序结构程序设计顺序结构程序设计相关知识相关知识一、数据类型一、数据类型1.1.自然界中的数据与计算机中的数据的区别自然界中的数据与计算机中的数据的区别数据是程序处理的对象。自然界中的数据只有数值大小之分,表示数据是程序处理的对象。自然界中的数据只有数值大小之分,表示范围可以从负无穷到正无穷,一般用十进制来表示。范围可以从负无穷到正无穷,一般用十进制来表示。计算机要处理的数据是放在计算机内存
6、中的,除了有计算机要处理的数据是放在计算机内存中的,除了有数值大小之分数值大小之分之外,还有占用存储空间(占几个字节)大小之分之外,还有占用存储空间(占几个字节)大小之分,这种存储空间大小,这种存储空间大小,决定了数值的大小,计算机内存决不能保存无穷大或无穷小的数据。无决定了数值的大小,计算机内存决不能保存无穷大或无穷小的数据。无论是什么类型的数据存放在计算机内存中,都将转变成二进制数据的形论是什么类型的数据存放在计算机内存中,都将转变成二进制数据的形式,而不是我们所熟悉的十进制或字符。式,而不是我们所熟悉的十进制或字符。项目项目2 2 顺序结构程序设计顺序结构程序设计2.2.数据类型数据类型
7、在在C C语言中不同的数据都被规定属于不同的数据类型,即语言中不同的数据都被规定属于不同的数据类型,即数据必有类型数据必有类型。数据类型反映出数据在内存中占用多少内存空间。数据类型反映出数据在内存中占用多少内存空间。C C语言的数据类型如下图所示。基本类型是包括语言的数据类型如下图所示。基本类型是包括整数类型(整型)、实数整数类型(整型)、实数类型(实型)、字符类型(字符型)类型(实型)、字符类型(字符型)。构造类型是由用户按照一定规。构造类型是由用户按照一定规则来决定数据占用空间大小,它包括则来决定数据占用空间大小,它包括数组类型、结构体类型、共用体数组类型、结构体类型、共用体类型类型和和枚
8、举类型枚举类型,构造类型也叫做用户自定义类型。,构造类型也叫做用户自定义类型。 提示:提示:由于计算机中的数据与现实中的数据存在相同和不同点,所以由于计算机中的数据与现实中的数据存在相同和不同点,所以C C语言将现实语言将现实中的整数叫做整型、实数做叫实型、字符叫做字符型以示区别中的整数叫做整型、实数做叫实型、字符叫做字符型以示区别项目项目2 2 顺序结构程序设计顺序结构程序设计图图2-1 C2-1 C语言中的数据类型语言中的数据类型有符号整型有符号整型有符号短整型有符号短整型有符号长整型有符号长整型无符号整型无符号整型无符号短整型无符号短整型无符号长整型无符号长整型数据类型数据类型基本类型基
9、本类型构造类型构造类型指针类型指针类型空类型空类型void定义类型定义类型typedef字符型字符型枚举类型枚举类型整型整型实型实型单精度型单精度型float双精度型双精度型double数组数组结构体类型结构体类型共用体类型共用体类型有符号整型有符号整型无符号整型无符号整型提示:提示:在在C C语言中,是用数据最高位作语言中,是用数据最高位作为数据的符号位,最高位为为数据的符号位,最高位为1 1来表示负数,来表示负数,最高位为最高位为0 0表示正数。如果将最高位也当成表示正数。如果将最高位也当成是数值位,就不能表示负数,这样的数在是数值位,就不能表示负数,这样的数在C C语言中叫无符号(语言中
10、叫无符号(unsignedunsigned)数,能表示)数,能表示为负数的叫有符号为负数的叫有符号(signed)(signed)数。数。项目项目2 2 顺序结构程序设计顺序结构程序设计 表表2-1 基本类型一览表基本类型一览表说明说明: :数据类型所占字节数随机器硬件不同而不同。数据类型所占字节数随机器硬件不同而不同。类型类型 符号符号 类型标识符(关键字)类型标识符(关键字)数的表示范围数的表示范围所占空间所占空间整型整型字符型字符型实型实型有有无无signed int4字节字节-21474836482147483647signed short-3276832767signed long-
11、214748364821474836470429496729504294967295065535有有float-3.4e-383.4e38有有double-1.7e-3081.7e308有有char-128127无无unsigned char0255unsigned intunsigned shortunsigned long2字节字节4字节字节4字节字节2字节字节4字节字节4字节字节8字节字节1字节字节1字节字节项目项目2 2 顺序结构程序设计顺序结构程序设计二、常量与变量二、常量与变量1. 常量常量在程序运行的过程中,其值不能被改变的量称为常量。在程序运行的过程中,其值不能被改变的量称为常
12、量。(1)整型常量)整型常量。整型常量是值为整数的常量,它包括正整。整型常量是值为整数的常量,它包括正整数、零和负整数。可以用下面三种形式表示数、零和负整数。可以用下面三种形式表示: 十进制整数。十进制整数。如如35,-120,0等。等。 八进制整数。八进制整数。八进制形式的常量都以八进制形式的常量都以0开头,如开头,如0123,也,也就是十进制的就是十进制的83。 十六进制整数。十六进制整数。十六进制的常量都是以十六进制的常量都是以0 x开头,如开头,如0 xFF,即十进制数即十进制数255。项目项目2 2 顺序结构程序设计顺序结构程序设计(2)实型常量)实型常量。实型常量是值为实数的常量。
13、在。实型常量是值为实数的常量。在C语言中,实型常量可语言中,实型常量可以用下面两种形式表示。以用下面两种形式表示。 十进制小数形式。例如,十进制小数形式。例如,3.14、0.618、5.0等。等。 十进制指数形式。它由尾数、字母十进制指数形式。它由尾数、字母e或或E以及指数等以及指数等3部分构成。例如部分构成。例如2.75e3、6E5、.123E+4等。等。 若尾数写成小数点前有且仅有一位非若尾数写成小数点前有且仅有一位非0数字,那就规范化的指数形式。数字,那就规范化的指数形式。比如,比如,125.46规范化的指数形式是规范化的指数形式是1.2546e2。 在在C语言中,以指数形式输出实数时,
14、都按规范化的指数形式输出。语言中,以指数形式输出实数时,都按规范化的指数形式输出。项目项目2 2 顺序结构程序设计顺序结构程序设计(3)字符常量。)字符常量。C语言中,用一对英文单引号括起来的单个字符称语言中,用一对英文单引号括起来的单个字符称为字符常量。例如,为字符常量。例如, A 、 d 、 7 等。等。语言还允许使用一种特殊形式的字符常量,就是以反斜杠语言还允许使用一种特殊形式的字符常量,就是以反斜杠“ ”开开头的转义字符。反斜杠后面的字符已不是原来字符的含义了,它的含义头的转义字符。反斜杠后面的字符已不是原来字符的含义了,它的含义已经发生了变化,如表已经发生了变化,如表2-2。表表2-
15、2 转义字符转义字符字符形式字符形式含义含义字符形式字符形式含义含义nLF(换行)(换行)双引号字符双引号字符tHT(横向跳格)(横向跳格)单引号字符单引号字符vVT(竖向跳格)(竖向跳格)反斜杠字符反斜杠字符“”bBS(退格(退格ddd13位位8进制数所代表的字符进制数所代表的字符rCR(回车)(回车)xhh12位位16进制数所代表的字符进制数所代表的字符项目项目2 2 顺序结构程序设计顺序结构程序设计(4)字符串常量。)字符串常量。字符串常量是用一对英文双引号括起来的字符序列。字符串常量是用一对英文双引号括起来的字符序列。字符串中字符的个数称为字符串长度。如,字符串中字符的个数称为字符串长
16、度。如,how are you、CHINA、a等都是字符串常量。等都是字符串常量。字符串中的每个字符占字符串中的每个字符占1个字节,字符串有结束标记个字节,字符串有结束标记0 ,即每个字符串,即每个字符串都在末尾由系统自动加上一个结束标志都在末尾由系统自动加上一个结束标志0 。字符串。字符串how are you占占用的内存空间如下图所示。用的内存空间如下图所示。howa rey o u 0项目项目2 2 顺序结构程序设计顺序结构程序设计执行下列语句,输出结果是执行下列语句,输出结果是printf(%dn,28); printf(%dn,034); printf(%dn,0 x1c);项目项目
17、2 2 顺序结构程序设计顺序结构程序设计2. 变量变量变量是指在程序运行中,其值可以改变的量。变量是指在程序运行中,其值可以改变的量。变量有三个要素:变量有三个要素:变变量名量名、变量的值变量的值、变量的类型变量的类型。变量的值存储在内存中,程序通过变量。变量的值存储在内存中,程序通过变量名来引用变量的值。名来引用变量的值。变量名是用标识符来表示的,变量名是用标识符来表示的,C语言对标识符的规定如下。语言对标识符的规定如下。 标识符的组成标识符的组成。 字字母母(az或AZ)数数字字(09)下下划划线线( _ )标标识识符符项目项目2 2 顺序结构程序设计顺序结构程序设计 命名规则。命名规则。
18、第一个字符必须是字母或下划线,即不能以数第一个字符必须是字母或下划线,即不能以数字开头。字开头。例如例如a、x1、SUM、_abc等都是合法的变量名,但等都是合法的变量名,但3a、a$b等不是合法的变量名。要注意变量名字母的大小写,等不是合法的变量名。要注意变量名字母的大小写,如系统认为如系统认为sum和和SUM是两个不同的变量名。是两个不同的变量名。在在C语言中有些单词含有特殊意义,不允许用作变量名,语言中有些单词含有特殊意义,不允许用作变量名,这些单词称为关键字或保留字。这些单词称为关键字或保留字。例如表示类型的例如表示类型的char、int、float、double等虽然符合上等虽然符合
19、上述命名规则,但不能用作变量名。述命名规则,但不能用作变量名。 项目项目2 2 顺序结构程序设计顺序结构程序设计 ANSI C ANSI C标准规定的关键字标准规定的关键字项目项目2 2 顺序结构程序设计顺序结构程序设计请指出下列标识符是合法的标识符请指出下列标识符是合法的标识符5abc5abc aa-bbaa-bb a&ba&b M.H.ThatcherM.H.Thatcher a# a# ab ab¥ if ifA123A123a_123a_123_123_123Aa_B029bAa_B029b项目项目2 2 顺序结构程序设计顺序结构程序设计变量必须先定义然后才能使用,对变
20、量的定义一般是放变量必须先定义然后才能使用,对变量的定义一般是放在函数开头的声明部分。在函数开头的声明部分。定义变量的一般形式为:定义变量的一般形式为:类型标识符类型标识符 变量名变量名1,变量名变量名2,变量名变量名n;(1)整型变量。定义整型变量时所使用的类型标识符为)整型变量。定义整型变量时所使用的类型标识符为int(有符号整型)、(有符号整型)、unsigned int(无符号整型)等。(无符号整型)等。例如:例如:int x;int i, j;项目项目2 2 顺序结构程序设计顺序结构程序设计在程序编译时,系统为变量分配内存空间。如上述定义的整型变量在程序编译时,系统为变量分配内存空间
21、。如上述定义的整型变量x,系统在内存中为其分配系统在内存中为其分配4个字节的存储空间(个字节的存储空间(32位编译系统),并位编译系统),并命名为命名为x。定义变量后可以给它赋值,如。定义变量后可以给它赋值,如“x=15;”。整型变量整型变量x赋赋值后的内存示意图如右图所示值后的内存示意图如右图所示 上述先定义了一个变量上述先定义了一个变量x,然后赋值,然后赋值15。也可以也可以在定义变量的同时给变量赋值,在定义变量的同时给变量赋值,叫变量的初始化叫变量的初始化。例如:例如:int x=15; 0 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0
22、 0 1 1 1 1变 量x低 字 节高 字 节项目项目2 2 顺序结构程序设计顺序结构程序设计(2)实型变量。定义实型变量时所使用的类型标识符为)实型变量。定义实型变量时所使用的类型标识符为float(单精度型)或(单精度型)或double(双精度型)。(双精度型)。例如:例如:float a;double b;定义实型变量定义实型变量a后,后,系统在内存中为其分配系统在内存中为其分配4个字节的存储空个字节的存储空间间,并命名为,并命名为a。同理,。同理,系统在内存中为系统在内存中为b分配分配8个字节的存储空个字节的存储空间间,并命名为,并命名为b。项目项目2 2 顺序结构程序设计顺序结构程
23、序设计(3)字符型变量。定义字符型变量时所使用的类型标识符为)字符型变量。定义字符型变量时所使用的类型标识符为char(有符(有符号字符型)或号字符型)或unsigned char(无符号字符型)。(无符号字符型)。例如:例如:char ch;定义字符型变量定义字符型变量ch后,后,系统在内存中为其分配系统在内存中为其分配1个字节的存储空间个字节的存储空间,并命,并命名为名为ch。字符变量是用来存储字符常量的。因此,定义字符变量后可以给它赋值,字符变量是用来存储字符常量的。因此,定义字符变量后可以给它赋值,如如“ch=A;”。也可以在定义字符变量。也可以在定义字符变量ch的同时给其赋值,即变量
24、初的同时给其赋值,即变量初始化,如始化,如“char ch=A;”。项目项目2 2 顺序结构程序设计顺序结构程序设计三、运算符和表达式三、运算符和表达式表表2-3 运算符类型与说明运算符类型与说明类型类型说说 明明算术运算符算术运算符加加(+)、减、减(-)、乘、乘(*)、除、除(/)、求余、求余(或模运算或模运算%)、自增、自增(+)、自减、自减(-)关系运算符关系运算符大于大于()、小于、小于(=)、小于等于、小于等于(=)、不等于、不等于(!=)逻辑运算符逻辑运算符与与(&)、或、或(|)、非、非(!)位操作运算符位操作运算符位与位与(&)、位或、位或(|)、位非、位非(
25、)、位异或、位异或()、左移、左移()赋值运算符赋值运算符简单赋值简单赋值(=)、复合算术赋值、复合算术赋值(+=,-=,*=,/=,%=)、复合位运算赋值、复合位运算赋值(&=,|=,=,=,. )项目项目2 2 顺序结构程序设计顺序结构程序设计1.1.算术运算符及其表达式算术运算符及其表达式(1)(1)基本的算术运算符。基本的算术运算符。C C语言的基本算术运算符有语言的基本算术运算符有5 5种。种。 :加法运算符,或正值运算符。:加法运算符,或正值运算符。如如2 28 8、+6+6等。等。:减法运算符,或负值运算符。:减法运算符,或负值运算符。如如6-26-2、-4-4等。等。
26、* *:乘法运算符。:乘法运算符。如如3 3* *7 7等。等。 / /:除法运算符。:除法运算符。如如5/35/3,5.0/35.0/3等。等。“/”/”两侧均为整型数两侧均为整型数据,商为整型;有一侧为实型或两侧均为实型,商为实型。据,商为整型;有一侧为实型或两侧均为实型,商为实型。 % %:模运算符或求余运算符。:模运算符或求余运算符。“%”%”两侧只能为整型数据,两侧只能为整型数据,如如%5%5的值为的值为2 2。项目项目2 2 顺序结构程序设计顺序结构程序设计(2)算术运算符的优先级与结合性。算术运算符的优先级与结合性。用算术运算符和括号将运算对象用算术运算符和括号将运算对象( (也
27、称操作数)连接起来的符合语言语法规则的式子,称为算术表也称操作数)连接起来的符合语言语法规则的式子,称为算术表达式。达式。运算对象包括常量、变量、函数等运算对象包括常量、变量、函数等, ,如如a*b/c-1.5 +a。 语言规定了运算符的优先级和结合性。语言规定了运算符的优先级和结合性。优先级优先级当一个表达式中有多个运算符时,先执行哪个运算符必须遵循一定的规当一个表达式中有多个运算符时,先执行哪个运算符必须遵循一定的规则,这种运算符执行的先后顺序称为运算符的优先级。则,这种运算符执行的先后顺序称为运算符的优先级。C语言中算术运算符的优先级由高到低依次为:语言中算术运算符的优先级由高到低依次为
28、: 圆括号圆括号“( )”正、负正、负“+、-”乘、除、取余乘、除、取余“*、/、%”加减加减“+、-”。例例如:如:18+(3+2)* 4 % 6 先算先算3+2为为5,然后,然后5*4为为20,接着计算,接着计算20%6为为2,最后计算,最后计算18+2为为20。 项目项目2 2 顺序结构程序设计顺序结构程序设计结合性结合性如果一个运算对象两侧的运算符的优先级相同,则由结合性来决定它们如果一个运算对象两侧的运算符的优先级相同,则由结合性来决定它们的运算顺序。的运算顺序。按按“从左向右从左向右”的顺序运算,称为左结合性;按的顺序运算,称为左结合性;按“从右向左从右向左”的顺序运算,称为右结合
29、性。基本算术运算符的结合性为左结合性。如在的顺序运算,称为右结合性。基本算术运算符的结合性为左结合性。如在a-b+ca-b+c中,中,b b先与减号结合执行先与减号结合执行a ab b 的运算,再执行加的运算,再执行加c c的运算。的运算。 注:在算术表达式中,若包含不同优先级的运算符,则按运算符的优先注:在算术表达式中,若包含不同优先级的运算符,则按运算符的优先级别由高到低进行;若表达式中运算符的优先级别相同时,则按运算符的级别由高到低进行;若表达式中运算符的优先级别相同时,则按运算符的结合方向(结合性)进行。结合方向(结合性)进行。运运 算算 种种 类类结结 合合 性性优优 先先 级级*
30、*,/ /,% %从左向右从左向右高高低低+ +, 从左向右从左向右项目项目2 2 顺序结构程序设计顺序结构程序设计(3)各种数值型数据间的混合运算各种数值型数据间的混合运算 。在在C C语言中,整型、实型和字符型数据可以进行混合运算。语言中,整型、实型和字符型数据可以进行混合运算。当一个运算符两侧的数据类型不同时,则编译系统先自动将数当一个运算符两侧的数据类型不同时,则编译系统先自动将数据转换为同一类型,然后再进行运算据转换为同一类型,然后再进行运算, ,转换规则如图所示。转换规则如图所示。 doubledoublechar,shortchar,shortunsignedunsignedfl
31、oatfloatlonglongintint高高低低u 横向向左的箭头,表示必须横向向左的箭头,表示必须的转换。的转换。char和和short 型必须转型必须转换成换成 int 型,型,float型必须转换成型必须转换成double型。型。u纵向向上的箭头,表示不同纵向向上的箭头,表示不同类型的转换方向。类型的转换方向。项目项目2 2 顺序结构程序设计顺序结构程序设计一个运算符两侧的操作数的数据类型不同时,则按一个运算符两侧的操作数的数据类型不同时,则按“先转换、先转换、后运算后运算”的原则,首先将数据自动转换成同一类型,然后的原则,首先将数据自动转换成同一类型,然后进行运算。例如,进行运算。
32、例如,int 型型与与 double 型数据进行型数据进行混合运算混合运算,则先将则先将 int 型数据直接转换成型数据直接转换成 double 型(不是一级一级的型(不是一级一级的转换),然后在两个同类型的数据间进行运算,转换),然后在两个同类型的数据间进行运算,结果为结果为double型。型。如果两个操作数中最高级别为如果两个操作数中最高级别为long,则另一个,则另一个数据先转换成数据先转换成long型,运算结果为型,运算结果为long。 例:例:10+A项目项目2 2 顺序结构程序设计顺序结构程序设计(4)强制类型转换)强制类型转换强制类型转换运算符可将一个表达式转换成所需要的类型。强
33、制类型转换运算符可将一个表达式转换成所需要的类型。其一般形式为:其一般形式为:(类型名类型名)(表达式表达式)例如:例如: (double) a /*将变量将变量a的值转换成的值转换成double型型*/ (int) (x+y) /*将将 x+y 的结果转换成的结果转换成 int 型型*/ (float) (7%3) /*将将7整除整除3的值的值2转换成实型转换成实型1.0*/ 注意:注意:在强制类型转换时,得到一个所需类型的中间变量,在强制类型转换时,得到一个所需类型的中间变量,原来变量的类型未发生变化。原来变量的类型未发生变化。项目项目2 2 顺序结构程序设计顺序结构程序设计课堂练习:求下
34、面算术表达式的值:(1)x+a%3*(int)(x+y)%2/4 设x=2.5,a=7,y=4.7(2)(float)(a+b)/2+(int)x%(int)y 设a=2,b=3,x=3.5,y=2.5项目项目2 2 顺序结构程序设计顺序结构程序设计(5)自增、自减运算符。自增、自减运算符的作用是使变量的值增或)自增、自减运算符。自增、自减运算符的作用是使变量的值增或减。减。例如:例如: +i,-i /*在使用在使用i之前,先使之前,先使i的值加(减)的值加(减)1*/ i+,i - /*在使用在使用i之后,使之后,使i的值加(减)的值加(减)1*/假如假如i的原值等于的原值等于6,请分析下面
35、的赋值语句:,请分析下面的赋值语句: j=+i; /*先把先把i的值加的值加1变成变成7,然后再赋给,然后再赋给j,j的值也为的值也为7*/ j=i+; /*先将先将i的值赋给的值赋给j,j的值为的值为6,然后,然后i的值加的值加1变为变为7*/项目项目2 2 顺序结构程序设计顺序结构程序设计又例如:又例如:i=3;printf( %d ,+i ); 输出结果为输出结果为4。若改为:。若改为:printf( %d ,i +); 则输出结果为则输出结果为3。注意:自增运算和自减运算,只能用于变量,而不能用于常量或表达注意:自增运算和自减运算,只能用于变量,而不能用于常量或表达式。如式。如3+或或
36、(a+b)+都是不合法的,因为常量的值是不能改变的,表达都是不合法的,因为常量的值是不能改变的,表达式不能存放自增或自减后的值。式不能存放自增或自减后的值。项目项目2 2 顺序结构程序设计顺序结构程序设计关于算术运算符几点说明关于算术运算符几点说明: : C语言不提供开方运算符,因此需要调用语言不提供开方运算符,因此需要调用C库函数库函数sqrt。 C语言不提供乘方运算符,因此只能用语言不提供乘方运算符,因此只能用“ * ”计算乘方的值。计算乘方的值。 C语言表达式中的乘号语言表达式中的乘号“ * ”不能省略。不能省略。 C语言表达式中的内容必须书写在同一行,不允许有分子分母形语言表达式中的内
37、容必须书写在同一行,不允许有分子分母形式,必要时要利用圆括号保证运算的顺序。式,必要时要利用圆括号保证运算的顺序。 C语言表达式不允许使用方括号和花括号,只能使用圆括号帮助语言表达式不允许使用方括号和花括号,只能使用圆括号帮助限定运算顺序。可以使用多层圆括号,但左右括号必须配对。限定运算顺序。可以使用多层圆括号,但左右括号必须配对。项目项目2 2 顺序结构程序设计顺序结构程序设计2.2.赋值运算符及其表达式赋值运算符及其表达式 (1)(1)赋值运算符赋值运算符赋值符号赋值符号“”就是赋值运算符。它的作用是将一个数据赋给一个变量。就是赋值运算符。它的作用是将一个数据赋给一个变量。例如例如: :
38、a=3;a=3; /其作用是把常量赋给变量其作用是把常量赋给变量a a。例如:例如:x=y+5;x=y+5; /其作用是将其作用是将y+5y+5的和赋给变量的和赋给变量x x赋值运算符的赋值运算符的优先级优先级比较低,比较低,结合性结合性是自右至左。是自右至左。项目项目2 2 顺序结构程序设计顺序结构程序设计(2)(2)复合的赋值运算符复合的赋值运算符复合的赋值运算符。在赋值符复合的赋值运算符。在赋值符“=”前加上其他运算符,可以构成复合前加上其他运算符,可以构成复合的运算符。常用的有的运算符。常用的有+=,-=,*=,/=,%=等。等。例如:例如: x+=3 等价于等价于x=x+3 /*先使
39、先使x的值加的值加3,再赋给,再赋给x*/ x*=y+5等价于等价于x=x*(y+5) /*先使先使x的值乘以的值乘以(y+5),再赋给,再赋给x*/ x/=3 等价于等价于x=x/3 /*先使先使x的值除以的值除以3,再赋给,再赋给x*/ x%=3 等价于等价于x=x%3 /*先使先使x的值对的值对3求余,再赋给求余,再赋给x*/项目项目2 2 顺序结构程序设计顺序结构程序设计(3)赋值表达式。由赋值运算符将一个变量和一个表达式连接起来的)赋值表达式。由赋值运算符将一个变量和一个表达式连接起来的式子称为赋值表达式。式子称为赋值表达式。其一般形式为:其一般形式为:变量变量=表达式表达式对赋值表
40、达式的求解过程是,先计算赋值运算符右侧的表达式,然后对赋值表达式的求解过程是,先计算赋值运算符右侧的表达式,然后将其值赋给左侧的变量,即从右向左计算。将其值赋给左侧的变量,即从右向左计算。项目项目2 2 顺序结构程序设计顺序结构程序设计(4)赋值表达式中的类型转换。)赋值表达式中的类型转换。进行赋值运算时,一般要求赋值符两边的数据类型一致。如果赋值进行赋值运算时,一般要求赋值符两边的数据类型一致。如果赋值运算符两侧的类型不一致,但都是数值型或字符型,在赋值时可以进行运算符两侧的类型不一致,但都是数值型或字符型,在赋值时可以进行类型转换。类型转换。类型转换由系统自动完成。类型转换由系统自动完成。
41、转换规则如下。转换规则如下。 将实型数据(包括单、双精度)赋予整型变量时,舍弃实数的小将实型数据(包括单、双精度)赋予整型变量时,舍弃实数的小数部分。数部分。 将整型数据赋予单、双精度变量时,数值不变,但以浮点数形式将整型数据赋予单、双精度变量时,数值不变,但以浮点数形式存储到变量中。存储到变量中。 将将int、short、long型数据赋值给型数据赋值给char型变量时,只将低型变量时,只将低8位放到位放到char型变量中。型变量中。 把字符型数据赋给整型变量时,是将字符的把字符型数据赋给整型变量时,是将字符的ASCII码赋给整型变码赋给整型变量。量。例如:例如:int i=A; /字符字符
42、A的的ASCII码为码为65,所以赋值后,所以赋值后i的值为的值为65。项目项目2 2 顺序结构程序设计顺序结构程序设计 关于赋值运算符几点说明:关于赋值运算符几点说明: 赋值运算符的左边必须是变量,右边的表达式可以是单一的常量、赋值运算符的左边必须是变量,右边的表达式可以是单一的常量、变量、表达式和函数调用语句。变量、表达式和函数调用语句。 例如:例如: x=20;y=x+20;y=func( )都是合法的赋值表达式。都是合法的赋值表达式。 赋值符号赋值符号“=”不同于数学中使用的等号,没有相等的含义。不同于数学中使用的等号,没有相等的含义。 例如:例如: x=x+1,其含义是取出变量,其含
43、义是取出变量x中的值加中的值加1后,再存入变量后,再存入变量x中去。中去。 在一个赋值表达式中,可以出现多个赋值运算符,其运算顺序是在一个赋值表达式中,可以出现多个赋值运算符,其运算顺序是从右向左结合。例如,下面是合法的赋值表达式。从右向左结合。例如,下面是合法的赋值表达式。 a=b=4+5 相当于相当于a=(b=4+5) 运算时,先执行运算时,先执行b=4+5,再把结果赋予,再把结果赋予b,最后使,最后使a、b的值均为的值均为9。 项目项目2 2 顺序结构程序设计顺序结构程序设计3. 逗号运算符与逗号表达式逗号运算符与逗号表达式C语言提供一种用逗号运算符语言提供一种用逗号运算符“,”连接起来
44、的式子,称为逗号表达式。连接起来的式子,称为逗号表达式。逗号表达式的一般形式为:逗号表达式的一般形式为:表达式表达式1,表达式表达式2,表达式表达式n逗号表达式的求解过程是,自左至右,依次计算各个表达式的值,逗号表达式的求解过程是,自左至右,依次计算各个表达式的值,最后一个表达式的值即为整个逗号表达式的值。例如,求逗号表达式最后一个表达式的值即为整个逗号表达式的值。例如,求逗号表达式“a=3*5,a*4”的值。先求解的值。先求解“a=3*5”,得,得a的值为的值为15,再求,再求“a*4=60”,所以逗号表达式的值为所以逗号表达式的值为60。关于逗号运算的几点说明:关于逗号运算的几点说明:(1
45、)并不是任何地方出现的逗号,都是逗号运算符。很多情况下,)并不是任何地方出现的逗号,都是逗号运算符。很多情况下,逗号仅用作分隔符。逗号仅用作分隔符。例如:例如:int a,b,c;printf(%d%d n,a+b,b+3);(2)逗号运算符是)逗号运算符是C语言中优先级最低的运算符。语言中优先级最低的运算符。项目项目2 2 顺序结构程序设计顺序结构程序设计4. 位运算符和位运算位运算符和位运算. 所谓所谓“位运算位运算”,即是,即是按照二进制位对整个运算对象进行操作,而不按照二进制位对整个运算对象进行操作,而不是只操作其中的某一个二进制位。是只操作其中的某一个二进制位。无论是哪种位运算符,运
46、算对象都只能无论是哪种位运算符,运算对象都只能是是整型整型(包括字符型包括字符型)的的,运算的结果仍然是整型的。,运算的结果仍然是整型的。 (1)位逻辑运算符)位逻辑运算符 名称名称运算符运算对象个数含 义位非位非单目单目位位1为为0,位,位0为为1位与位与&双目双目相应位都为相应位都为1时,才是时,才是1位或位或|双目双目相应位中只要有一个为相应位中只要有一个为1,就是,就是1按位加按位加双目双目相应位中只有一个为相应位中只有一个为1时,才是时,才是1 位逻辑运算符中,除了位逻辑运算符中,除了“位非位非”外,都是双目的。由位逻辑运算符和运算对象构外,都是双目的。由位逻辑运算符和运算对
47、象构成的表达式,称为成的表达式,称为“位逻辑表达式位逻辑表达式”。 已知已知x为:为:00010011,y为:为:11110111。求。求x、x&y、x|y、xy的结果。的结果。 【例例2-1】 x是将是将x中原为中原为1的位变成的位变成0,原为,原为0的位变成的位变成1。因此,。因此,x为:为:11101100。 x&y、x|y、xy的结果为:的结果为: 00010011&: 111101110001001100010011 |: 111101111111011100010011 : 1111011111100100项目项目2 2 顺序结构程序设计顺序结构程序设计位逻
48、辑运算符与逻辑运算符的区别位逻辑运算符与逻辑运算符的区别 位逻辑运算符是对二进制位的,逻辑运算符是对整个表达式的位逻辑运算符是对二进制位的,逻辑运算符是对整个表达式的 。位逻辑运算符要计算表达式的具体数值,逻辑运算符只判别表达式的真位逻辑运算符要计算表达式的具体数值,逻辑运算符只判别表达式的真(成立成立)与与假假(不成立不成立)。 (2)移位运算符)移位运算符 名称名称运算符运算符运算对象个数运算对象个数含含 义义左移左移双目双目整体向右移若干位整体向右移若干位 “左移左移”和和“右移右移”两个移位运算符都是双目的。由移位运算符和运算对象构成两个移位运算符都是双目的。由移位运算符和运算对象构成
49、的表达式,称为的表达式,称为“移位表达式移位表达式”。 由左移位运算符构成的移位表达式一般为:由左移位运算符构成的移位表达式一般为: 表达式表达式 n 其中其中“表达式表达式”是移位的对象,是移位的对象,“n”指明移位的次数。功能是把左边表达指明移位的次数。功能是把左边表达式里以二进制形式给出的值向右移动式里以二进制形式给出的值向右移动n位,右边移出的位丢弃。位,右边移出的位丢弃。若运算对象是无符号数,则空出的位用若运算对象是无符号数,则空出的位用0填补;填补;若运算对象是带符号数,则空出的位用符号位填补。若运算对象是带符号数,则空出的位用符号位填补。 (a)无符号数右移)无符号数右移 (b)
50、带符号数右移)带符号数右移右移运算示意图右移运算示意图(3)复合位运算赋值)复合位运算赋值。位运算符与赋值运算符结合可以组成复合赋值运算位运算符与赋值运算符结合可以组成复合赋值运算符,如下所示。符,如下所示。 &= 如如a &= b,相当于,相当于a=a & b。 |= 如如a |= b,相当于,相当于a=a | b。 = 如如a = n,相当于,相当于a=a n。 = 如如a = n,相当于,相当于a=a n。 = 如如a = b,相当于,相当于a=a b。 运算规则和前面讲的复合赋值运算符的运算规则相似。运算规则和前面讲的复合赋值运算符的运算规则相似。0丢弃丢弃项目
51、项目2 2 顺序结构程序设计顺序结构程序设计5.sizeof5.sizeof运算符运算符sizeofsizeof运算符用来获得一个数据或数据类型在内存中所占空间的字节数。运算符用来获得一个数据或数据类型在内存中所占空间的字节数。sizeofsizeof运算符的优先级比较高、结合性是运算符的优先级比较高、结合性是“自右至左自右至左”。格式:格式:sizeofsizeof(类型标识符)(类型标识符)或或sizeofsizeof(表达式)(表达式)例如:例如:sizeof(int)sizeof(int) /获得整型数据所占内存空间的字节数获得整型数据所占内存空间的字节数sizeof(double)s
52、izeof(double) /获得双精度数据所占字节数获得双精度数据所占字节数 如果表达式是单个的常量或变量,括弧也可以不要。如果表达式是单个的常量或变量,括弧也可以不要。同一种数据类型在不同的编译系统中所占空间不一定相同,同一种数据类型在不同的编译系统中所占空间不一定相同,例如,在基例如,在基于于1616位的编译系统中,位的编译系统中,intint型数据占用型数据占用2 2字节,但现在普遍使用的是基于字节,但现在普遍使用的是基于3232位位的编译系统,的编译系统,intint型数据要占用型数据要占用4 4字节。因此为了便于移植程序,最好用字节。因此为了便于移植程序,最好用sizeofsize
53、of运算符计算数据类型。运算符计算数据类型。项目项目2 2 顺序结构程序设计顺序结构程序设计任务任务2.2 2.2 C C语句语句 任务说明任务说明语言中的语句用来向计算机发出操作指令,指挥和控制计算机执行相语言中的语句用来向计算机发出操作指令,指挥和控制计算机执行相应的操作。由前面的例子可以看出,一个函数通常包含声明部分和执行部分。应的操作。由前面的例子可以看出,一个函数通常包含声明部分和执行部分。其中,执行部分就是由其中,执行部分就是由C语句构成的,声明部分不是语句构成的,声明部分不是C语句。在本任务中,语句。在本任务中,将学习将学习C语言中语句的应用。语言中语句的应用。任务实施任务实施1
54、.1.任务功能任务功能分析下列程序运行的结果。分析下列程序运行的结果。2.2.解题思路解题思路空语句不进行任何操作。常用大括号空语句不进行任何操作。常用大括号“”把多条语句括起来构成复合把多条语句括起来构成复合语句。语句。3.3.源程序源程序Ex2-2.c#include /*包含头文件包含头文件*/void main( ) int x=10; /*定义变量定义变量x,并赋初值,并赋初值*/ 项目项目2 2 顺序结构程序设计顺序结构程序设计 ; /*空语句空语句*/ printf(x is %dt,x); /*输出输出*/ /*复合语句开始复合语句开始*/ int y=50; /*定义变量定义
55、变量y,并赋初值,并赋初值*/ printf(y is %d t,y); /*输出输出*/ ; /*空语句空语句*/ /*复合语句结束复合语句结束*/ printf(x is %d n,x);4. . 运行、调试运行、调试在在VC+6.0开发环境下,编辑、编译和调试源程序开发环境下,编辑、编译和调试源程序Ex2-2.c。程序运行。程序运行的结果为:的结果为:x is 10 y is 50 x is 10任务拓展任务拓展试分析程序中,转义字符试分析程序中,转义字符n和和t的作用及二者的不同之处。的作用及二者的不同之处。项目项目2 2 顺序结构程序设计顺序结构程序设计相关知识相关知识一条一条C语句
56、经过编译后生成若干条机器指令。语句经过编译后生成若干条机器指令。C语句按语法形式则可以语句按语法形式则可以分为表达式语句、函数调用语句、复合语句、流程控制语句、空语句等五大分为表达式语句、函数调用语句、复合语句、流程控制语句、空语句等五大类。类。 1. 表达式语句表达式语句表达式语句由表达式加上分号表达式语句由表达式加上分号“;”组成,其功能是计算表达式的值。组成,其功能是计算表达式的值。其一般形式为:其一般形式为: 表达式表达式;例如:例如: a=3; /*是一个赋值语句是一个赋值语句*/赋值表达式与赋值语句有什么区别呢?其实只要在赋值表达式后面加上赋值表达式与赋值语句有什么区别呢?其实只要
57、在赋值表达式后面加上分号,赋值表达式就变成赋值语句了。分号,赋值表达式就变成赋值语句了。“a=3”为表达式,而为表达式,而“a=3;”为语句。为语句。任何表达式都可以加上分号而成为语句,分号是语句不可缺少的一部分,任何表达式都可以加上分号而成为语句,分号是语句不可缺少的一部分,也是区别表达式与语句的重要标志。也是区别表达式与语句的重要标志。 i+; /*是一条语句,作用是使是一条语句,作用是使i值加值加1*/ y=x+1; /*本语句为赋值语句,将本语句为赋值语句,将y与与z的和赋给的和赋给x*/ 项目项目2 2 顺序结构程序设计顺序结构程序设计2. 函数调用语句函数调用语句函数调用语句由一个
58、函数调用加上一个分号构成。其功能是调用函数体函数调用语句由一个函数调用加上一个分号构成。其功能是调用函数体并把实际参数赋予函数定义中的形式参数,然后执行被调函数体中的语句,并把实际参数赋予函数定义中的形式参数,然后执行被调函数体中的语句,求解函数的值。求解函数的值。其一般形式为:其一般形式为:函数名函数名(实际参数表实际参数表);例如:例如:printf(Hellow World!n); /*调用库函数,输出所提示的字符串调用库函数,输出所提示的字符串*/3. 流程控制语句流程控制语句流程控制语句用于控制流程控制语句用于控制C语言程序的操作流程。语言有三大类语言程序的操作流程。语言有三大类9种
59、控制种控制语句,它们的形式如下。语句,它们的形式如下。(1)选择判断语句:)选择判断语句:if语句、语句、switch语句。语句。(2)循环执行语句:)循环执行语句:do-while语句、语句、while语句、语句、for语句。语句。(3)转向语句:)转向语句:break语句、语句、goto语句、语句、continue语句、语句、return语句。语句。项目项目2 2 顺序结构程序设计顺序结构程序设计4. 复合语句复合语句可以用大括号可以用大括号“”把多条语句括起来组成复合语句。把多条语句括起来组成复合语句。例如:例如:z=x+y;t=z/100;一个复合语句在语法上作为一条语句处理,在一对花
60、括号中的语句数量一个复合语句在语法上作为一条语句处理,在一对花括号中的语句数量不限。复合语句中的大括号必须配对使用,且右大括号的后面不加分号。在不限。复合语句中的大括号必须配对使用,且右大括号的后面不加分号。在复合语句中,不仅可以有执行语句,还可以有变量声明。复合语句中,不仅可以有执行语句,还可以有变量声明。 例如:例如: float r, area; r=2.5; area=3.1415926*r*r; printf(area=%f , are); 项目项目2 2 顺序结构程序设计顺序结构程序设计5. 空语句空语句只有分号只有分号“;”组成的语句称为空语句。组成的语句称为空语句。空语句的格式如下:空语句的格式如下:; /*空语句空语句*/此语句只有一个分号,它不进行任何操作。大多数情况下用作转此语
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 虚拟现实的职业规划思考计划
- 制定高效团队协作的行动计划
- 如何在内容营销中突出品牌价值计划
- 提升仓库响应能力的策略计划
- 急诊团队建设与凝聚力提升计划
- 数据结构与算法第6章图结构pot
- 高中化学知识点:高中化学九大易错知识点
- 校车管理制度(26篇)
- 6.雷锋之歌培训
- 教师资格考试综合模拟测试题核心考点含答案2
- 部编版小学语文四年级上册第六单元教材分析解读课件
- 2023年江苏交通控股有限公司校园招聘笔试模拟试题及答案解析
- 山东科学技术出版社五年级上册《综合实践活动》教案
- 外贸开发信PPT课件讲义
- 干部人事档案专项审核认定表填写模板
- 复变函数与积分变换全套精美课件
- 人性化设计产品案例课件
- 中等职业学校人才培养工作状态数据采集与管理平台数据结构
- 特种设备安全管理人员、作业人员管理和培训制度
- 新苏教版2022-2023五年级科学上册第19课《我们的大脑》课件
- 湖北省黄石市各县区乡镇行政村村庄村名居民村民委员会明细
评论
0/150
提交评论