C大学基础教程第2章课件.ppt

上传人(卖家):三亚风情 文档编号:2977523 上传时间:2022-06-18 格式:PPT 页数:90 大小:720KB
下载 相关 举报
C大学基础教程第2章课件.ppt_第1页
第1页 / 共90页
C大学基础教程第2章课件.ppt_第2页
第2页 / 共90页
C大学基础教程第2章课件.ppt_第3页
第3页 / 共90页
C大学基础教程第2章课件.ppt_第4页
第4页 / 共90页
C大学基础教程第2章课件.ppt_第5页
第5页 / 共90页
点击查看更多>>
资源描述

1、C+C+大学基础教程大学基础教程第第2 2章章 基本数据类型与表达式基本数据类型与表达式 北京邮电大学信通院北京邮电大学信通院 网络搜索中心网络搜索中心2022-6-1北京邮电大学电信工程学院计算机技术中心-2-问题1 1、一个程序一般需要有、一个程序一般需要有3 3个部分个部分n输入输入w从键盘、文件读取数据,保存在内存中从键盘、文件读取数据,保存在内存中n处理处理w将内存中的数据进行计算或逻辑分析将内存中的数据进行计算或逻辑分析n输出输出w将结果显示在屏幕上或输出到文件中将结果显示在屏幕上或输出到文件中cincout2022-6-1北京邮电大学电信工程学院计算机技术中心-3-举例1 1、从

2、键盘任意输入两个整数,并求和。、从键盘任意输入两个整数,并求和。2 2、从键盘任意输入两个实数,并求和。、从键盘任意输入两个实数,并求和。程序中使用的数据保存在内存中, 1、分配多大的空间存储数据? 2、如何标识数据在内存的地址? 3、如何进行复杂的运算?数据类型变量和常量变量、常量和运算符组成的表达式第第2 2章章 基本数据类型与表达式基本数据类型与表达式2.1 词法记号和标识符2.2 基本数据类型2.3 变量和常量2.4 运算符和表达式2.5 基本输入输出2.1 2.1 词法记号和标识符词法记号和标识符2022-6-1北京邮电大学电信工程学院计算机技术中心-7-2.1 2.1 词法记号和标

3、识符词法记号和标识符1、C+字符集英文字母:AZ,az数字字符:09特殊字符: + - * / % = ! # & | _ “ ; . , ( ) 空格2022-6-1北京邮电大学电信工程学院计算机技术中心-8-2.1 2.1 词法记号和标识符词法记号和标识符单词n关键字:系统预定义的单词n标示符:用户自定义的单词注意: C+的表示符是大小写敏感的,即abcABC。2022-6-1北京邮电大学电信工程学院计算机技术中心-9-2.1 2.1 词法记号和标识符词法记号和标识符4 4、分隔符、分隔符 分隔符用于分隔程序中的正文,在C+中使用下列字符作为分隔符: ( ) ,:;5 5、空白、空白 在C

4、+语句中经常出现空白(制表符、空格、空行)等,通常都忽略不计。2.2 2.2 基本数据类型基本数据类型2022-6-1北京邮电大学电信工程学院计算机技术中心-11-2.22.2、基本数据类型、基本数据类型基本数据类型基本数据类型 整型: int 字符型:char 、wchar_t 实型: float、double 逻辑型: bool自定义数据类型自定义数据类型 2022-6-1北京邮电大学电信工程学院计算机技术中心-12-2.22.2、基本数据类型、基本数据类型修饰符 进一步准确描述数据的大小和类型 1、长型 long 2、短型 short 3、有符号 signed 4、无符号 unsigne

5、d2022-6-1北京邮电大学电信工程学院计算机技术中心-13-2.22.2、基本数据类型、基本数据类型问题问题n-128,127 范围的整数? char n-32768,32767 范围内的整数? shortn-231,231-1 范围内的整数? int longn0,232-1 范围内的整数? unsigned int2022-6-1北京邮电大学电信工程学院计算机技术中心-14-2.22.2、基本数据类型、基本数据类型注意 整型int的长度等于机器的字长: 16位机:int=2字节; 32位机:int=4字节。 但是short和long表示的数据长度是固定的,任何支持标准C+的编译器都是如

