计算机C语言第二章 数据类型、运算符和表达式_第1页
计算机C语言第二章 数据类型、运算符和表达式_第2页
计算机C语言第二章 数据类型、运算符和表达式_第3页
计算机C语言第二章 数据类型、运算符和表达式_第4页
计算机C语言第二章 数据类型、运算符和表达式_第5页
已阅读5页,还剩78页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第二章9/20/20221第一节 程序设计的基本知识第二节 数据与数据类型第三节 C语言的基本数据类型及其表示第四节 算术运算与赋值运算第五节 逗号运算第六节 关系运算和逻辑表达式第二章 数据类型、运算符与表达式2程序设计步骤分析问题,建立数学模型确定数据结构确定算法,描述算法编制程序,调试程序运行结果2.1 程序设计的基本知识3数据类型构造类型指针类型空类型(无值类型) void数组类型结构体类型 struct共用体类型 union实型(浮点型)基本类型整型 int字符型 char单精度实型 float双精度实型 doubleC语言的数据类型有 2.2 数据与数据类型4关于类型的含义1.不同

2、类型数据在内存中占不同的存储空间,且采取不同的存储形式。2.不同类型数据对应不同的取值范围。3.数据类型确定了允许对其进行的操作。 2.2 数据与数据类型(完)5 2.3 C语言的基本数据类型 按照数据在程序中的取值:值保持不变-常量 值随程序运行变化-变量x=2 * y基本类型整型 int字符型 char实型(浮点型)6一、常量1. 在程序运行中,其值保持不变。 2. 表示方法:整型 100,125,-100实型 3.14 , 0.125字符型 a, b字符串常量 “string”3.符号常量: #define PI 3.14159用指定的标识符表示某个常量2.3.1 常量与变量 2.3 C

3、语言的基本数据类型(续) 7#include #define PRICE 30void main ( ) int num, total; num = 10; total = num * PRICE; printf (total = %d, total); 运行结果:total = 300 行尾不能有分号 define前面一定要有# 符号常量名最好使用大写 符号常量名最好有意义 8memorya二、变量3. 变量通过变量名标识1. 在程序运行中,值发生变化2. 必须先定义,再使用int a,b;类型 变量名表变量2563变量名和内存中的存储单元相对应。编写程序时通过变量名来存、取存储单元。 2.

4、3 C语言的基本数据类型(续) 9(1)字母、数字和下划线组成,以字母或下划线开头(2)不能用系统中的关键字作为变量名int a,b A123,_b;int a;.A=5;4. 有关变量名的规定(3)变量名中的字母是区分大小写的。sum、stu_name、_age、Lts_1_2、a2NAME name 表示两个不同的标识符。不提倡大小写混合使用 2.3 C语言的基本数据类型(续) 10语言程序设计教程 第三章 基本数据类型C例:判断下列标识符号合法性sum Sum M.D.John day Date 3days student_name #33 lotus_1_2_3 char ab _ab

5、ove $123 .字符非法 数字3不可作首字符 #字符非法 char是关键字 字符非法 $不可作首字符11一、整型常量表示形式十进制 八进制十六进制1234加前导0 01234,0125加前导0 x 0 x123,0 xffff例 100、-8、0;010、024;0 x38、0 x1F2.3.2 整型数据 2.3 C语言的基本数据类型(续) 包括整型常量和整型变量12思考题:下列整型常量哪些是非法的? 012,oX7A,00,078,0 x5Ac,-0 xFFFF,0034,7B。首字符不能是字母o 八进制数中不能有数字8 十进制数中不能有字母B 13二、整型变量 掌握要点 1 有几种定义

6、形式 2 每种形式占存储空间的大小 3 取值范围 4 输入输出格式 2.3 C语言的基本数据类型(续) 141. 定义形式共六种基本整型短整型长整型 int short intlong int2. 占存储空间224字节 2.3 C语言的基本数据类型(续) 15int型数的表示范围:存储长度16位二进制(2Byte) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1215-1=327670 0 0 0 0 0 0 0 0 0 0 0 0 0 1 10 1 1 1 1 1 1 1 1 1 1 1 1 1 1 11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0-215=-

