




已阅读5页,还剩4页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验1 编程入门【知识点回顾】1. C+与C的关系:1) C+语言本身和C一样都没有提供输入输出语句,因此每个编译系统都在随编译器一起发布的标准库中提供了各种实现输入输出功能的函数或对象或类,C+输入输出库的头文件为iostream.h,不再是stdio.h,cin是C+编译系统预定义的一个提供输入功能的全局对象,cout是C+编译系统预定义的一个提供输出功能的全局对象2) C+是在C语言基础上发展起来的,在C语言的基础上添加了很多支持面向对象编程的语言特征,从而使其兼容了C的所有特征,是的以前使用C代码编写的程序可以在C+的环境中编译和运行。3) C+程序和C程序的执行都是从程序文件的main函数开始,到main函数结束。2. 结构化程序设计(structured programming,SP):1) 结构化程序设计是指“按照一组能够提高程序易读性与易维护性的规则进行程序设计的方法”(F.T.Baker)。它不仅要求所编出的程序结构良好,而且要求程序设计过程也是结构良好,后者是前者的基础。2) 程序结构良好是指每个程序单位应具有单入口、单出口的性质、程序中不包含不会停止执行的语句,程序一定在有限时间内结束、程序中没有无用语句,程序中所有语句都有被执行的机会。3) 程序设计过程结构良好是指采用分解和抽象的方法来完成程序设计任务,它具体体现为“自顶向下、逐步精化”的程序设计过程。即,对于复杂问题,通过问题分解逐步降低复杂度,该分解过程一直到分解出的子问题足够简单,能够容易地写出程序为止。采用这种方法的好处是程序易于设计、编写、阅读、调试和维护,也易于保证和验证程序的正确性。3. 面向对象(Object-oriented):1) 面向对象是一种编程思想,各种语言实现面向对象思想的具体技术和方式可能不同。2) 面向对象,即创建和现实世界中相对应或相近的对象,在计算机中通过对象间的动态交互来模拟现实世界。3) 对象人、动物、植物、骑车、飞机、建筑物、计算机等都有属性(如大小,形状,颜色,重量等)和行为或动作,不同对象可以具有相似的属性和行为。4) 面向对象设计(Object-oriented design,OOD)使用人们描述现实世界的方法对软件进行建模,OOD采用自然而本能的方式对待软件设计过程,通过描述对象的属性、行为和相互关系来对对象建模。此外,OOD还模拟对象之间的通信,OOD将属性和行为操作封装打包在对象中。5) 面向对象的编程(Object-oriented programming,OOP),即程序员将一个面向对象的设计实现为一个运转的系统。C+中,编程的单位是类(class),类最终要实例化(即创建对象,OOP术语)为对象。而C语言是过程性(procedural)的,C编程面向动作,其编程单位为函数(function)。6) 面向对象分析和设计(object-oriented analysis and design,OOAD),是从面向对象的角度,分析项目需求,开发并实现最佳解决方案的全过程。4. 统一建模语言(Unified Modeling Language,UML):1) UML是目前应用最广泛的、用于面向对象系统建模的图形表示语言。2) UML可扩展,独立于任何特殊的OOAD过程却可以清晰表达任何OOAD过程结果的图形化语言。3) UML采用各种类型的图示,分别描述软件模型的结构、行为,以及模块组织的管理。5. 程序设计:1) 程序设计的目标是在正确的前提下,其重要性排列顺序依次为:可读、可维护、可移植、高效率。2) 程序设计的原则:当程序由多个函数组成时,为了便于代码的复用和程序的组织管理,通常采用接口和实现分离的原则。6. 数据类型:1) C+把数据类型分为基本数据类型、构造数据类型和抽象数据类型。2) 基本数据类型包括整型、实型、字符类型、逻辑类型、空值类型。3) 构造数据类型包括枚举类型、数组类型、结构和联合类型、指针类型、引用类型。4) 抽象数据类型包括类以及派生类。7. 重载函数:1) 同一文件或者类中可以出现相同名称的函数,只要这些函数具有不同的参数列表即可(参数个数不同,或者参数类型不同)。2) 调用重载函数时,必须要明确调用的是哪一个函数。这个确定的过程成为绑定(binding,又称定联、联编、捆绑)。3) C+对于重载函数调用的绑定是在编译时刻由编译程序根据实参与形参的匹配情况来决定的。也被称为静态联编、静态绑定。8. 带默认形参值的函数:1) 函数声明中,若形参带有默认参数值,则允许在调用函数时省略该实参。2) 当函数既有声明又有定义时,则默认参数值在函数声明中定义,函数定义中不允许设定默认参数值。3) 默认参数的顺序规定,如果仅有一部分参数定义有默认参数值,则应从形参列表右端起逐个设定默认参数值。4) 对带有默认参数值的函数调用通常是在编译时确定的,因此规定默认参数的初始化值可以是全局变量、全局常量或一个函数。由于局部变量在编译时还不能确定其值,因此默认参数的初始化值不能是局部变量。9. 内联函数:1) 在函数声明之前加有关键字inline,其作用是提高函数的调用效率。2) 内联函数不是在调用时发生控制转移(程序跳转),而是在编译时,将函数体嵌入在每一个调用处。通过这样节省参数传递、控制转移等开销。3) 使用内联时应该注意三点:第一内联函数体内一般不能有循环语句和swtich语句,递归函数一般也不能作为内联函数实现;第二内联函数的定义必须出现在第一次被调用之前,第三对内联函数不能进行异常接口声明。4) inline关键字只是表示一个要求,编译器并不承诺将inline函数作为内联,而没有inline关键字的函数也可能被编译为内联函数。【典型例题】1. 例题1,两数相加 #include int main()/变量声明int number1;int number2;int sum;/数据输入cout number1;cout number2;/计算sum = number1 + number2;/数据输出cout Sum is sum endl;return 0;程序运行效果如下:2. 例题2,参数类型不同的重载函数#include using namespace std;/同名函数定义,注意两个函数的参数类型不同int square(int i)return i*i;double square(double d)return d*d;int main()int edge1 = 3;double edge2 =2.14;cout edge1 = edge1 : square = square(edge1)endl;/根据实参类型调用函数cout edge2 = edge2 : square = square(edge2)endl;/根据实参类型调用函数return 0;程序运行效果如下:3. 例题3,参数个数不同的重载函数#include using namespace std;/同名函数定义,注意两个函数的参数个数不同int square(int i)return i*i;int square(int length,int width)return length*width;int main()int edge1 = 3, edge2 = 2;cout square( edge1 ) = square(edge1)endl;/根据实参个数调用单参函数cout square( edge1 , edge2 ) = square(edge1,edge2)endl;/根据实参个数调用双参函数return 0;程序运行效果如下:4. 例题4,带有默认值的参数#include using namespace std;/若形参带有默认参数值,需在函数声明中说明,而不能在函数定义处int vol(int length, int width=20, int height=5 );int main()int l=10, w=8, h=2;/若有明确实参,使用实参值,否则使用形参默认值cout 三参调用: vol(l, w, h) endl;cout 两参调用: vol(l,w) endl;cout 单参调用: vol(l) endl;return 0;int vol(int length, int width, int height )return length*width*height;程序运行效果如下:5. 例题5,内联函数#include inline int Double(int);void main()int target;cout target;target = Double(target);cout target: target endl;target = Double(target);cout target: target endl;target = Double(target);cout target: target endl;int Double(int target)return 2* target;程序运行效果如下:【Q&A】1. Q:C+中有哪几种指定常量的方法?A:有三种:第一种,字面常量:如123,12.3f,A,hello等,这些常量直接存储在指令中;第二种,宏定义符号常量:#define N 10等;第三种,const定义常量,如const float PI=3.14等。2. 使用#define定义的常量和const常量有何区别?A:第一,#define可以定义符号常量,包括数字常量、字符常量或者字符串常量;const可用于产生任何类型的只读对象,包括常量数组、常量指针、常量对象等。第二,const类型的对象遵循和变量相同的作用域规则,用#define定义的常量不遵守这些规则。特别是,不能用#define定义具有块作用域的常量。第三,和宏定义#define不同的是,可以在调试器中看到const对象的值。第四,与宏定义#define不同的是,C语言中不可以把const对象用于常量表达式中(比如要求常量表达式的数组声明中,数组长度不能使用const常量),但在C+中被改进为允许。3. Q:什么是左值和右值?A:左值(left value)是指能够出现在赋值运算左侧的表达式,由于涉及到内存写入操作,左值一般表示一个内存空间,而且是可写入的,即变量空间。所以,常量不能 作左值。右值(right value)是指能够出现在赋值表达式右侧的表达式。所涉及的内存访问通常为读出操作,所以任何返回类型和左值相同的表达式都可以作为右值。左值也可以作为右值。4. Q:如果函数的参数列表中要设定默认值,应该遵循什么原则?A:首先,应该在函数声明(函数原型)中为形参设定默认值,其次,形参列表中,设置默认值必须遵守从右到左的顺序原则。5. Q:通常释放动态分配空间后,还需要将指针设置为NULL吗?A:需要。该操作将使得该指针与自由存储区之前分配的空间完全失去联系。事实上,该空间虽然已被释放,但信息依旧留存,通过设置该指针为NULL,程序才能失去对该空间的访问能力。若未将该指针置NULL,则可能造成这些信息的泄露或导致诡异的、不可重复的逻辑错误。【实验内容】1. 关于三角形面积的计算,有两种计算方式:1/2*底(edge)*高(height);或者海伦公式(已知三边a,b,c,则p=(a+b+c)/2, s=)计算。试撰写重载函数Area,提供这两种计算方式,然后测试之。2. 编写程序,主函数中声明三个变量,调用输入函数input从键盘接收三个数据,存入这三个变量中,再调用findMax函数找出三数中最大的数,最后于主函数中将最大的数输出到屏幕上。3. 设计程序,利用提供的结构体类型实现图示部分typedef struct tagStudentint num;int math;char *name;Student;【课后练习】1. 判断题:1) C和C+都是一种面向对象的编程语言。X2) C+语言是一种解释方式的高级语言。X3) C+程序中,通常使用const来定义符号常量,定义时必须指出类型。Y4) 函数可以设置默认的参数值,默认参数值必须设置在函数声明的形参上。Y5) 没有参数的两个函数不可能重载。Y2. 选择题:1) 下面各种语言中,不是面向对象程序设计语言的是 D 。A. Java B. C# C. C+ D. C2) 一个C+程序的执行是 A 。A. 从本程序的main函数开始,到main函数结束。B. 从本程序文件的第一个函数开始,到本程序文件最后一个函数结束。C. 从本程序文件的main函数开始,到本程序文件的最后一个函数结束。D. 从本程序文件的第一个函数开始,到本程序文件的main函数结束。3) 语句cout 4? y:n);的输出结果是 B 。A. 1 B. y C. n D. 不确定4) 下列语句中错误的是 C 。A. int * p = new int (10);B. int * p = new int 10;C. int * p = new int 10(10);D. int * p = new int;5) 系统约定C+源程序文件名的默认扩展名为 A 。A. .cppB. c+ C. .bccD. .obj6) 适合采用内联函数的情况为 A 。A. 函数代码小,频繁调用B. 函数代码多,频繁调用C. 函数体含有递归语句D. 函数体含有循环语句7) 关于函数设置默认参数值,说法正确的是 B 。A. 不允许设置默认参数值。B. 在指定了默认值的参数右边,不能出现没有指定默认值的参数。C. 只能在函数的定义中指定参数的默认值。D. 设置默认参数值时,必须全部都设置。8) UML主要用于 B 。A. 测试面向对象系统B. 设计面向对象系统C. 实现面向对象系统D. 维护面向对象系统3. 填空题:1) 面向对象方法具有三大特征 继承 、 封装 、 多态 。2) 建立源代码后,首先把源代码 编译 成.obj后缀的 目标 文件,再 生成 .obj文件和任何需要的 库文件 ,生成 程序。3) endl的目的是 换行 。4) typedef关键字的作用是 重命名各数据类型 ,并非创建新数据类型。5) VC6.0环境下,short int型数据占用 2 字节空间,int型数据占用 4 字节
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 应急安全培训咨询课件
- 2025年甘肃中医药大学附属医院(第三期)考核招聘编外专业技术人考前自测高频考点模拟试题及答案详解(新)
- 2023山东省蓬莱市北师大版7年级数学上册期中考试黑钻押题附参考答案详解(巩固)
- 2024年自考专业(国贸)高分题库【名师系列】附答案详解
- 承兑汇票购销合同(标准版)
- 设立分公司合同(标准版)
- 2025年度生态环境部松辽流域生态环境监督管理局生态环境监测与科考前自测高频考点模拟试题及答案详解(必刷)
- 2025年公务员考试《常识》检测卷附参考答案详解【轻巧夺冠】
- 2025年工业互联网平台射频识别(RFID)技术在物流行业应用深度研究报告
- 2025年文化产业园产业集聚与文化产业发展政策环境报告
- 福建台湾海峡大桥建设工程可行性研究报告
- (完整)注册安全工程师考试题库(含答案)
- 高考作文素材积累与写法总结27 自知与知人作文审题指导及素材积累
- 电子政务概论-形考任务5(在线测试权重20%)-国开-参考资料
- 2024年贵州省贵阳市中考生物地理合卷试题(含答案逐题解析)
- DNDC模型使用手册
- 起重机械生产单位质量安全总监-特种设备考试题库
- JBT 9189-2016 水基材料防锈试验方法 铸铁屑试验
- JJF 1064-2024 坐标测量机校准规范
- 《春江花月夜》省公开课金奖全国赛课一等奖微课获奖课件
- 人音版小学六年级上册音乐教案(本)
评论
0/150
提交评论