6、此,因而如果需要编写可移植性好的程序,应将整型声明为short或long。2022-6-1北京邮电大学电信工程学院计算机技术中心-15-2.22.2、基本数据类型、基本数据类型例题 编写一个程序,输出基本数据类型char, int, float, double,bool的长度。提示: 使用sizeof(数据类型) 能够获取不同数据类型的长度。/输出基本数据类型的长度#include using namespace std;void main()cout“char :”sizeof(char)“字节n;coutint :sizeof(int)字节n;coutfloat :sizeof(float

7、)字节n;coutdouble:sizeof(double)字节n;coutbool :sizeof(bool)字节n;2.3 2.3 变量和常量变量和常量2022-6-1北京邮电大学电信工程学院计算机技术中心-18-2.3 2.3 变量和常量变量和常量什么是变量? 在C+中,变量是存储信息的地方。变量的实质是内存中的一个地址空间,在这个地址空间中可以进行数据的存储和读取。变量和常量的区别 变量中的数据可以改变,而常量不行。2022-6-1北京邮电大学电信工程学院计算机技术中心-19-2.3 2.3 变量变量变量定义: int a, b, c; int a=0; float f1, f2; c

8、har ch;常量定义: const int a =10;例例2.22.2:赋值运算符的使用:赋值运算符的使用 #include using namespace std; void main() int x,y; cinxy; /输入3、5 coutx+yxy; /输入6、8 coutx+yendl; 运行结果: 8 142022-6-1北京邮电大学电信工程学院计算机技术中心-21-2.3 2.3 关键字关键字typedef 为已有的数据类型定义一个同义词,或者叫做别名。 例如: typedef unsigned int UINT; 关键字 数据类型 别名赋值注意: 使用typedef定义同义

9、词时并不分配内存空间。2.32.3关键字关键字define 在C语言中使用预编译指令#define定义常量。 例如: #define PI 3.1415927 关键字 常量名 值 该语句属于预编译指令,不属于C+语句,因而行尾不需要使用分号。 功能同const double PI = 3.14159272022-6-1北京邮电大学电信工程学院计算机技术中心-23-2.3 2.3 常量常量整型常数 十进制数:100 8进制数 : 0144 16进制数:0 x64实型常数 0.123、23.12 123e5 或 123E5 (表示123*105) 2022-6-1北京邮电大学电信工程学院计算机技术

10、中心-24-2.3 2.3 常量常量字符常数 1、例如:a、 ?。 2、转义字符 例如:n、t、a字符串常量 由一对双引号括起来的字符序列, 例如:“how do you do?” “hello world!”a0 x07bell(响铃)n0 x0A换行r0 x0D回车t0 x09制表符v0 x0B垂直跳格b0 x08Backspace0 x5C0 x22双引号0 x27单引号 ddd 1-3位8进数 xhh 1-2位16进数例例2.32.3:打印特殊字符#include using namespace std;void main() cout“输出字母:” aaendl; cout“输出字母

11、:” nn;运行结果: 输出字母:a (蜂鸣器响一声) 输出字母:n (换行)2022-6-1北京邮电大学电信工程学院计算机技术中心-27-2.3 2.3 常量常量字符变量 char ch1=a,ch2=97, ch3 = 0 x61; 原因: 在内存中,字符数据以ASCII码存储,即以整数表示,所以,C+中字符数据和整数可以相互赋值。例例2.42.4:字符数据和整型数据的转换#include using namespace std;void main() char ch=a; char ch1 = 97; cout”输出内容:”chendl; cout”输出内容:”ch1endl;运行结果:

12、 输出内容:97 输出内容:a注意:变量在输出时,根据其本身的数据类型进行输出。例例2.42.4:分析下面的输出?#include using namespace std;void main() int n=a; int n1 = 97; cout”输出内容:”nendl; cout”输出内容:”n1 = = != =) 3、逻辑运算符(! & |) 4、位运算符( | & ) 5、特殊运算符: 条件运算符、逗号运算符2022-6-1北京邮电大学电信工程学院计算机技术中心-37-2.4 2.4 运算符和表达式运算符和表达式赋值运算符 1、赋值运算符就是“=” 例如:float f=3.15 2

13、、左值:可以合法的放在“=”左边的操作数 右值:可以合法的放在“=”右边的操作数 常量都是右值,所以不能够放在“=”的左边被赋值; 变量既是左值又是右值,可以放在任何位置。2022-6-1北京邮电大学电信工程学院计算机技术中心-38-2.4 2.4 运算符和表达式运算符和表达式算术运算符 C+提供的算术运算符包括“+,-,*,/,%,+,-” 1、二元运算符: +(加),-(减),*,/,% 2、一元运算符: +(正号),-(负号),+,-2022-6-1北京邮电大学电信工程学院计算机技术中心-39-2.4 2.4 运算符和表达式运算符和表达式算术运算符 注意: 1、“/” 根据操作数不同,运

14、算规律也不同: 整型数为整除运算:例如5/2=2; 浮点数为通常意义的除法:即5.0/2.0=2.5。 2、“%”取余数运算符,只能对整型数进行操作,不允许对浮点数进行操作。2022-6-1北京邮电大学电信工程学院计算机技术中心-40-2.4 2.4 运算符和表达式运算符和表达式算术运算符 C+中提供了两个特殊的运算符:+,-表示将操作数减1。 +、-运算符根据操作数的位置不同,又称为前置(+i)和后置(i+) 1、前置(+i): 先自身加1,然后再将加1的值作为(+i)表达式的值; 2、后置(i+): 将i作为(i+)表达式的值,然后自身再加1。 例例2.62.6:自增运算符的使用 #inc

15、lude using namespace std;void main()int i =1; cout”i=”iendl; c o u t ” i + + : ” i + + e n d l ; cout”i=”iendl; cout” +i:”+iendl; cout”i=”iendl; 112332022-6-1北京邮电大学电信工程学院计算机技术中心-42-2.4 2.4 运算符和表达式运算符和表达式算术运算符 在C+中可以将算术运算符和赋值运算符结合在一起进行运算,因此C+还提供5种复合的赋值运算符+=,-=,*=,/= 和%=。 例如: x+=y 相当于 x = x+y x-=y相当于

16、x = x-y x*=y相当于 x = x*y x/=y相当于 x = x/y x%=y相当于 x = x%y例如:#include using namespace stdvoid main()int x=2,y=3; x*=y+8; coutxendl;原因:x*=y+8 等价于 x=x*(y+8)/显示222022-6-1北京邮电大学电信工程学院计算机技术中心-44-2.4 2.4 运算符和表达式运算符和表达式算术运算符 这些运算符的优先级由高到低依次为: 1、+(正号),-(负号),+,- 2、*,/,% 3、+、- 4、=、+=、-=、*=、/=、%=2022-6-1北京邮电大学电信工

17、程学院计算机技术中心-45-2.4 2.4 运算符和表达式运算符和表达式注意 在进行算术运算时,很可能出现溢出,溢出是指在给一个变量赋值时超出了其数据类型表示的范围。溢出不会引起编译错误的,但运行结果会出现偏差。 例如: short int i=65536; coutiendl;输出结果:02022-6-1北京邮电大学电信工程学院计算机技术中心-46-习题void main() unsigned short int i=-1; couti=、=、=、=、 2、=、!= 由关系运算符将两个表达式连接起来,就是关系表达式;关系表达式的结果类型为bool,值只能为true或false,屏幕显示为1或