7、32768例补码表示int型表示数的范围:- 32768 32767 2.3 C语言的基本数据类型(续) 161. 定义形式共六种基本整型短整型长整型无符号整型无符号短整型无符号长整型 int short intlong intunsigned int2. 占存储空间2242字节unsigned short intunsigned long int24 2.3 C语言的基本数据类型(续) 173.整型变量的取值范围 类型 类型定义符 长度 数的范围基本型 int 2字节 -3276832767短整型 short 2字节 -215215-1 长整型 long 4字节 -231231-1无符号整型

8、 unsigned 2字节 065535(216-1)无符号短整型 unsigned short 2字节 065535无符号长整型 unsigned long 4字节 0(232-1) 2.3 C语言的基本数据类型(续) 184.输入输出格式十进制:d八进制:o十六进制:x例2.1 输入一个十进制数,然后分别以十进制、八进制和十六进制输出。 main() int num;printf(“num=“);scanf(“%d”,&num);printf(“%d=%dn”,num,num);printf(“%d=O%on”,num,num);printf(“%d=OX%xn”,num,num);19m

9、ain( ) int a = -4; unsigned long u; u = a; /*u的值将是0 xfffc*/20例:整型变量的定义与使用整型数据的溢出 main() int a,b;a=32767; b=a+1;printf(“%d,%d”,a,b);例2.2 main() int a,b,c,d; unsigned u; a=12;b=-24;u=10; c=a+u;d=b+u;printf(“a+u=%d,b+u=%dn”,c,d);32767,-3276821包括实型常量和实型变量一、实型常量表示形式小数指数0.1233e-3实型常量只能用十进制形式表示,不能用八进制和十六进制

10、2.3.3 实型数据用指数表示实型常量的规则 2.3 C语言的基本数据类型(续) 注意:字母e或E之前必须有数字,且e或E指数必须为整数非法的实数表示: 345(无小数点) ,E7(阶码标志E之前无数字) , -5(无阶码标志) ,50.-E3(负号位置不对) 221. 定义形式共三种单精度双精度长双精度 floatdoublelong double2. 占存储空间4816字节二、实型变量 2.3 C语言的基本数据类型(续) 23实型数据在计算机中以指数形式存储,单精度实型变量用一个字节存放指数部分, 其余三个字节存数值部分 。 7位二进制 23位二进制单精度实型尾数指数 2.3 C语言的基本

11、数据类型(续) 243. 变量的取值范围4.输入输出形式 %f ,%e 类型 长度 数的范围 有效位单精度 float 4 10-38 1038 7-8位双精度 double 8 10-308 10308 15-16位长双精度 long double 16 10-4931-104932 18-19位 2.3 C语言的基本数据类型(续) 有效位表示数据在前几位之内是有效的,其后的数字则是计算机的随机数25#include void main ( ) float a; /定义float型变量a double b, c; /定义double型变量b和c a = 123.456789; /对变量a赋值

12、为123.456789 b = a; /将变量a赋给变量b c = 123.456789; /对变量c赋值为123.456789 printf(a = %f b = %lf c = %lfn, a, b, c);abc123.456787123.456787123.456789a = 123.456787 b = 123.456787 c = 123.456789 float型变量最多只能精确表示8个数字,因此显示a的值时,只能有效显示前面8个数字即123.45678,最后追加一位数字7是随机的 26实型数据的舍入误差例2.3main()float a,b;a=123456.789e5 b=a

13、+20;printf(“a=%f”,a);printf(“b=%f”,b); 2.3 C语言的基本数据类型(续) 程序运行结果:a=12345678848.000000b=12345678848.000000要避免将一个很大的数和一个很小的数直接相加或相减27编写一个程序,提示用户输入圆的半径,求圆的周长和面积。作业:习题三.128 包括字符型常量和字符型变量一、字符型常量1. 用单引号包含的一个字符是字符型常量2 .只能包含一个字符a, A, 1abc“a”2.3.4 字符型数据 2.3 C语言的基本数据类型(续) 293 有些以“”开头的特殊字符称为转义字符n 换行t 水平制表,跳到下一个

