首页 > 其他分享 >练习 -- 第四章

练习 -- 第四章

时间:2024-11-23 22:49:21浏览次数:6  
标签:-- 练习 ++ 运算符 int 第四章 ival 表达式

练习4.1

表达式5 + 10 * 20 / 2的求值结果是多少?

练习4.2

根据4.12节中的表,在下述表达式的合理位置添加括号,使得添加括号后运算对象的组合顺序与添加括号前一致。 (a) *vec.begin() (b) *vec.begin() + 1

练习4.3

C++语言没有明确规定大多数二元运算符的求值顺序,给编译器优化留下了余地。这种策略实际上是在代码生成效率和程序潜在缺陷之间进行了权衡,你认为这可以接受吗?请说出你的理由。

练习4.4

在下面的表达式中添加括号,说明其求值过程及最终结果。编写程序编译该(不加括号的)表达式并输出结果验证之前的推断。

12 / 3 * 4 + 5 * 15 + 24 % 4 / 2

练习4.5

写出下列表达式的求值结果。

练习4.6

写出一条表达式用于确定一个整数是奇数还是偶数。

练习4.7

溢出是何含义?写出三条将导致溢出的表达式。

练习4.8

说明在逻辑与、逻辑或及相等性运算符中运算对象的求值顺序。

练习4.9

解释在下面的if语句中条件部分的判断过程。

const char *cp = "Hello World";
if (cp && *cp)

练习4.10

while循环写一个条件,使其从标准输入中读取整数,遇到42时停止。

练习4.11

书写一条表达式用于测试4个值a、b、c、d的关系,确保a大于b、b大于c、c大于d。

练习4.12

假设i、jk是三个整数,说明表达式i != j < k的含义。

练习4.13

在下述语句中,当赋值完成后 i 和 d 的值分别是多少?

练习4.14

执行下述 if 语句后将发生什么情况?

练习4.15

下面的赋值是非法的,为什么?应该如何修改?

练习4.16

尽管下面的语句合法,但它们实际执行的行为可能和预期并不一样,为什么?应该如何修改?

练习4.17

说明前置递增运算符和后置递增运算符的区别。

练习4.18

如果132页那个输出vector对象元素的while循环使用前置递增运算符,将得到什么结果?

练习4.19

假设ptr的类型是指向int的指针、vec的类型是vectorival的类型是int,说明下面的表达式是何含义?如果有表达式不正确,为什么?应该如何修改?

(a) ptr != 0 && *ptr++  
(b) ival++ && ival
(c) vec[ival++] <= vec[ival] 

练习4.20

假设iter的类型是vector<string>::iterator, 说明下面的表达式是否合法。如果合法,表达式的含义是什么?如果不合法,错在何处?

(a) *iter++;
(b) (*iter)++;
(c) *iter.empty();
(d) iter->empty();
(e) ++*iter;
(f) iter++->empty();

练习4.21

编写一段程序,使用条件运算符从vector中找到哪些元素的值是奇数,然后将这些奇数值翻倍。

练习4.22

本节的示例程序将成绩划分为high pass、passfail 三种,扩展该程序使其进一步将 60 分到 75 分之间的成绩设定为low pass。要求程序包含两个版本:一个版本只使用条件运算符;另一个版本使用1个或多个if语句。哪个版本的程序更容易理解呢?为什么?

练习4.23

因为运算符的优先级问题,下面这条表达式无法通过编译。根据4.12节中的表指出它的问题在哪里?应该如何修改?

string s = "word";
string pl = s + s[s.size() - 1] == 's' ? "" : "s" ;

练习4.24

本节的示例程序将成绩划分为high pass、pass、和fail三种,它的依据是条件运算符满足右结合律。假如条件运算符满足的是左结合律,求值的过程将是怎样的?

练习4.25

如果一台机器上int占32位、char占8位,用的是Latin-1字符集,其中字符'q' 的二进制形式是01110001,那么表达式~'q' << 6的值是什么?

练习4.26

在本节关于测验成绩的例子中,如果使用 unsigned int 作为 quiz1 的类型会发生什么情况?

练习4.27

下列表达式的结果是什么?

unsigned long ul1 = 3, ul2 = 7;
(a) ul1 & ul2 
(b) ul1 | ul2 
(c) ul1 && ul2
(d) ul1 || ul2 

练习4.28

编写一段程序,输出每一种内置类型所占空间的大小。

练习4.29

推断下面代码的输出结果并说明理由。实际运行这段程序,结果和你想象的一样吗?如不一样,为什么?

int x[10];   int *p = x;
cout << sizeof(x)/sizeof(*x) << endl;
cout << sizeof(p)/sizeof(*p) << endl;

练习4.30

根据4.12节中的表,在下述表达式的适当位置加上括号,使得加上括号之后的表达式的含义与原来的含义相同。

(a) sizeof x + y      
(b) sizeof p->mem[i]  
(c) sizeof a < b     
(d) sizeof f() 

练习4.31

本节的程序使用了前置版本的递增运算符和递减运算符,解释为什么要用前置版本而不用后置版本。要想使用后置版本的递增递减运算符需要做哪些改动?使用后置版本重写本节的程序。

练习4.32

解释下面这个循环的含义。

constexpr int size = 5;
int ia[size] = { 1, 2, 3, 4, 5 };
for (int *ptr = ia, ix = 0;
    ix != size && ptr != ia+size;
    ++ix, ++ptr) { /* ... */ }

