【C++学习第五讲】第一章总结 + 复习题(十一道)

2023-11-11

目录:第一章总结

一、总结

C++程序由一个或多个被称为函数的模块组成。程序从main( )函数(全部小写)开始执行,因此该函数必不可少。

函数由函数头和函数体组成。

  1. 函数头指出函数的返回值(如果有的话)的类型和函数期望通过参数传递给它的信息的类型。

  2. 函数体由一系列位于花括号({})中的C++语句组成。

有多种类型的C++语句,包括下述6种:

  1. 声明语句:定义函数中使用的变量的名称和类型

  2. 赋值语句:使用赋值运算符(=)给变量赋值

  3. 消息语句:将消息发送给对象,激发某种行动

  4. 函数调用:执行函数。被调用的函数执行完毕后,程序返回到函数调用语句后面的语句

  5. 函数原型:声明函数的返回类型、函数接受的参数数量和类型

  6. 返回语句:将一个值从被调用的函数那里返回到调用函数中

类是用户定义的数据类型规范,它详细描述了如何表示信息以及可对数据执行的操作。对象是根据类规范创建的实体,就像简单变量是根据数据类型描述创建的实体一样。

C++提供了两个用于处理输入和输出的预定义对象(cin和cout),它们是istream和ostream类的实例,这两个类是在iostream文件中定义的。

为ostream类定义的插入运算符(<<)使得将数据插入到输出流成为可能;

为istream类定义的抽取运算符(>>)能够从输入流中抽取信息。

cin和cout都是智能对象,能够根据程序上下文自动将信息从一种形式转换为另一种形式。

C++可以使用大量的C库函数。要使用库函数,应当包含提供该函数原型的头文件。

二、复习题

1. C++程序的模块叫什么?

C++程序设计中的模块的主要形式是函数。

函数是由多条语句组合而成的能够实现特定功能的代码模块。函数的主要作用是在程序设计过程中实现特定功能的代码的重用,提高编程的效率和可维护性。当程序员需要反复使用相同功能的代码时,可以首先声明一个函数,将这部分代码定义为一个函数,最后通过调用该函数就可以重复执行函数的特定功能,而不用多次重复编写相同的代码来实现的类似的功能。

2. 下面的预处理器编译指令的功能是什么?

#include <iostream>

#include预处理器指令的主要功能是在编译器进行源代码的编译过程之前,添加或者替换相应的预编译指令,从而使得用户源代码中调用的系统预定义函数和各种标识符能够正确地被编译器识别和编译。

#include <iostream>表示的含义是将#iostream头文件添加到当前源代码中,iostream头文件主要包含了系统的标准输入、输出函数以及数据的声明和定义。

3. 下面的语句的功能是什么?

using namespace std;

using预编译器指令的主要功能是表明当前源代码文件中使用的名称空间std。

名称空间是C++语言中为了解决编写大型程序时,多个厂商的独立C++代码在标识符命名过程中可能会发生冲突的一个解决方案。

不同供应商的代码模块都有自己的名称空间,用户在使用这个模块时也需要明确标准自己使用的是哪一个厂商的代码模块。using预编译指令就是实现这个功能的语句。

4. 什么语句可以用来输出“hello,world!",然后开始新的一行?

C++中输出到屏幕是通过cout和重定向符号<<实现的,输出的短语是字符串,应当使用双引号将字符串括起来,这里使用以下的语句。

cout << "hello,world!";

C++语言中字符串的输出是从左到右的,在当前行末尾自动换行,如果想要手动开始新的一行,需要使用换行符,换行符可以使用字符”\n“,也可以使用C++中的控制符endl来表示,其中两者的用法略有区别:

  1. 字符”\n“需要嵌入字符串

  2. endl需要单独使用重定向符来表示

如:

cout << "hello,world!\n";

等价于:

cout << "hello,world!" << endl;

其中cout和endl两个标识符都是定义在std这个名称空间中的,因此在使用时需要加using预编译指令。