14、tab位置r 回车,从当前位置移到本行开头b 退格,从当前位置移到前一列 反斜杠字符“” 单撇号字符“” 双撇号字符“”ddd 1到3位八进制数所代表的字符xhh 1到2位16进制数所代表的字符 printf(“%d t %d n”,a,b); printf(“%d n %d n”,a,b);若:a为1,b为01 010 2.3 C语言的基本数据类型(续) 一个“制表区”占8列30例子2.4main()printf (“ ab ct derftgn”);printf(“htibbj k”)31例: 转义字符举例 #include void main ( ) printf (101 x42 Cn

15、); printf (I say:How are you?n); printf (C Programn); printf (Visual C);运行结果:(屏幕显示)A B CI say:”How are you?”C ProgramVisual C321. 定义形式2. 占存储空间一个字节二、字符型变量char一个字符变量只能包含一个字符3. 输入输出形式 %ca ASCII值为 97 内存中存储形式0 1 1 0 0 0 0 14. 字符型数据在内存中以相应的ASCII值存储 2.3 C语言的基本数据类型(续) 33在ASCII范围以内,整型数据main( ) char c ; int i

16、 c = c; i=97printf ( “%c %d”, c,c );printf ( “%c,%d”, i,i );C 99a,97题目中有多个c,哪些是等价的?运行结果: 2.3 C语言的基本数据类型(续) 34三、字符串常量1 双引号内的一串字符 “china”2 n个字符组成的字符串常量, 在 内存中占空间为n+1 个字节。china0字符串结束标记C 中没有专用的字符串变量“This is C string” 串长 16 “a” 串长 1 “ ” (空格)串长 1 “” (不含空格)串长 0 2.3 C语言的基本数据类型(续) 35各类数据间的混合运算混合运算:10a1.5-876

17、5.1234*b进行运算时,不同类型的数据要先转换成同一类型。自动转换规则:(1)低类型向高类型转换例:i为int变量,f为float变量d为double变量,e为long型 10ai*fd/e(2)赋值符号“”右边的类型转换成左边的类型doublefloatlongunsignedintchar,short36main() float f1,f2=12.34;int num1=123;char c1=a;f1=f2-c1;num1=num1+f1printf(“f1=%f,num1=%d”,f1,num1);强制转换:(数据类型名)(表达式) 如: (int) (10a+i*fd/e) 如:

18、 float x=12.3; y=(int)x;P25例3.10 37变量赋初值C语言允许在定义变量的同时使变量初始化。如:int a=3; float f=3.56; char c=a;也可以使被定义的变量的一部分赋初值。如:int a,b,c=5;也可以对几个变量赋予同一个初值。如:int a=b=c=3;38 2.4 算术运算与赋值运算一、运算符运算符 运算分量X= 5 + b * c 对数据进行运算的符号被加工的数据+表达式2.4.1 认识C中的运算符和表达式算术运算符赋值运算符关系运算符逻辑运算符逗号运算符条件运算符. 运算符392.表达式的运算结果称为表达式的值 1. 运算符和运算

19、分量构成表达式二. 表达式算术表达式赋值表达式关系表达式逻辑表达式逗号表达式条件表达式.例: 3 + 5 * 8、(x + y) / 2 - 1等 2.4 算术运算与赋值运算(续)40三. 学习运算符应掌握的要点:* 运算符的种类与功能* 运算符与运算分量的关系个数类型A + B (ab) ? a: b目关系不同类型的变量,所允许的操作不同单目运算符双目运算符三目运算符 2.4 算术运算与赋值运算(续)41*优先级: 运算符的执行顺序 *结合性: 优先级相同时的结合方向*运算结果的类型X=5+8a100X=a+b*ca+b-c572a=b=5结果?单目运算符的优先级高于双目运算符单目运算符从右