18、0。例如int a=1, b=2, c=3;couta=bendl; couta!=bendl; cout=bendl; coutabb=ca+5;coutdb & b+) cout”b的值没有被改变。”endl; coutbendl; 运行结果:22022-6-1北京邮电大学电信工程学院计算机技术中心-51-2.4 2.4 运算符和表达式运算符和表达式位运算符 一般高级语言:byte C语言: bit C+语言中提供了六个位运算符,可以对整数进行位操作,分别是按位与(&),按位或(|),按位异或(),按位取反(),左移位()。2022-6-1北京邮电大学电信工程学院计算机技术中心-52-2.

19、4 2.4 运算符和表达式运算符和表达式按位与(&) 按位与操作的作用是将两个操作数对应的每一位分别进行逻辑与操作。 例如:计算3 & 5 3:0 0 0 0 0 0 1 1 5:0 0 0 0 0 1 0 1 3 &5:0 0 0 0 0 0 0 1 例如: 将char a;的最低位置0: 取int a;的低字节:a=a & 0376;char c= a & 0377;2022-6-1北京邮电大学电信工程学院计算机技术中心-53-2.4 2.4 运算符和表达式运算符和表达式按位或(|) 按位或操作的作用是将两个操作数对应的每一位分别进行逻辑或操作。 例如:计算3 | 5 3:0 0 0 0

20、0 0 1 1 5:0 0 0 0 0 1 0 1 3 |5:0 0 0 0 0 1 1 1 例如: 将int a;的低字节置1:a = a | 0 xff;2022-6-1北京邮电大学电信工程学院计算机技术中心-54-2.4 2.4 运算符和表达式运算符和表达式按位异或() 按位异或操作的作用是将两个操作数对应的每一位分别进行异或操作。 具体运算规则: 11=0,00=0,10=01=1 例如:计算35 3:0 0 0 0 0 0 1 1 5:0 0 0 0 0 1 0 1 3 5:0 0 0 0 0 1 1 02022-6-1北京邮电大学电信工程学院计算机技术中心-55-2.4 2.4 运

21、算符和表达式运算符和表达式按位异或() 例如: 如果使8位二进制数01111010的后四位翻转?可以将该二进制数与00001111进行异或操作: 0 1 1 1 1 0 1 0 ()0 0 0 0 1 1 1 1 0 1 1 1 0 1 0 12022-6-1北京邮电大学电信工程学院计算机技术中心-56-2.4 2.4 运算符和表达式运算符和表达式按位取反() 按位取反是一个一元运算符,它的作用是将两个操作数对应的每一位分别进行取反操作。 具体运算规则:1=0,0=1。 例如:计算5 5:0 0 0 0 0 1 0 1 5:1 1 1 1 1 0 1 02022-6-1北京邮电大学电信工程学院

22、计算机技术中心-57-2.4 2.4 运算符和表达式运算符和表达式左移: 按照指定的位数将一个二进制数值向右移动,右移后,移出的低位舍弃。 如果是无符号数则高位补0,如果是有符号数在VC+6.0环境下高位补符号位。例子char a= -8; a =a2;cout”a=”(int)aendl;例子char a=2; a =a1;cout”a=”(int)aendl;2022-6-1北京邮电大学电信工程学院计算机技术中心-60-2.4 2.4 运算符和表达式运算符和表达式位运算符 在C+中可以将位运算符和赋值运算符结合在一起进行运算,因此C+还提供另外5种运算符&=,|=,=,=。 例如: x&=

23、y 相当于 x = x&y x|=y 相当于x = x|y x=y 相当于x = xy x=y 相当于 x = x=y 相当于 x = xy 2022-6-1北京邮电大学电信工程学院计算机技术中心-61-2.4 2.4 运算符和表达式运算符和表达式位运算符这些位运算符的优先级由高到低依次为:1、2、3、&4、5、|6、&=,|=,=,=2022-6-1北京邮电大学电信工程学院计算机技术中心-62-2.4 2.4 运算符和表达式运算符和表达式条件运算符 条件运算符语法格式为: 表达式1?(表达式2):(表达式3); 运算的结果是:如果表达式1的值为真,则返回表达式2的值,否则返回表达式3的值。

