




已阅读5页,还剩36页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验02讲评、参考答案讲 评未交实验报告的同学名单数学:唐明园,08景欢,23王瑞斌,24王玺信科:张宜,马兴志,张鹏飞,08黄俊(交错,补交),37杨静莹(补交)批改情况:第3题问题:有些需简化。for(i=1;i=10;i+) sum=sum+i;第6题问题:列不对齐。第7题问题:缺default附参考答案:C+语言程序设计课内实验王平实验02 C+简单程序设计(6学时)(第2章 C+简单程序设计)一、实验目的(1) 学会编写简单的C+程序。(2) 复习基本数据类型变量和常量的应用。(3) 复习运算符与表达式的应用。(4) 复习结构化程序设计基本控制结构的运用。(5) 复习自定义数据类型的应用。(6) 练习使用简单的输入输出。(7) 观察头文件的作用。(8) 学会使用Visual Studio 2010开发环境的Debug调试功能:单步执行、设置断点、观察变量值。二、实验任务2_1(例2-7)输入并运行例2-7,即:用do-while语句编程,求自然数110之和。程序正确运行之后,去掉源程序中#include语句,重新编译,观察会有什么问题。2_2 将do-while语句用for语句代替,完成相同的功能。2_3 编程计算图形的面积。程序可计算圆形、长方形、正方形的面积,运行时先提示用户选择图形的类型,然后,对圆形要求用户输入半径值,对长方形要求用户输入长和宽的值,对正方形要求用户输入边长的值,计算出面积的值后将其显示出来。2_4 使用Debug调试功能观察任务2_3程序运行中变量值的变化的情况。2_5(习题2-35)输出乘法九九算表。编程中要用到单重循环、二重循环、选择结构和I/O格式控制的操纵符。2_6 编写程序,实现整数算术四则运算。三、实验步骤1.(验证,例2-7)用do-while语句编程,求自然数110之和。(1) 建立一个控制台应用程序项目lab2_1;(2) 向其中添加一个C+源文件lab2_1.cpp(方法见实验1);(3) 输入例2-7的代码,检查一下确认没有输入错误;(4) 选择菜单命令“生成”|“生成解决方案”编译源程序;(5) 再选择“调试”|“开始执行(不调试)”运行程序;(6) 观察输出是否与书上的答案一致。 程序的运行结果:2.(验证,例2-7)去掉#include行及using行,观察会有什么问题。程序正确运行之后,在源程序行“#include ”及下一行前面加注释标记“/”,使之成为注释行,重新编译,此时,编译器会输出类似于下面内容的提示:C+语言没有输入输出语句,只是C+编译系统带有一个面向对象的I/O软件包,即I/O流类库。cout和cin是该类库预定义的流对象,#include 提示编译器在对程序预处理时,将头文件iostream中的代码嵌入到该程序中该指令所在的地方。头文件iostream中声明了程序所需要的输入和输出操作的有关信息,在C+程序中若使用了系统中提供的一些功能,就必须嵌入相关的头文件,否则,系统无法找到实现这些功能的代码。现在,删除注释标记,将程序恢复正确。3.(编程,例2-7)用for语句编程,求自然数110之和。建立一个项目lab2_2, 包含一个C+源程序lab2_2.cpp,将do-while语句用for语句代替,完成与实验任务2_1相同的功能。 程序及运行结果:/lab2_2.cpp(例2-7修改)#include using namespace std;void main( )int i,sum(0);for(i=1;i=10;i+) sum+=i;coutsum=sumendl;4.(验证)计算图形的面积。建立项目lab2_3,包含一个C+源程序lab2_3.cpp(见步骤5),计算图形的面积。计算公式:圆形面积S=PI*r*r,长方形面积S=a*b,正方形面积S=a*a。程序中声明整型变量iType表示图形的类型,用cout语句输出提示信息让用户选择图形的类型,用cin读入iType的值,然后使用switch语句判断图形的类型,分别提示用户输入需要的参数值,用cout语句显示计算结果。 程序的运行结果:运行3次,每种图形一次。5.(操作)学习简单的Debug调试功能。参考程序:/lab2_3.cpp#include using namespace std;const float PI=3.1416;void main()int iType;float radius,a,b,area;coutiType;switch(iType)case 1:coutradius;area=PI*radius*radius;cout面积为: areaendl;break;case 2:couta;coutb;area=a*b;cout面积为: areaendl;break;case 3:couta;area=a*a;cout面积为: areaendl;break;default:cout不是合法的输入值!endl;一个程序,编写完成后会存在这样或那样的错误。有些错误在编译连接阶段可由编译系统发现并指出(如步骤2所示),称为语法错误。当修改完语法错误生成了执行程序后,并不意味着程序已经正确。常常会发现程序运行的结果与预期的不一致,有时在运行过程中程序中止或发生死机,这种错误称为运行错误,这是因为算法设计不当或编程实现时的疏忽造成的。调试是指在发现程序存在运行错误后,寻找错误的原因和位置并排除错误。虽然编译系统不能像对待语法错误那样,明确指出运行错误的原因和位置,但开发环境提供了辅助调试工具,可实现单步运行、设置断点、观察变量和表达式的值等功能,使我们可以跟踪程序的执行流程、观察不同时刻变量值的变化状况。(1) 在第12行处设置调试断点。用鼠标右键单击源程序第12行( cout图形的类型为?; ),出现一个菜单,如图2-1。图2-1 添加断点(2) 选择“断点 | 插入断点”一项,可看到左边的边框上出现了一个褐色的圆点,标记此处设置了一个断点。断点是程序运行时的暂停点。程序运行到断点处便暂停,这样就可以观察程序的执行流程,以及执行到断点处时有关变量的值。(3) 然后选择菜单命令“调试 | 启动调试”,或按下快捷键F5,系统进入调试状态,程序开始运行,一个DOS窗口出现,此时,Visual Studio的外观如图2-2,程序暂停在断点处。/点击底行“局部变量”选项卡图2-2 调试状态下的Visual Studio(“局部变量”窗口)(4) 单步执行:从“调试”菜单或调试工具栏中单击“逐过程”选项或按钮两次。在程序运行的DOS窗口中输入选择的图形类型,例如,输入3,代表正方形,这时,回到Visual Studio中,把鼠标放在变量名iType上片刻,可看到出现了一个提示:iType=3;此时,在“局部变量”窗口中也看到iType以及其他变量的值。逐语句:若下一语句行中有函数调用,将进入被调用的函数。(慎用)逐过程:若下一语句行中有函数调用,将不进入被调用的函数。跳出:执行完当前函数的所有语句。注意:单步执行时每次执行一行语句,便于跟踪程序的执行流程。因此,为了调试方便,需要单步执行的语句不要与其他语句写在一行中。(5) 在“监视1”窗口中,在“名称”栏中输入iType,按回车键,可看到“值”栏中出现3,这是变量iType现在的值(若没看到“局部变量”窗口或“监视X”窗口,可通过菜单“调试 | 窗口 | 局部变量”或“调试 | 窗口 | 监视”选项打开它。图2-3是此时“监视1”窗口的状态。图2-3 “监视1”窗口的状态(6) 继续执行程序,参照上述方法,再试试“调试”菜单栏中别的菜单项,熟悉调试的各种方法。6.(编程,习题2-35)输出乘法九九算表。建立一个项目lab2_4, 包含一个C+源程序lab2_4.cpp,要求该程序运行的结果如下(注意列之间的间隔): 程序及运行结果:/程序1#include /定义cout#include /定义setwusing namespace std;void main()int i,j;for(i=1;i=9;i+)for(j=1;j=i;j+)if(j=1) coutsetw(2);else if(j=3)&(i=4)coutsetw(4);elsecoutsetw(3);coutji=i*j;coutendl;/太细!/程序2#include #include using namespace std;void main()int i,j;for(i=1;i=9;i+)coutsetw(2);for(j=1;j=i;j+)coutji=i*jsetw(3);if(j!=1&i*j10) coutsetw(4);coutendl;/量化!/程序3#include using namespace std;void main()int i,j;for(i=1;i=9;i+)cout ;/行首加1个空格for(j=1;j=i;j+)coutji=i*j ;列之间加2个空格if(j!=1&i*j10) cout ;/再加1个空格coutendl;/一行结束/直白!7.(编程,例2-4) 编写程序,实现整数算术四则运算。分别用switch和ifelse if各编写一个程序。建立项目其名称为lab2_5_1,解决方案名称为lab2_5,包含一个C+源程序lab2_5_1.cp(用switch语句实现);在同一解决方案lab2_5下再建立项目其名称为lab2_5_2,包含一个C+源程序lab2_5_2.cp(用ifelse if语句实现)(参考实验提示)参考的运行结果: 程序及运行结果:/程序1:用switch#include using namespace std;void main( )int a,b; char c;coutacb;switch(c)case +: couta+bendl;break;case -: couta-bendl;break;case *: couta*bendl;break;case /: if(b=0)cout出错!除数为0。endl;else couta/bendl;break;default: cout出错!运算符无效。endl;/程序2:用ifelse if#include using namespace std;void main( )int a,b; char c;coutacb;if(c=+) couta+bendl;else if(c=-) couta-bendl;else if(c=*) couta*bendl;else if(c=/) if(b=0)cout出错!除数为0。endl;else couta/bendl;else cout出错!运算符无效。endl;四、实验提示步骤2提示标识符cout, endl不是本程序定义的,而是在文件iostream中定义的,这些标识符归属于命名空间std。用法一#include using namespace std;/将标识符cout, endl的作用域从命令空间std扩展到本程序void main( )int i(1),sum(0);dosum+=i;i+;while(i=10);coutsum=sumendl;/可以不使用作用域分辨符用法二#include /标识符cout, endl的作用域在本程序无效void main( )int i(1),sum(0);dosum+=i;i+;while(i=10);std:coutsum=sumstd:endl;/必须使用作用域分辨符,指明是std的标识符步骤6提示-1#include /coutusing namespace std;void main()int i,j;for(i=1;i=9;i+)for(j=1;j=9;j+)cout i*j;coutendl;使用输出流操纵符setw(int)设置域宽#include /cout#include /setwusing namespace std;void main()int i,j;for(i=1;i=9;i+)for(j=1;j=9;j+)coutsetw(4)i*j;coutendl;注意!还要用if语句。步骤6提示-2第1步,编程使输出为下三角形的形式;第2步,观察输出,可能发现有列不对齐,可用if语句添加空格使其对齐,注意给出满足条件的逻辑表达式,可不用setw输出格式控制。步骤7提示-1(switch示例)例2-4 (switch)输入一个06的整数,转换成星期输出。分析:根据输入的数字决定输出的信息,数字06分别对应星期日、星期一、.星期六等七种情况,运用多重分支结构。#include using namespace std;void main( )int day;coutday;switch(day)case 0: cout星期日endl;break;case 1: cout星期一endl;break;case 2: cout星期二endl;break;case 3: cout星期三endl;break;case 4: cout星期四endl;break;case 5: cout星期五endl;break;case 6: cout星期六endl;break;default: cout输入无效!endl;步骤7提示-2(同一解决方案下多项目示例)在同一个解决方案(名为lab1)下建立两个项目(名分别为lab1_1和lab1_2)。新建第一个项目(名为lab1_1),同时新建解决方案(名为lab1)。注意:项目名和解决方案名不同!在项目lab1_1中操作:建立第二个项目lab1_2:选择“添加到解决方案”:两个项目在同一解决方案下,每个项目的程序中有一个且仅有一个main函数:项目名称字符为粗体为启动项目,将项目lab1_2设为启动项目:在项目lab1_2中操作:选择“生成解决方案 (B)”将对所有项目生成解决方案,此处应选择“生成lab1_2 (U)”:参阅:第2章 C+简单程序设计2.1 C+语言概述P192.1.1 C+的产生C语言是贝尔实验室的Dennis Ritchie1972年在B语言基础上开发出来的。C语言是一个面向过程的编程语言。C+是在C语言基础上为支持面向对象的程序设计而研制的一个通用目的的程序设计语言。1980年,C+由AT&T贝尔实验室的Bjarne stroustrup博士创建的1983年,正式取名为C+1989年,开始C+语言的标准化工作1994年,制定了ANSI C+标准草案1998年11月,被国际标准化组织(ISO)批准为国际标准,成为目前的C+研制C+的目标是使C+是一个更好的C;支持面向对象的程序设计。2.1.2 C+的特点全面兼容C它保持了C的简洁、高效和接近汇编语言等特点;对C的类型系统进行了改革和扩充;C+也支持面向过程的程序设计,不是一个纯正的面向对象的语言。支持面向对象的方法2.1.3 C+程序实例P20例2-1 一简单的C+程序19#includeusing namespace std;void main()coutHello! n;coutWelcome to C+! n;main是主函数名,函数体用一对大括号括住。函数是C+程序中最小的功能单位。在C+程序中,有且只能有一个名为main()的函数,它是程序执行的开始点。main()函数之前的void表示main()函数返回值类型。(void表示无返回类型)程序由语句组成,每条语句由分号( ; )作为结束符。cout是一个输出流对象,它是C+系统预定义的对象,其中包含了许多有用的输出功能。输出操作符“”,其作用是将紧随其后的双引号中的字符串输出到标准输出设备(显示器)上。#includeiostream指示编译器在对程序进行预处理时,将文件iostream.h中的代码嵌入到该指令所在的位置,#include称编译指令。iostream.h中声明了程序所需要的输入和输出操作的有关信息。cout和“”操作的有关信息就是在该文件中声明的。由于这类文件常被嵌入在程序的开始处,所以称之为头文件。在C+程序中若使用了系统中提供的一些功能,就必须嵌入相关的头文件。using namespace sdt;是针对命名空间的指令。(第5章)编写完程序文本后,要将它存储为后缀为.cpp的文件,称C+源文件;再经过编译系统的编译、连接后,产生出后缀为.exe的可执行文件。C+编译系统提供两类头文件:标准C+库的头文件,没有后缀,如;C语言风格的头文件,后缀为.h,如。2.1.4 字符集P21字符集是构成C+语言的基本元素。C+语言的字符集由下述字符构成:大小写英文字母:AZ,az数字字符:09特殊字符:!#%&*_+=-/;.,:?()2.1.5 词法记号P22词法记号是最小的词法单元:关键字、标识符、文字、运算符、分隔符、空白符。1. 关键字C+预定义的单词,在程序中有不同的使用目的。2. 标识符程序员声明的单词,它命名程序正文中的一些实体。如函数名、变量名、类名、对象名等。标识符的构成规则:以大写字母、小写字母或下划线( _ )开始。可由大小写字母、下划线或数字组成。区分大小写字母。不能是C+关键字。3. 文字在程序中直接使用符号表示的数据。包括数字、字符、字符串和布尔文字。4. 操作符(运算符)用于实现各种运算的符号。5. 分隔符用于分隔各个词法记号或程序正文。C+分隔符是:( ) , : ;这些分隔符不表示任何实际的操作,仅用于构造程序。6. 空白在程序编译时的词法分析阶段将程序正文分解为词法记号和空白。空白是空格、制表符(TAB键产生的字符)、换行符(Enter键所产生的字符)和注释的总称。空白符用于指示词法记号的开始和结束位置,但除了这一功能之外,其余的空白将被忽略。C+程序可以不必严格地按行书写,凡是可以出现空格的地方,都可以出现换行。在C+中,有两种给出注释的方法:沿用C语言的方法,使用“/*”和“*/”括起注释文字;使用“/”,从它开始,直到它所在行的行尾,所有字符都被作为注释处理。2.2 基本数据类型和表达式P232.2.1 基本数据类型(C+内置)P24表2-1 C+的基本数据类型类型名占字节数取值范围bool布尔型1false, truechar(signed char) 有符号字符型1-128127unsigned char无符号字符型120255short(signed short)有符号短整型2-3276832767unsigned short有符号短整型4065535int(signed int)有符号整型4-21474836482147483647unsigned int无符号整型404294967295long(signed long) 有符号长整型4-21474836482147483647unsigned long 无符号长整型404294967295float浮点型43.410-383.41038(绝对值精度)double双精度浮点型81.710-3081.710308(绝对值精度)long double长双精度浮点型81.710-3081.710308(绝对值精度)2.2.2 常量在程序运行的整个过程中其值始终不可改变的量,即直接使用符号(文字)表示的值。1. 整型常量以文字形式出现的整数,包括正整数、负整数和零。表示形式:十进制、八进制、十六进制。八进制整型常量的数字部分要以数字0开头。十六进制整型常量的数字部分要以0x开头,数字符号09,AF(或af)。整型常量可用后缀字母L(或l)表示长整型;后缀字母U(或u)表示无符号型;可同时使用后缀L和U(大小写无关)。2. 实型常量实数有两种表示形式:一般形式和指数形式。指数形式例:0.345E+2表示0.345102其中,字母E可以大写或小写。整数部分和小数部分可省略其一,但不能都省略。实型常量默认为double型,若后缀是F(或f)则为float型。3. 字符常量字符常量是单引号括起来的一个字符。有一些字符是不可显示字符,也无法通过键盘输入,例如响铃、换行、制表符、回车等等。表2-2 C+预定义的转义序列字符常量形式ASCII码(十六进制)含 义antvbr070A090B080D5C2227响铃换行水平制表符垂直制表符退格回车字符“”双引号单引号无论是不可显示字符还是一般字符,都可用八进制或十六进制ASCII码来表示: nnn 八进制形式 xnnn 十六进制形式nnn表示3位八进制或十六进制数。4. 字符串常量字符串常量简称字符串,是用双引号括起来的字符序列。字符串与字符是不同的,它在内存中的存放形式:按串中字符的排列次序顺序存放,每个字符占一个字节,并在末尾添加 0 作为结尾标记。5. 布尔常量布尔型常量只有两个:false(假)和true(真)。2.2.3 变量P27在程序的执行过程中其值可变化的量称变量,变量需用名字来标识。1. 变量的声明和定义变量在使用前需先声明其类型和名称。变量声明语句:数据类型 变量名1,变量名2,.,变量名n;声明变量并不一定引起内存的分配。定义变量意味着给变量分配内存空间,变量名是对相应内存单元的命名。大多数情况下变量声明同时也是变量定义,只有声明外部变量时例外。在定义一个变量的同时,也可给它赋初值。int a=3; 或 int a(3);没有字符串变量,用字符数组存放。2. 变量的存储类型auto:采用堆栈方式分配内存空间,属于暂时性存储,其存储空间可被若干变量多次覆盖使用。自动变量register:存放在通用寄存器中。寄存器变量exern:在所有函数和程序段中都可引用。外部变量static:在内存中以固定地址存放,程序运行期间都有效。静态变量2.2.4 符号常量P27为常量命名。常量声明语句:const 数据类型说明符 常量名 = 常量值;或数据类型说明符 const 常量名 = 常量值;符号常量在声明时一定要赋初值,而在程序中间不能改变其值。2.2.5 运算符与表达式P281算术运算符与算术表达式由算术运算符、操作数和括号构成的表达式称算术表达式。基本算术运算符: +、-、*、/、(取余)。优先级关系:先乘除、后加减,同级运算自左至右进行。“”是取余运算,只能用于整型数,表达式ab的结果是a被b除的余数。“”的优先级与“/”相同。当“/”用于两整型数据相除时,其结果取商的整数部分,小数部分被自动舍弃。自增+ + 自减 当自增、自减运算的结果要被用来继续参与其他操作时,前置与后置时的情况不同。i=1;couti+; /首先输出i当前的值1,然后i自增,其值变为2cout+i; /首先使i自增为3,然后输出i的值32. 赋值运算符与赋值表达式带有赋值运算符的表达式称赋值表达式。作用:将等号右边表达式的值赋给等号左边的对象。赋值表达式的类型为等号左边对象的类型,其结果值为等号左边对象被赋值后的值,运算的结合性为自右向左。例:a5 表达式值为5。ab = c5 表达式值为5,a,b,c均为5。从右向左运算,在c被更新为5后,c=5的值为5,接着b的值被更新为5,最后a被赋值为5。a5 + (c = 6) 表达式值为11,a为11,c为6。a = (b4) + (c6) 表达式值为10,a为10,b为4,c为6。a = (b10) / (c = 2) 表达式值为5,a为5,b为10,c为2。10种复合的赋值运算符+=, -=, *=, /=, %=与算术运算符复合=, &=, =, |=与位运算符复合优先级与“=”相同,结合性也是自右向左。例: a+3 等价于 aa+3 x*y+8 等价于xx*(y+8) a+=a-=a*a 等价于 a=a+(aa-a * a)3. 逗号运算与逗号表达式表达式1,表达式2求解顺序为:先求解1,再求解2,最终结果为表达式2的值。例如: a = 3*5,a*4 /最终结果为604. 逻辑运算与逻辑表达式关系运算符及优先次序: = = !=(不等于)优先级相同(较高) 优先级相同(较低)用关系运算符将两个表达式连接起来,就是关系表达式。结果类型为bool,值为true或false。用逻辑运算符将简单的关系表达式连接起来,构成较复杂的逻辑表达式。结果类型为bool。逻辑运算符及优先次序:!(非) &(与) |(或)优先级次序:高 低表2-3 逻辑运算符的真值表P31ab!a a&ba|btruetruetruefalsefalsetruefalsefalsefalse truetruefalse falsetruetrue falsetruetrue falsefalse“&” 的“短路特性”:表达式1 & 表达式2先求解表达式1;若表达式1的值为false,则最终结果为false,不再求解表达式2;若表达式1的结果为true,则求解表达式2,以表达式2的结果作为最终结果。“|”也具有类似的特性。5. 条件运算符与条件表达式表达式1 ?表达式2 :表达式3表达式1是bool型;表达式2,3可以是任何类型,且可以不同。条件表达式的最终类型为2和3中较高的类型。功能:若表达式1为true,则最终值是表达式2;否则是表达式3。条件运算符的优先级高于赋值运算符,低于逻辑运算符;结合方向为自右向左。例:(ab)?a:b; /求出整数a和b中较小值cout=60 ? 合格 : 不合格; /若成绩大于等于60,输出合格,否则不合格6. sizeof操作符用于计算某种类型的对象在内存中所占的字节数。sizeof(类型)或sizeof(表达式)7. 位运算对数据按二进制位进行操作,可以对整数进行位操作。(1) 按位与()作用:将两个操作数对应的每一位分别进行逻辑与操作。例如,计算3&5 3: 00000011 5:(&)00000101 3&5: 00000001 a = a & 0376; /将char型变量a的最低位置0, (376)8 = (11111110)2c = a & 0377; /c是char型,a是int型,取a的低字节置于c中(2) 按位或(|)作用:将两个操作数对应的每一位分别进行逻辑或操作。例,a = a | 0xff; /将int型的a的低字节置1,(ff)16 = (11111111)2(3) 按位异或()将两个操作数对应的每一位进行异或,规则:若相应位相同,则该位的结果为0;否则结果为1。例如,计算071052071: 00111001 052: () 00101010 071052: 00010011(4) 按位取反()是单目运算符,作用是对一个二进制数的每一位取反。(5) 移位()移位运算符左边的操作数是需要移位的数值,右边的操作数是左移或右移的位数。左移():1次右移后,移出的低位舍弃,高位补符号位。(重复)移位运算符左边的表达式值不会改变。8. 运算符优先级表2-4 运算符优先级P34优先级运算符结合性1234567891011121314151617 ( ) . - 后置+ + 后置- -前置+ + 前置- - sizeof & * +(正号) -(负号) (按位取反) !(非)(强制转换类型).* -* / %(取余)+ - = !=(不等于)&(按位与)(按位异或)|(按位或)&(与)|(或)?:(三目运算符)= *= /= %= += -= = &= = |=,(逗号表达式)左右右左左右右左右左左右9. 混合运算时数据类型的转换(隐含、强制)(1) 隐含转换算术运算符、关系运算符、逻辑运算符、位运算符和赋值运算符这些二元运算符要求两个操作数的类型一致。在算术运算和关系运算中若参与运算的操作数类型不一致,则系统自动对数据进行转换(即隐含转换),转换的基本原则:将低类型数据转换为高类型数据。各种类型的高低顺序:char short int unsigned long unsigned long float double低 高表2-5 混合运算(二元运算)时数据类型的转换P35条件转换有浮点数有long double型long double型前述不满足,有double型double型前述不满足,有float型float型都不是浮点数有unsigned long型unsigned long型一个long型,另一个unsigned int型nusigned long型前述不满足,有long型long型前述不满足,有unsigned int型unsigned int型前述都不满足int型逻辑运算要求操作数是bool型,若有其他类型,则系统自动将其转换为bool型。转换方法:非0数据转换为true,0转换为false。位运算的操作数是整数,若整数类型不同,则编译系统自动进行隐含转换。赋值运算要求左值与右值的类型相同。若类型不同,系统一律将有值类型转换为左值的类型。例 类型转换规则float fVal;double dVal;int iVal;unsigned long ulVal;dVal=iVal*ulVal; /iVal转换为unsigned long,乘结果转换为doubledVal=ulVal+fVal; /uVal转换为float,加结果转换为double(2) 强制类型转换(显式转换) 3种语法: 类型说明符(表达式) (类型说明符)表达式 类型转换操作符(表达式)通过类型说明符和括号实现,语法形式:类型说明符(表达式)/C+强制转换符号或(类型说明符)表达式/C强制转换符号作用:将表达式的结果类型转换为类型说明符所指定的类型。例 强制类型转换float Z=7.56, fraction_part;int whole_part;whole_part=int(Z);/取Z整数部分,赋值fraction_part=Z-(int)Z;/用Z减去其整数部分C+强制类型转换操作符:语法形式:const_cast(表达式)dynamic_cast(表达式)reinterpret_cast(表达式)static_cast(表达式)三种显式转换等价 int(z), (int)z, static_cast(z)三种完全等价。使用强制类型转换时,注意:是不安全的转换。(数据精度会受到损失)转换是暂时的、一次性的。(表达式仍保持原值)2.2.6 语句P37分类:声明语句、表达式语句、选择语句、循环语句、跳转语句、复合语句、标号语句变量的声明是通过声明语句实现的。表达式末尾加分号构成表达式语句。将多个语句用大括号包围构成复合语句。C+没有赋值语句也没有函数调用语句,赋值与函数调用功能通过表达式来实现。表达式与表达式语句区别:表达式可作为一个更复杂表达式的一部分,而语句不能。2.3 数据的输入与输出2.3.1 I/O流将数据从一个对象到另一个对象的流动抽象为“流”。流在使用前要被建立,使用后要被删除。提取操作 从流中获取数据的操作;插入操作 向流中添加数据的操作。数据的输入与输出是通过I/O流实现的,预定义的流类对象有cin 处理标准输入,即键盘输入;cout 处理标准输出,即屏幕输出。2.3.2 预定义的插入符()屏幕输出(插入操作)格式:cout表达式表达式表达式./两数间用空格,回车分隔作用:从输入流提取数据,赋给表达式。2.3.3 简单的I/O格式控制P38用cin、cout进行数据的输入和输出时,无论处理的是什么类型的数据,都能自动按正确的默认格式处理。可设置特殊的格式。I/O流类库提供一些操纵符,可直接嵌入到输入/输出语句中实现I/O格式控制。表2-6 常用的I/O流类库操纵符(头文件iomanip)操纵符名含 义dechexoctwsendlendssetprecision(int)setw(int)数值数据采用十进制表示数值数据采用十六进制表示数值数据采用八进制表示提取空白符插入换行符,并刷新流插入空字符设置浮点数的小数位数(包括小数点)设置域宽例 输出流操纵符输出浮点数3.1415并换行,设置域宽为5个字符,小数点后保留两位有效数字,输出语句:coutsetw(5)setprecision(3)3.1415endl;2.4 算法的基本控制结构算法的基本控制结构有三种:顺序结构、选择结构和循环结构。流程图是用来描述算法的工具。图2-4 流程图的标准符号2.4.1 用if语句实现选择结构P39if else语句形式:if(表达式) 语句1else 语句2执行顺序:先计算表达式的值,若表达式值为true,执行语句1;否则执行语句2。图2-5 if else语句流程图if语句形式:if(表达式) 语句例2-2 输入一个年份,判断是否闰年。分析:闰年满足:能被4整除且不能被100整除,或能被400整除。先输入年份到year中,若( ( year%4=0 & year100 != 0 ) | ( year % 400 = 0 ) )为true,为闰年;否则非闰年。#include void main(void)int year;bool IsLeapYear;coutyear;IsLeapYear=(year%4=0 & year%100 != 0) | (year % 400 = 0 );if(IsLeapYear)coutyear年是闰年。endl;elsecoutyear年非闰年。 y, x y。因此需多次判断,要用多重选择结构,选用嵌套的if else语句。#include void main( )int x,y;coutxy;if(x!=y)if(xy)coutyendl;elsecoutxyendl;else
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 文化创意产品研发资金申请2025年政策扶持与产业升级策略报告
- 2025年新能源汽车废旧电池回收处理技术及案例分析报告
- 2025年生物科技行业可持续发展目标(SDGs)实践与产业融合报告
- 煤炭清洁高效燃烧技术在煤炭洗选加工中的应用与发展报告
- 医疗器械临床试验质量管理与规范化2025年发展趋势研究报告
- 2025年建筑信息模型(BIM)在施工全过程精细化管理中的应用策略报告
- 工业互联网平台量子密钥分发技术在智慧医疗领域的应用与挑战报告
- 2025年电商平台内容营销与种草经济产业链研究报告
- 深度解析:2025年工业互联网平台AR交互技术在制造领域的应用创新报告
- 绿色环保产业资金申请政策变化与应对策略报告2025
- 2025麒麟卷 地理(一)
- 2024年杭州市临安区事业单位统一招聘真题
- T/GDWJ 011-20225G+院前急救服务应用平台技术规范
- 房屋建筑与市政工程重大事故安全隐患判定标准解读课件
- 公司税务注销协议书
- 放射科实习生入科教育
- 公务员会计岗位考试题及答案
- 安徽教编美术试题及答案
- 国家开放大学国开电大《幼儿园课程基础》形考任务1~4答案
- 2024-2025湘科版小学科学四年级下册期末考试卷附参考答案
- 2025年安全生产月主题培训课件
评论
0/150
提交评论