20、向左结合双目运算符从左向右结合 2.4 算术运算与赋值运算(续)422.4.2 算术运算符和算术表达式1. 共有5个:+,-,*,/,%2 “-”作为 负号时为单目单目: -双目:*, /, %双目:+,-4. 优先级: 5. 结合性: 从左向右 3. %运算只适用于整型数取模(求余数)a=10%4a的值为2 2.4 算术运算与赋值运算(续)432.4.3 自增、自减运算符1. 变量自身加(减)1 k =k+1k + 先使用变量k的值,再加 1+ k 先加1,再使用变量 k的值 k = k-1k - - 先使用变量k的值,再减 1- - k 先减1,再使用变量k 的值 k=3; printf(

21、 “%d”, k +); i=3; printf( “%d”, + i); 输出 3 后, k 的值为 4输出4 2.4 算术运算与赋值运算(续)442. 只能用于变量,不能用于表达式和常量3. 优先级:高于双目算术运算符(i+k) + , - - 3i=3; k=i+ + i+ + i+;容易 产生歧义printf(“%d,%d”,i,i+) 2.4 算术运算与赋值运算(续)45例: main( ) int a , b , s ; a = 5 ; b = 5 ; s= a+b ; printf(“%d,%d,%dn”,a,b,s); s= a+ +b; printf(“%d,%d,%dn”,

22、a,b,s); s= +a+b; printf(“%d,%d,%dn”,a,b,s); s= - -a +b; printf(“%d,%d,%dn”,a,b,s); s= a- - +b; printf(“%d,%d,%dn”,a,b,s); s= a + b; printf(“%d,%d,%dn”,a,b,s); 2.4 算术运算与赋值运算(续)46s = a + b ; s = a+ +b ; s = +a +b ; s = - -a +b ; s = a- - +b ; s = a + b ; a=5, b=55+5=105+5=107+5=126+5=116+5=115+5=10 a

23、b s5 5 106 5 107 5 126 5 115 5 115 5 10题目分析 2.4 算术运算与赋值运算(续)47语言程序设计教程 第三章 基本数据类型C例: int p, i = 2, j = 3; p = -i+; p = ? i = ? p = i+j; p = ? i = ? j = ? p = i+-j; p = ? i = ? j = ? p = i+-j; p = ? i = ? j = ? p = i+i+; p = ? i = ? -2353342243244 2.4 算术运算与赋值运算(续)负号运算符和“”运算符同优先级,结合方向为“自右向左)482.4.4 赋值

24、运算符和赋值表达式1. 将一个常量或一个表达式的值赋给一个变量称为赋值x = 5 y = x + 10 2. 可以将一个实型赋给一个整型,或将一个整型赋给一个实型int x; x=5.3; x的值为 5float y=5; y的值为 5.0000003. 赋值运算的优先级比算术运算低4. 赋值运算的结合性从右向左X = y = 5 2.4 算术运算与赋值运算(续)492.4.5 复合赋值运算符和复合赋值表达式赋值运算符两侧出现相同的变量x=x+nx=x-nx=x*nx=x/nx=x%nx + = nx - = nx * = nx / = nx% = n算术运算与赋值运算相结合x=x+nn 为常

25、数x+=n 2.4 算术运算与赋值运算(续)50赋值运算符的结合性:自右向左例: x*=x+=x; 2.4 算术运算与赋值运算(续)51例main( ) int a, b, c, d, e; a=2; b=5 ;c= 6;d=10; a + =b; b- =c; c * =d; d / =a; a%=c; printf(“%d,%d,%d,%dn”, a , b , c , d); 7,-1,60,1 2.4 算术运算与赋值运算(续)52赋值表达式赋值操作不仅可以出现在赋值语句中,也可以以表达式形式出现在其它语句中,如:a=b=c=5a=5+(c=6)a=(b=4)+(c=6)a=(b=10)