24、例1: x = ab ? a : b; 例2: int x=0, y=1; couty?x:y)endl;2022-6-1北京邮电大学电信工程学院计算机技术中心-63-2.4 2.4 运算符和表达式运算符和表达式逗号运算符 逗号表达式的语法格式为: 表达式1,表达式2,表达式n; C+顺序计算表达式1,表达式2,表达式n的值,并将最后一次计算的结果作为逗号表达式的结果。 例如: int a,b,c; a=1,b=2,c=a+b; 例子例子 int a,b,c,d; d=(a=1, b=2, c=a+b, a+b+c); coutdendl;62022-6-1北京邮电大学电信工程学院计算机技术中

25、心-65-2.4 2.4 运算符和表达式运算符和表达式数据类型转换 当表达式中出现多种数据类型的混合运算时,往往需要进行类型转换。表达式中的类型转换分成两种: 1、隐式类型转换 2、强制类型转换。2022-6-1北京邮电大学电信工程学院计算机技术中心-66-2.4 2.4 运算符和表达式运算符和表达式1、隐式类型转换 各种二元运算符在进行运算时都要求两个操作数的数据类型一致。如果类型不一致,则系统自动对数据进行转换(隐式类型转换)。 2022-6-1北京邮电大学电信工程学院计算机技术中心-67-1 1、隐式类型转换、隐式类型转换转换的基本原则: 将精度较低、范围较小的类型转换成精度较高、范围较

26、大的类型。 double float long unsigned int char, short高低2022-6-1北京邮电大学电信工程学院计算机技术中心-68-例子例子void main() char a=100; unsigned char i=99; couti - aendl;输出结果:-12022-6-1北京邮电大学电信工程学院计算机技术中心-69-1、隐式类型转换、隐式类型转换1 1、逻辑运算: 逻辑运算要求是bool型,系统自动将其他类型转换成bool类型,转换规则:0为false,非0为true。2、赋值运算: “=”要求左右两边的数据类型相同,如果类型不一致,则自动将右边的操

27、作数类型向着左边的操作数类型转换。 例如: int i=3.15; coutiendl;2022-6-1北京邮电大学电信工程学院计算机技术中心-70-2.4 2.4 运算符和表达式运算符和表达式2、强制类型转换 强制类型转换通过是类型说明符和括号来实现的显式转换,其语法格式为: (数据类型名)表达式 或 数据类型名(表达式) 例如: int i=97; cout(char)iendl; /输出a float f=3.75; cout(int)f”就可以将键盘键入的数据读入到变量中。语法格式为: cin变量1变量2变量n; 例如: int a,b; char ch; cinabch;2022-6

28、-1北京邮电大学电信工程学院计算机技术中心-74-2.5 2.5 I/O流控制流控制2、标准输出流cout cout负责将变量或常量中的数据输出到屏幕,使用插入操作符“”就可以将变量或常量的数据显示在屏幕上。 例如: cout”Hello world!n”; cout能够自动识别“”后面的数据类型并进行显示,并且可以从左到右一次显示多个变量。例子例子#include using namespace std;void main()int a,b;char ch;coutabch; cout”a=”a” b=”b” ch=”chendl;2022-6-1北京邮电大学电信工程学院计算机技术中心-76