5. 什么语句可以用来创建名为cheeses的整形变量?

变量是C++语言中用符号标识计算机存储区域内特定单元的一种方式。通过变量程序可以进行指定类型数据的访问和存储。C++中变量的声明和定义需要首先确定变量的名称,变量的命名应当符合C++标准中标识符的命名规范。

本题中明确变量名为cheeses,其次变量的定义需要指明变量的数据类型,C++表示整形的关键字为int。

因此该语句为:

int cheeses;

6. 什么语句可以用来将值32赋给变量cheeses?

对指定变量进行数据存储应当使用赋值语句,赋值语句中的核心运算符是赋值运算符(=)。

赋值语句中待写入数据的变量在赋值运算符左侧,待写入数据在赋值运算符右侧,且左右两侧应当保证类型相同。

本题应当保证cheeses是整型变量。语句末尾应当有分号。因此,该赋值语句为:

cheeses = 32;

7. 什么语句可以用来将从键盘输入的值读入变量cheeses中?

C++中通过系统标准输入\输出进行数据的输出和读取,读取使用cin对象和插入运算符(>>)符号。把标准输入数据读入变量cheeses中的语句为:

cin >> cheeses;

8. 什么语句可以用来输出"we have x varieties of cheeses",其中x是变量cheeses的当前值。

C++中的标准输出操作可以通过cout对象来实现。cout对象可以通过多个输出插入运算符(<<)连接,实现输出数据的拼接,因此当需要使用多组数据统一输出时可以使用多个插入运算符组合输出语句,这里使用以下语句。

cout << "we have " << cheeses << " varieties of cheeses" << endl;

此外,我们在程序中也可以拆分多条输出信息,使用多个cout对象分别输出。标准输出中除非输出换行符,或者当前行信息已满,否则多个cout对象的输出也在同一行内,例如,下面的语句等价于上一条语句:

cout << "we have ";
cout << cheeses;
cout << " varieties of cheeses";
cout << endl;

9. 下面的函数原型指出了关于函数的哪些信息?

int froop(double t);
void rattle(int n);
int prunt(void);

C++函数原型主要包含三方面的内容,分别是函数名、参数值和返回值,因此三个函数的主要信息如下:

  1. 第一个函数原型表明函数名为froop;函数的返回值是整型;函数有一个参数,参数的数据类型是double;

  2. 第二个函数原型表明函数名为rattle;函数没有返回值;该函数有一个参数,参数的数据类型是整型;

  3. 第三个函数原型表明函数名为prunt;函数的返回值是整型;函数没有参数。

10. 定义函数值,什么情况下不必使用关键字return?

return关键字表示函数返回语句,通常情况下当函数执行到第一条return语句时,函数就结束运行并且将return后的变量值返回给函数调用者。主调函数继续执行调用函数之后的下一条语句。通常当函数返回值为空(void)时,可以不需要return语句,函数的语句会依次执行到函数体的最后一条语句。

11. 假设你编写的main函数包含如下代码,而编译器指出cout是一个未知的标识符,导致这种问题的原因很可能是什么?指出3种修复这种问题的方法。

cout << "please enter your PIN:";

cout 是C++预定义的一个标准输出对象,当调用该对象进行标准输入/输出操作时,可以使用预编译指令using将该名称空间预编译到当前源代码中。

此外,也可以对cout对象的名称空间进行限制,即表明cout所在的名称空间,这样编译器就可以正确识别、查找到该对象的定义并使用它进行输入、输出操作。因此可以使用如下三种方法进行声明:

  1. 使用预编译器指令声明:
using namespace std;
  1. 使用using声明,仅声明cout的名称空间,cin,endl等其他对象需要再次声明
using std::endl;
  1. 直接指明使用std::前缀表明了cout所在的名称空间