26、/(c=2)printf(“%d”,a=b)?a+=a=a*a如果a的初值为12 2.4 算术运算与赋值运算(续)53一、逗号运算符,(表达式 1,表达式 2,表达式 3,表达式 n)用于连接几个表达式 二、求解过程顺序求解几个表达式三、优先级逗号运算符的优先级最低四、结合性从左向右五、逗号表达式逗号表达式的值为最后一个表达式的值(表达式n 的值)X = ( ( a=4*5 , a*2 ) , a+6 )a为? 20 x为?262.5 逗号运算逗号运算符542.6 关系运算与逻辑运算关系运算和逻辑运算经常作为条件语句和循环语句中的条件,其结果为一逻辑值 A和 B中至少有一个大于 C如何用C语言

27、描述 A和 B全部大于 CA为不大于100 的 偶 数关系运算是一种比较运算,将两个值(表达式)进行比较,判断比较的结果是否符合给定的条件关系运算逻辑运算55一、关系运算符大于 , 大于等于 =,小于 ,不等 != 小于等于bc例:a+bc+d a=cb562. 关系表达式的结果是一个逻辑值,根据关系是否满足,分别取 1,或 0二、关系表达式1 . 关系运算符与运算分量构成关系表达式int i=1,j=7,a; a=i+(j%4!=0)a的值?结果:a=23. 使用关系表达式应注意!1) 数学上,判断x是否在区间 a,b 时,习惯上写成a=x=b,但在C 中,必须写成 a=x & x0 的值为

28、逻辑 12.6 关系运算与逻辑运算(续)573) 在数学中,5 2 7 8 无效,但C中是允许 的4)关系表达式的结果可以当成整型数int a=3,b=5,c=7,d; d = a c逻辑117逻辑0d的值为02.6 关系运算与逻辑运算(续)582.6.2 逻辑运算符与逻辑表达式一 、逻辑运算符1. 有三个& & (与): 两边为真,结果为真| (或):两边有一个为真,结果为真! (非):真为假,假为真2.6 关系运算与逻辑运算(续)例:a&b 若a,b为真,则a&b 为真 a|b 若a,b之一为真,则a|b 为真 !a 若a为真,则!a为假59逻辑运算真值表ab!a!ba&ba|b真假真假假

29、假真真真假假假假假真真假假真真真假真真C语言中,运算量: 0表示“假”, 非0表示“真”, 运算结果: 0表示“假”, 1表示“真”,602.6.2 逻辑运算符与逻辑表达式2. 优先级:!(非)& (与)|(或)逻辑运算与其他运算相比: “!”的优先级最高,“&”和“|”低于关系运算符。3. 结合性: &和|是从左向右,!是从右向左2.6 关系运算与逻辑运算(续)!a&b|xy&c例:(ab)&(xy) 可写成ab&xy (a=b)|(x=y) 可写成a=b|x=y612.6 关系运算与逻辑运算(续)例:a=5,b=7,c=4,d=3x=(a+b)(c+d)&(da)先做算术运算,再做关系判断

30、,将最后结果赋给x5 2 7 8从左向右运算 (52)逻辑值为1 (17)逻辑值为0 (08)逻辑值为0整个表达式的值为 0622.6 关系运算与逻辑运算(续)二 、逻辑表达式表达式的值为一个逻辑量“真”或“假”,分别用1和0表示3. 在判断一个量是否为“真”时,以0代表假,以“非0”代表真 例:若a=4,则!a的值为0 若a=4,b=5,则a&b的值为1 ?!a|b任何非零实数均可作为逻辑上的11. 用逻辑运算符将关系运算表达式或逻辑量连接起来构成逻辑表达式值为1634 . 在逻辑表达式中,并不是所有的逻辑运算都必须执行,如果&的一边已经为0,结果一定为 0,如果 | 的一边已经为 1 ,结

31、果一定为 1(1) a&b&c a为非0时,再判断 b, a,b均为非0, 再判断c(2 ) a|b|c,若a为非0,不必判断 b和 c,结果一定为 1 已知 :a=1,b=2,c=3,d=4,m=1,n=1 执行(m=ab)&(n=cd) 之后 : m=? n=?由于 ab的值为 0,m=0不再判断(n=cd)的值,因此,n 维持原有的值m=0n=12.6 关系运算与逻辑运算(续)64求逻辑表达式的值1 ) 14&47 2 ) 143 ) !(2=5) 4 ) ! ( 1 3) | (25)5 ) !(4=6)&(3=7)2.6 关系运算与逻辑运算(续)1011065用C语言描述:1)a小于