29、-2.5 2.5 I/O流控制流控制3、IO流的格式控制 库文件 iomanip 常用控制符: setfill(c) 设置填充字符 setw(n) 设置域宽为n 2022-6-1北京邮电大学电信工程学院计算机技术中心-77-2.5 2.5 I/O流控制流控制设置输出宽度和填充字符 setw(n) 设置域宽,即设置“”符号后面的数据占用的屏幕宽度。 setfill(c) 设置填充字符,即“”符号后面的数据长度小于域宽时,使用什么字符进行填充。 setw(n) 和setfill(c)例1: coutsetw(8)asetw(8)bendl;输出结果: 例2: coutsetfill(*)setw(

30、5)aendl;输出结果:#include #include using namespace std;void main() coutsetfill(*) setw(2)n setw(3)n setw(4)n setw(5)n setw(6)n setw(7)n setw(8)n;* * * * * * *2022-6-1北京邮电大学电信工程学院计算机技术中心-80-2.5 2.5 I/O流控制流控制注意1 除了setw()控制符外,其他控制符一旦设置,则对其后的所有输入输出产生影响。而setw()控制符只对其后输出的第一个数据有效,对其他数据没有影响,所以如下代码: coutsetw(8)

31、a bendl; 输出结果: _ _ _ _ _ _ _ab2022-6-1北京邮电大学电信工程学院计算机技术中心-81-2.5 2.5 I/O流控制流控制注意2 setw()的默认为setw(0),意思是按实际输出。如果输出的数值占用的宽度超过setw(n)设置的宽度,则按实际宽度输出。 例如: float f=0.12345; coutsetw(3)fendl; 0.123452022-6-1北京邮电大学电信工程学院计算机技术中心-82-2.5 2.5 I/O流控制流控制3、I/O流的格式控制 C+默认输出浮点数的有效位为6位,那么要想控制输出的数据的长度,该如何呢? 比如:float f

32、=3.1234567;如何让显示结果为3.12? C+提供了setprecision(int n)可以控制显示浮点数的有效位。#include #include using namespace std;void main() float f=17/7.0;coutfendl;coutsetprecision(0)fendl;coutsetprecision(1)fendl;coutsetprecision(2)fendl;coutsetprecision(3)fendl;coutsetprecision(6)fendl;coutsetprecision(8)fendl;2.428572.428

33、5722.42.432.428572.42857152022-6-1北京邮电大学电信工程学院计算机技术中心-84-2.5 2.5 I/O流控制流控制3、I/O流的格式控制 如何控制小数的位数? setiosflags(ios:fixed)控制符是用定点方式表示浮点数,将setprecisi on(i nt n)和setiosflags(ios:fixed)结合,可以使用setprecision(int n)控制小数点右边小数的个数。#include #include using namespace std;void main() float f=17/7.0; coutsetiosflags(

34、ios:fixed); coutsetprecision(0)fendl; coutsetprecision(2)fendl; coutsetprecision(3)fendl; coutsetprecision(4)fendl;22.432.4292.42862022-6-1北京邮电大学电信工程学院计算机技术中心-86-2.5 2.5 I/O流控制流控制3、I/O流的格式控制 如何控制指数表示的小数个数? setiosflags(ios:scientific)控制符使用指数方式显示浮点数,将setprecision(int n)和setiosflags(ios:scientific)结合,可

35、以使用setprecision(int n)控制指数表示法的小数位数。 #include #include using namespace std;void main() float f=17/7.0; coutsetiosflags(ios:scientific); coutsetprecision(2)fendl; coutsetprecision(3)fendl; coutsetprecision(4)fendl;2.43e +0002.429e +0002.4286e +000总结1、基本数据类型有哪些?2、如何定义和使用变量和常量?变量和常量的异同?3、运算符的优先级?4、数据类型如和转化?5、I/O流的使用技巧思考1、任意输入两个整型变量,输出其中较大的一个数?2、任意输入两个整型变量,交换这两个变量的内容,然后输出。2022-6-1北京邮电大学电信工程学院计算机技术中心-89-问题1、如何定义一个字符串变量?2、两个IP地址分别是Ipa和Ipb,子网掩码是Mask,如何判断这两个IP地址是否在同一子网内? 比如:192.168.0.1 、192.168.0.158 子网掩码:255.255.255.192 2022-6-1北京邮电大学电信工程学院计算机技术中心-90-

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(C大学基础教程第2章课件.ppt)为本站会员(三亚风情)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|