std::cout << "please enter your PIN:";
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【C++学习第五讲】第一章总结 + 复习题(十一道) 的相关文章

  • 如何将非静态类成员“std::bind”绑定到 Win32 回调函数“WNDPROC”?

    我正在尝试将非静态类成员绑定到标准WNDPROC http msdn microsoft com en us library ms633573 aspx功能 我知道我可以通过将类成员设为静态来简单地做到这一点 但是 作为一名 C 11 ST
  • 在 DataView 的 RowFilter 中选择 DISTINCT

    我试图根据与另一个表的关系缩小 DataView 中的行范围 我使用的 RowFilter 如下 dv new DataView myDS myTable id IN SELECT DISTINCT parentID FROM myOthe
  • ClickOnce 应用程序错误:部署和应用程序没有匹配的安全区域

    我在 IE 中使用 FireFox 和 Chrome 的 ClickOnce 应用程序时遇到问题 它工作正常 异常的详细信息是 PLATFORM VERSION INFO Windows 6 1 7600 0 Win32NT Common
  • C中的malloc内存分配方案

    我在 C 中尝试使用 malloc 发现 malloc 在分配了一些内存后浪费了一些空间 下面是我用来测试 malloc 的一段代码 include
  • 复制目录内容

    我想将目录 tmp1 的内容复制到另一个目录 tmp2 tmp1 可能包含文件和其他目录 我想使用C C 复制tmp1的内容 包括模式 如果 tmp1 包含目录树 我想递归复制它们 最简单的解决方案是什么 我找到了一个解决方案来打开目录并读
  • 单个对象的 Monogame XNA 变换矩阵?

    我读过一些解释 XNA Monogame 变换矩阵的教程 问题是这些矩阵应用于 SpriteBatch Begin matrix 这意味着所有 Draw 代码都将被转换 如何将变换矩阵应用于单个可绘制对象 就我而言 我想转换滚动背景 使其自
  • 如何创建包含 IPv4 地址的文本框? [复制]

    这个问题在这里已经有答案了 如何制作一个这样的文本框 我想所有的用户都见过这个并且知道它的功能 您可以使用带有 Mask 的 MaskedTestBox000 000 000 000 欲了解更多信息 请参阅文档 http msdn micr
  • 回发后刷新时提示确认表单重新提交。我做错了什么?

    我有一个以空白 默认状态启动的仪表板 我让用户能够将保存的状态加载到仪表板中 当他们单击 应用 按钮时 我运行以下代码 function CloseAndSave var radUpload find radUpload1ID var in
  • 如何使用 LINQ2SQL 连接两个不同上下文的表?

    我的应用程序中有 2 个数据上下文 不同的数据库 并且需要能够通过上下文 B 中的表的右连接来查询上下文 A 中的表 我该如何在 LINQ2SQL 中执行此操作 Why 我们正在使用 SaaS 产品来跟踪我们的时间 项目等 并希望向该产品发
  • 将 Word 文档另存为图像

    我正在使用下面的代码将 Word 文档转换为图像文件 但是图片显得太大 内容不适合 有没有办法渲染图片或将图片保存到合适的尺寸 private void btnConvert Click object sender EventArgs e
  • qdbusxml2cpp 未知类型

    在使用 qdbusxml2cpp 程序将以下 xml 转换为 Qt 类时 我收到此错误 qdbusxml2cpp c ObjectManager a ObjectManager ObjectManager cpp xml object ma
  • 标准化 UTF-8 到底是什么?

    The 重症监护室项目 http userguide icu project org transforms normalization 现在也有一个PHP库 http us php net manual en class normalize
  • 如何检测表单的任何控件的变化?

    如何检测 C 中表单的任何控件的更改 由于我在一个表单上有许多控件 并且如果表单中的任何控件值发生更改 我需要禁用按钮 我正在寻找一些内置函数 事件处理程序 属性 并且不想为此创建自定义函数 不 我不知道任何时候都会触发任何事件any控制表
  • 为什么 std::strstream 被弃用?

    我最近发现std strstream已被弃用 取而代之的是std stringstream 我已经有一段时间没有使用它了 但它做了我当时需要做的事情 所以很惊讶听到它的弃用 我的问题是为什么做出这个决定 有什么好处std stringstr
  • “接口”类似于 boost::bind 的语义

    我希望能够将 Java 的接口语义与 C 结合起来 起初 我用过boost signal为给定事件回调显式注册的成员函数 这非常有效 但后来我发现一些函数回调池是相关的 因此将它们抽象出来并立即注册所有实例的相关回调是有意义的 但我了解到的
  • 将 MQTTNet 服务器与 MQTT.js 客户端结合使用

    我已经启动了一个 MQTT 服务器 就像this https github com chkr1011 MQTTnet tree master例子 该代码托管在 ASP Net Core 2 0 应用程序中 但我尝试过控制台应用程序 但没有成
  • 为什么 gcc 抱怨“错误:模板参数 '0' 的类型 'intT' 取决于模板参数”?

    我的编译器是gcc 4 9 0 以下代码无法编译 template
  • C++ 函数重载类似转换

    我收到一个错误 指出两个重载具有相似的转换 我尝试了太多的事情 但没有任何帮助 这是那段代码 CString GetInput int numberOfInput BOOL clearBuffer FALSE UINT timeout IN
  • 如何部署“SQL Server Express + EF”应用程序

    这是我第一次部署使用 SQL Server Express 数据库的应用程序 我首先使用实体 框架模型来联系数据库 我使用 Install Shield 创建了一个安装向导来安装应用程序 这些是我在目标计算机中安装应用程序所执行的步骤 安装
  • 我的班级应该订阅自己的公共活动吗?

    我正在使用 C 3 0 遵循标准事件模式我有 public event EventHandler