练习4.33

根据4.12节中的表说明下面这条表达式的含义。

someValue ? ++x, ++y : --x, --y

练习4.34

根据本节给出的变量定义,说明在下面的表达式中将发生什么样的类型转换:

(a) if (fval)
(b) dval = fval + ival;
(c) dval + ival * cval;

需要注意每种运算符遵循的是左结合律还是右结合律。

练习4.35

假设有如下的定义:

char cval;
int ival;
unsigned int ui;
float fval;
double dval;

请回答在下面的表达式中发生了隐式类型转换吗?如果有,指出来。

(a) cval = 'a' + 3;
(b) fval = ui - ival * 1.0;
(c) dval = ui * fval;
(d) cval = ival + fval + dval;

练习4.36

假设 iint类型,ddouble类型,书写表达式 i*=d 使其执行整数类型的乘法而非浮点类型的乘法。

练习4.37

练习4.37 用命名的强制类型转换改写下列旧式的转换语句。

int i; double d; const string *ps; char *pc; void *pv;
(a) pv = (void*)ps;
(b) i = int(*pc);
(c) pv = &d;
(d) pc = (char*)pv;

练习4.38

说明下面这条表达式的含义。

double slope = static_cast<double>(j/i);

标签:--,练习,++,运算符,int,第四章,ival,表达式
From: https://www.cnblogs.com/sys-123456/p/18565165

相关文章

  • 22207320-王攀-Blog2
    题目集4~6的总结性Blog一、前言经过题目集4至6的练习,我对Java编程的理解和实践能力都有了显著的提升。题目集4主要考察了继承与正则表达式的知识点,题目集5引入了家庭电路的模拟,题目集6则在前者的基础上增加了并联电路的处理。三次题目集的题量逐步增加,难度也有所提升,特别是题目......
  • VUE:quill富文本,鼠标悬停时没有提示
    quill版本1.3.7xxx.vue<script>exportdefault{data(){return{tooltips:[{choice:'.ql-bold',title:'加粗'},{choice:'.ql-italic',title:'斜体'},{choice:'.......
  • [Vue] Use render function
    Sometimewhendoingthingisharderintemplatesyntax,youcanswitchtousingrenderfunctionintead.Forexample,wehaves Stackcomponent,itdynamicallywrappingchildelementwithadivandsomedefaultstylingapplied.<!DOCTYPEhtml><htm......
  • 题解:AT_abc381_c [ABC381C] 11/22 Substring
    显然这个“11/22Substring”是以那个“/”为中心对称的。鉴于一个这样的字符串只能有一个“/”,而题目又要求最长,所以确定了“/”就能确定一个满足要求的子串。那思路就很简单了,只有两步:找到所有的“/”两边同时寻找相应的子串。别的,除了判断一下越界之外,就不用管了。......
  • 题目集4~6总结
    前言经过三周的Java开发课程,我们逐渐从基础的逻辑实现过渡到更复杂的系统设计,这不仅强化了我们对Java语言基础的理解,还深入实践了面向对象设计、异常处理、多线程和复杂数据结构等核心知识点。以下是对这三次作业的总结和反思。第一次作业题目开始引入复杂逻辑,包括试卷与题目关......
  • VsCode 快捷键[转载]
    前言VSCode的快捷键继承了一些IDE风格,有VS的身影,也有Emacs的身影。。简言之,内置快捷键玩熟了,效率提高不是一点两点。VsCode快捷键有五种组合方式(科普)Ctrl+Shift+?:这种常规组合按钮Ctrl+VCtrl+V:同时依赖一个按键的组合Shift+Vc:先组合后单键的输入Ctrl......
  • 2024-2025-1 20241413 《计算机基础与程序设计》第九周学习总结
    班级链接https://edu.cnblogs.com/campus/besti/2024-2025-1-CFAP作业要求https://www.cnblogs.com/rocedu/p/9577842.html#WEEK09作业目标操作系统责任内存与进程管理分时系统CPU调度文件、文件系统文件保护磁盘调度教材学习内容总结《计算机科学概论》......
  • Docker:Docker部署Jenkins并共用宿主机Docker部署微服务多模块(一)Jenkins部署及插件环境
    前言公司项目多忙着开发,所有项目服务都是博主一个个部署的,时间久了也是心累,所以抽时间把Jenkins部署上,之后让其他开发人员自己部署(让我解脱吧!!)。部署Jenkins容器Docker安装就不在赘述了,可以看我之前的文章(懒了);直接开始拉取jenkins镜像。拉取镜像dockerpulljenkins/jenki......
  • 实验4 类的组合、继承、模板类、标准库
    任务一task1_1.cpp#include<iostream>usingstd::cout;usingstd::endl;//类A的定义classA{public:A(intx0,inty0);voiddisplay()const;private:intx,y;};A::A(intx0,inty0):x{x0},y{y0}{}voidA::display()const{co......
  • 「Mac玩转仓颉内测版27」基础篇7 - 字符串类型详解
    本篇将介绍Cangjie中的字符串类型,包括字符串的定义、字面量形式、插值表达、常用操作及应用场景,帮助开发者熟练掌握字符串的使用。关键词字符串类型定义字符串字面量插值字符串字符串拼接常用操作一、字符串类型概述在Cangjie中,字符串是一组Unicode字符的集合,用......