第二章 C++简单程序设计,C++语言程序设计,,2,本章主要内容,C++语言概述 数据的输入与输出 自定义数据类型,3,C++语言的产生,C++是从C语言发展演变而来的,首先是一个更好的C 引入了类的机制,最初的C++被称为“带类的C” 1983年正式取名为C++ 从1989年开始C++语言的标准化工作 于1994年制定了ANSI C++标准草案 于1998年11月被国际标准化组织(ISO)批准为国际标准,成为目前的C++,C++语言概述,4,C++的特点,全面兼容C 它保持了C的简洁、高效和接近汇编语言等特点 对C的类型系统进行了改革和扩充 C++也支持面向过程的程序设计,不是一个纯正的面向对象的语言 支持面向对象的方法,C++语言概述,5,C++程序实例—例2-1,//2_1.cpp #include using namespace std; void main(void) { cout“Hello!\n“; cout“Welcome to c++!\n“; } 运行结果: Hello! Welcome to c++!,C++语言概述,6,字符数据的使用方法 字符数据和整型数据之间可以运算。
字符数据与整型数据可以互相赋值 字符串常量 例:“CHINA“ “a“ 'a' 所以:char c; c=“a“;,Page 6,数据类型 ——字符型数据,基本数据类型和表达式,7,数据类型 ——变量初始化,例: int a=3; double f=3.56; char c='a'; int c(5);,Page 7,基本数据类型和表达式,8,,数据类型 —混合运算时的类型转换,不同类型数据进行混合运算时,C++编译器会自动进行类型转换 为了避免不同的数据类型在运算中出现类型问题,应尽量使用同种类型数据 可以采用强制类型转换: 例如: float c; int a,b; c=float(a)/float(b); 或 c= (float)a/(float)b;,基本数据类型和表达式,9,赋值运算符和赋值表达式 简单的赋值运算符“=“,举例 n=n+5 表达式的类型 等号左边对象的类型 表达式的值 等号左边对象被赋值后的值,Page 9,基本数据类型和表达式,10,赋值运算符和赋值表达式 ——赋值表达式举例,a=5 表达式值为5 a=b=c=5 表达式值为5,a,b,c均为5 a=5+(c=6) 表达式值为11,a为11,c为6 a=(b=4)+(c=6) 表达式值为10,a为10,b为4,c为6 a=(b=10)/(c=2) 表达式值为5,a为5,b为10,c为2 a+=a-=a*a 相当于 a=a+(a=a-a*a),Page 10,基本数据类型和表达式,11,逗号运算和逗号表达式,格式 表达式1,表达式2 求解顺序及结果 先求解1,再求解2,最终结果为表达式2的值 例 a=3*5 , a*4 最终结果为60,Page 11,基本数据类型和表达式,12,sizeof 运算符,语法形式 sizeof (类型名) 或 sizeof (表达式) 结果值: “类型名”所指定的类型或“表达式”的结果类型所占的字节数。
例: sizeof(short) sizeof(x),基本数据类型和表达式,13,,位运算——按位与(&),运算规则 将两个运算量的每一个位进行逻辑与操作 举例:计算 3 ,基本数据类型和表达式,14,位运算——按位或(|),运算规则 将两个运算量的每一个位进行逻辑或操作 举例:计算 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 1 1 1 用途: 将某些位置1,其它位不变 例如:将 int 型变量 a 的低字节置 1 : a = a | 0xff;,基本数据类型和表达式,15,位运算——按位异或(^),运算规则 两个操作数进行异或: 若对应位相同,则结果该位为 0, 若对应位不同,则结果该位为 1, 举例:计算 071^052 071: 0 0 1 1 1 0 0 1 052: (^) 0 0 1 0 1 0 1 0 071^052 : 0 0 0 1 0 0 1 1,基本数据类型和表达式,16,位运算——按位异或(^),用途: 使特定位翻转(与0异或保持原值,与1异或取反) 例如:要使 01111010 低四位翻转: 0 1 1 1 1 0 1 0 (^) 0 0 0 0 1 1 1 1 0 1 1 1 0 1 0 1,基本数据类型和表达式,17,位运算——取反(~),单目运算符,对一个二进制数按位取反。
例: 025:0000000000010101 ~025:1111111111101010,基本数据类型和表达式,18,位运算——移位,左移运算() 右移后,低位:舍弃 高位:无符号数:补0 有符号数:补“符号位”,基本数据类型和表达式,19,混合运算时数据类型的转换 ——强制类型转换,语法形式: 类型说明符(表达式) 或 (类型说明符)表达式 强制类型转换的作用是将表达式的结果类型转换为类型说明符所指定的类型基本数据类型和表达式,20,简单的输入、输出,C++就数据在设备间传输的过程抽象为“流”从流中获取数据成为提取操作,向流中添加数据的操作称为插入操作数据的输出与输出操作通过I/O流实现, cin和cout是预先定义的流对象,在头文件iostream中定义的 向标准输出设备(显示器)输出 例:int x; coutx name;,21,用cout进行输出,格式: cout 表达式1[表达式2……] 功能:由左向右逐个计算表达式的值,将其插入到输出流cout中 cout 必须与输出运算符一起使用,每个后跟一个表达式,运算符的结合方向是从左向右,所以各个表达式的值按从左到右的顺序插入到输出流中。
22,,for ( k = 1; k =3; k++) cout “k=“ kendl; endl是C++输出流的操作符,在头文件iostream中定义,代表让光标换行在C++中也可以用”\n”控制光标换行所以输出语句也可写成: cout “k=“ k“\n” ;,23,用cin进行输入,格式: cin变量1 [变量2 ……] 是C++的提取运算符,表示从标准输入设备取得数据,赋予其后的变量 从键盘输入数值数据时,两个数据之间用空格分隔或用回车分隔24,,int a; float b cinab; 从键盘输入 20 32.45 ,25,cin和cout的使用,#include using namespace std; int main( ) { coutname; cinage; cout“your name is “nameendl; cout“your age is “ ageendl; return 0; },26,typedef语句,为一个已有的数据类型另外命名 语法形式 typedef 已有类型名 新类型名表; 例如 typedef double area,volume; typedef int natural; natural i1,i2; area a; volume v;,自定义数据类型,27,枚举类型—enum,只要将需要的变量值一一列举出来,便构成了一个枚举类型。
枚举类型的声明形式如下: enum 枚举类型名 {变量值列表}; 例如: enum weekday {sun,mon,tue,wed,thu,fri,sat};,自定义数据类型,28,枚举类型—enum,枚举类型应用说明: 对枚举元素按常量处理,不能对它们赋值例如,不能写:sun=0; 枚举元素具有缺省值,它们依次为: 0,1,2, 也可以在声明时另行指定枚举元素的值,如: enum weekday {sun=7,mon=1,tue,wed,thu,fri,sat}; 枚举值可以进行关系运算 整数值不能直接赋给枚举变量,如需 要将整数赋值给枚举变量,应进行强 制类型转换自定义数据类型,29,例2-11,设某次体育比赛的结果有四种可能:胜(win)、负(lose)、平局(tie)、比赛取消(cancel),编写程序顺序输出这四种情况 分析:由于比赛结果只有四种可能,所以可以声明一个枚举类型,声明一个枚举类型的变量来存放比赛结果自定义数据类型,#include using namespace std; enum game_result {WIN, LOSE, TIE, CANCEL}; int main() { game_result result; enum game_result omit = CANCEL; int count; for (count = WIN ; count = CANCEL ; count++) { result = (game_result)count; if (result == omit) { cout “The game was cancelled\n“; } else { cout “The game was played “; if (result == WIN) cout “and we won!“; if (result == LOSE) cout “and we lost.“; cout “\n“; } } return 0; },30,运行结果 The game was played and we won! The game was played and we lost. The game was played The game was cancelled,31,32,结构体——结构的声明,结构的概念 结构是由不同数据类型的数据组成的集合体。
声明结构类型 struct 结构名 { 数据类型 成员名 1; 数据类型 成员名 2; : 数据类型 成员名 n; };,自定义数据类型,33,结构体——结构的声明,举例: struct student //学生信息结构体 { int num; //学号 char name[20]; //姓名 char gender; //性别 int age; //年龄 float score; //成绩 char addr[30]; //住址 },自定义数据类型,34,结构体——结构变量说明,变量说明形式 结构名 结构变量名; 注意: 结构变量的存储类型概念、它的寿命、可见性及使用范围与普通变量完全一致 结构变量说明在结构类型声明之后,二者也可同时进行 结构变量占内存大小可用 sizeof 运算求出: sizeof(运算量),自定义数据类型,35,结构体 ——结构变量的初始化和使用,初始化 说明结构变量的同时可以直接设置初值 使用 结构体成员的引用形式: 结构变量名.成员名,自定义数据类型,36,例2-12,结构体变量的初始化和使用 #include #include using namespace std; struct student //学生信息结构体 { int num; //学号 char name[20]; //姓名 char gender; //性别 int age; //年龄 }stu={97001,“Lin Lin“,'F',19}; void main() { coutsetw(7)stu.numsetw(20)stu.name setw(3)stu.sexsetw(3)stu.age; },自定义数据类型,运行结果: 97001 Lin Lin F 19,37,const定义常变量,格式: const 类型 变量名 = 常数; 例:const float PI= 3.14159;,38,00F0,00F8,char * p ;,。