随机推荐

  • vue element UI图片上传到fastDFS 前/后台实现图片显示

    第一次开发element图片上传 到网上找了很多例子 感觉不全面 所以才写了这篇文章 希望帮助新手快速开发 vue 使用element实现本地预览 最主要的是将图片路径转换为base64 VUE HTML
  • STM32 江协教程 EXTI外部中断(对射式红外传感器计次、旋转编码器计次)笔记补充 旋转编码器判断方向的两种实现方法记录

    这里是看了江协STM32 EXTI中断视频并配合笔记STM32学习笔记 三 丨中断系统丨EXTI外部中断 对射式红外传感器计次 旋转编码器计次 后的一点小补充 方法一 一方下降沿同时查看另一方电平 以A为例 A下降时若B为高电平则为正向 A
  • Pandas 分类数据

    category的创建及其性质 分类变量的创建 a 用Series创建 pd Series a b c a dtype category 得出 0 a 1 b 2 c 3 a dtype category Categories 3 obje
  • 记录一下QM检验批接口,回头补细节

    method ZQM II SI SPCD REC SI SPCD PROCSS INSERT IMPLEMENTATION HERE gt 数据定义部分 TYPES BEGIN OF ty qamv prueflos TYPE qamv
  • 子类继承父类的所有属性和方法_Python 继承

    目标 单继承 多继承 面向对象三大特性 封装 根据 职责 将 属性 和 方法 封装 到一个抽象的 类 中 继承 实现代码的重用 相同的代码不需要重复的编写 多态 不同的对象调用相同的方法 产生不同的执行结果 增加代码的灵活度 01 单继承
  • C语言 进程通信-消息队列(MSG)

    创建消息队列的的步骤 1 获取key值ftok key t key ftok home 123 if key gt 0 perror 获取成功 else perror 获取失败 注意 2 获取消息队列ID 此时消息队列已经在内核中创建完成了
  • 第二十四篇 DenseNet——模型讲解

    文章目录 摘要 Dense Block 网络架构详解 输入层 第一个Block和Transition Layer 第二个Block和Transition Layer 第三个Block和Transition Layer 第四个Block 输出
  • JVM && 软件测试的目的和原则 && Spring基本概念 && 项目创建 && 软件测试的生命周期 && SpringBoot创建和运行 && Bean作用域

    第 1 题 多选题 题目名称 以下哪些属于 JVM 题目内容 A JRockit B HotSpot C V8Worker D Clang 第 2 题 单选题 题目名称 在代码中创建一个 java lang String 这样的类 这个类最
  • 关键元器件器件选型设计指引--LED

    前言 LED 发光二极管 是一种将电能转换为光能的固体电致发光器件 由于具有体积小 重量轻 工作电压低 耗能低 响应时间短 寿命长 抗震性能好等优点 LED得到广泛的应用 在网通 数通领域 LED应用于指示功能 功能主要包括 Power L
  • 百度后台开发类笔试题2014校园招聘 武汉站

    软件开发试题 1 简答题 1 说明动态链接库和静态链接库的区别 2 轮询任务调度和抢占式任务调度的特点 3 简要说明数据库锁机制以及描述 2 算法题 1 给出任意一个正整数 算出大于它的最小不重复数 即不存在相邻两个数相同的情况 2 给出一
  • 超详细!Jmeter性能测试

    前言 性能测试是一个全栈工程师 架构师必会的技能之一 只有学会性能测试 才能根据得到的测试报告进行分析 找到系统性能的瓶颈所在 而这也是优化架构设计中重要的依据 测试流程 需求分析 环境搭建 测试计划 脚本开发 执行与监控 缺陷管理 结果与
  • 电磁屏蔽知多少?

    原文来自公众号 工程师看海 不管什么电子产品 EMC始终是其需要面对的问题 EMC全拼是Electromagnetic Compatibility即电磁兼容性 EMC分为EMS electromagnetic susceptibility
  • 【docker】dcoker-compose介绍

    文章目录 前言 一 Docker compose简介 1 docker compose基础概念 2 为什么要使用docker compose 二 YAML文件格式及编写注意事项 1 YAML文件格式 2 YAML格式的注意事项 3 YAML
  • 15.Xaml StackPanel控件 -->堆栈面板

    1 运行效果 2 运行源码 a Xaml源码
  • AIX7.1安装中文字符集

    为了安装中文字符集找了n多文章 下载n多安装包 就是没有一个好用的 所以跑官网上查询一翻 官网地址 https www ibm com support knowledgecenter zh ssw aix 71 install insgdr
  • 密码学的一些基本概念

    密码学是研究如何隐密地传递信息的学科 密码学的作用 机密性 是网络信息不泄露给非授权用户的特性 防止被动攻击 常用的保密技术包括 防侦听 防辐射 信息加密 物理保密等 完整性 完整性是网络信息未经授权不能进行改变的特性 完整性是一种面向信息
  • win7右键没有新建文本文档怎么办

    第一种方法 打开 开始 在搜索框内输入CMD 或者按快捷键WIN图标 R 复制reg add HKEY CLASSES ROOT txt ve d txtfile f 回车运行 再复制粘贴reg add HKEY CLASSES ROOT
  • numpy中设置始终使用定点表示法显示小数

    默认numpy会在某些情况触发科学计数法显示 scientific notation is used when absolute value of the smallest number is lt 1e 4 or the ratio of
  • 前置++和后置++的区别

    今天在阅读 google c 编程风格 的文档的时候 5 10 前置自增和自减 有一句话引起了我的注意 对于迭代器和其他模板对象使用前缀形式 i 的自增 自减运算符 理由是 前置自增 i 通常要比后置自增 i 效率更高 于是我查了查前置 和
  • 【C++学习第五讲】第一章总结 + 复习题(十一道)

    目录 第一章总结 一 总结 二 复习题 1 C 程序的模块叫什么 2 下面的预处理器编译指令的功能是什么 3 下面的语句的功能是什么 4 什么语句可以用来输出 hello world 然后开始新的一行 5 什么语句可以用来创建名为chees