32、b或小于c2 )a和b都大于c3)a和b中有一个大于c4)a是非正整数5)a是奇数6)a不能被b整除ab|ac&bcac|bc662.6.3 条件运算符与条件表达式三 、条件运算符C语言中唯一的一个三目运算符X=(表达式1)?(表达式2):(表达式3)将条件语句化成赋值语句1. 格式判断表达式1的值,若为非0,将表达式2的值赋给x,否则,将表达式3的值赋给x 2 功能:x=(ab)?a:b 当 a=9,b=5时,x=9条件运算要求有三个运算分量,并且不论条件是否成立,都必须是为同一个变量赋值2.6 关系运算与逻辑运算(续)673 条件运算符的优先级:高于赋值,低于其他4 结合性:从右向左z=(

33、ab)?a:(ad)?c:d5 数据类型可以不同:xy?a:b执行:int x=10,y=9; int a,b,c;a=(- -x=y+)?-x:+y;b=x+; c=y;后a,b,c? a, b, cA) 9, 9, 9B) 8, 8, 10C) 8,10, 9D) 1,11,102.6 关系运算与逻辑运算(续)68若w,x,y,z,m均为int型变量,则执行下面语句后的m值为:w=1;x=2;y=3;z=4;m=(wx)? w: x;m=(my)? m : y;m=(mz)? m:z;A) 1 B) 2 C) 3 D) 4若w=1,x=2,y=3,z=4,则表达式wx?w:yz?y:z的值

34、是:A) 4 B)3 C)2 D)1练习2.6 关系运算与逻辑运算(续)69练习一、求下面算术表达式的值(1)x+a%3*(int)(x+y)%2/4设x2.5,a7,y4.7(2)(float)(a+b)/2+(int)x%(int)y设a2,b3,x3.5,y2.5答案: (1)2.5 (2)3.570二、写出程序运行的结果main( )int i,j,m,n;i=8;j=10;m=+i;n=j+;printf(“%d,%d,%d,%d”,i,j,m,n);答案:9,11,9,1071逗号运算符例:/*ch2_6.c*/#include main() int x,y=7; float z=

35、4; x=(y=y+6,y/z); printf(x=%dn,x);运行结果:x=372三、写出下面表达式运算后a的值,设原来a12。设a和n都定义为整型变量。(1)a+=a(2)a-=2(3)a*=2+3(4)a/=a+a(5)a%=(n%=2),n的值是5(6)a+=a-=a*=aa=a-224a=a+aa=a*(2+3)a=a/(a+a)n=n%2 1a=a%1 a=a*a 144a=a-144 0a=a+0 0106000073四、写出下面各逻辑表达式的值。例 a=4;b=5; (1) !a (2) a&b (3) a|b (4) !a|b (5) 4&0|2 (6) 53&2|83)

36、&2|(8(4-(!0) 值为174五、写出以下程序运行的结果main()char c1=a,c2=b,c3=c,c4=101,c5=116; printf(“a%c b%ctc%ctabcn”,c1,c2,c3); printf(“tb%c %c”,c4,c5);程序运行的结果是:aa bb cc abc A N75六、写出下列程序的结果main( )char c1=C,c2=h,c3=i,c4=n,c5=a;c1+=4;c2+=4;c3+=4;c4+=4;c5+=4;printf(“密码是%c%c%c%c%cn”,c1,c2,c3,c4,c5);密码是Glmre76七:编写程序1、用scanf输入园半径r,圆柱高h,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。输出时要有文字说明。2、输入一个华氏温度,要求输出摄氏温度。公式为:C=5(F-32)/9,输出时要有文字说明。77七、编程答案1、main() float pi,h,r,l,s,sq,vq,vz; pi=3.1415926; printf(“请输入圆半径r,圆柱高h:n”); scanf(“%f,%f

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论