Mr. Kin's Blog

计算机知识分享/软件应用讲解

第五章:语句

练习5.1

什么是空语句?什么时候会用到空语句?

只含有一个单独的分号的语句是空语句。如:

1
;

如果在程序的某个地方,语法上需要一条语句但是逻辑上不需要,此时应该使用空语句。(建议做好注释说明空语句作用)

1
2
3
//重复读入数据直至到达文件末尾或某次输入的值等于sought
while (cin >> s && s != sought)
;

练习5.2

什么是块?什么时候会用到块?

用花括号括起来的语句和声明的序列就是块。

1
2
3
{
// ...
}

如果在程序的某个地方,逻辑上需要多条语句,而语法上只能容纳一条语句,此时应该使用块。

1
2
3
4
while (val <= 10) {
sum += val;
++val;
}

练习5.3

使用逗号运算符重写(参见4.10节,第140页)1.4.1节的 while 循环,使它不再需要块,观察改写之后的代码可读性提高了还是降低了。

1
2
while (val <= 10)
sum += val, ++val;

代码的可读性降低了。

练习5.4

说明下列例子的含义,如果存在问题,试着修改它。

1
2
3
(a) while (string::iterator iter != s.end()) { /* . . . */ }
(b) while (bool status = find(word)) { /* . . . */ }
if (!status) { /* . . . */ }
  • (a) 这个循环试图用迭代器遍历string,但是变量的定义应该放在循环的外面,目前每次循环都会重新定义一个变量,明显是错误的。
  • (b) 这个循环的 while 和 if 是两个独立的语句,if 语句中无法访问 status 变量,正确的做法是应该将 if 语句包含在 while 里面,

练习5.5

写一段自己的程序,使用if else 语句实现把数字转换为字母成绩的要求。

练习5.6

改写上一题的程序,使用条件运算符(参见4.7节,第134页)代替if else语句。

阅读全文 »

第四章:表达式

练习4.1

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

105

练习4.2

根据4.12节中的表,在下述表达式的合理位置添加括号,使得添加括号后运算对象的组合顺序与添加括号前一致。

  • (a) *vec.begin()
  • (b) *vec.begin() + 1
1
2
*(vec.begin())
(*(vec.begin())) + 1

练习4.3

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

可以接受。C++的设计思想是尽可能地“相信”程序员,将效率最大化。然而这种思想却有着潜在的危害,就是无法控制程序员自身引发的错误。因此 Java 的诞生也是必然,Java的思想就是尽可能地“不相信”程序员。

练习4.4

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

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

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

实际输出结果:91。

练习4.5

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

1
2
3
4
-30 * 3 + 21 / 5  // -90+4 = -86
-30 + 3 * 21 / 5 // -30+63/5 = -30+12 = -18
30 / 3 * 21 % 5 // 10*21%5 = 210%5 = 0
-30 / 3 * 21 % 4 // -10*21%4 = -210%4 = -2

练习4.6

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

1
if (i % 2 == 0) /* ... */

练习4.7

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

溢出含义:当计算的结果超出该类型所能表示的范围时就会产生溢出。

1
2
3
short svalue = 32767; ++svalue; // -32768
unsigned uivalue = 0; --uivalue; // 4294967295
unsigned short usvalue = 65535; ++usvalue; // 0

练习4.8

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

  • 逻辑与运算符和逻辑或运算符都是先求左侧运算对象的值再求右侧运算对象的值,当且仅当左侧运算对象无法确定表达式的结果时才会计算右侧运算对象的值。这种策略称为短路求值
  • 相等性运算符未定义求值顺序。
阅读全文 »

1   下载及安装VSCode

  • 下载:VSCode System Installer
  • 安装:默认及路径安装,选项额外添选上下文菜单(文件和目录)

镜像下载的方法:将下载链接URL中的stable之前的字符全部改为https://vscode.cdn.azure.cn/即可。

1.1   配置C/C++

编译器:MSVC CL 编译器(Visual Studio 2022 生成工具)

2   CL编译器的环境设置

  1. 安装cl开发环境
  2. 将CL路径添加到系统path中:C:/Program Files (x86)/Microsoft Visual Studio/2022/BuildTools/VC/Tools/MSVC/14.35.32215/bin/Hostx64/x64/
  3. 拷贝.vscode配置文件夹

2.1   更新MSVC后找不到CL命令

更新MSVC后,版本号可能会变更,如果终端运行cl命令后查不到,需要手动更新两个文件中的CL路径:

  • 系统PATH
  • c_cpp_properties.json

3   源代码管理

对于新建的空仓库,使用clone命令克隆仓库后,第一次用vs code进行commit时,若使用「同步更改」命令提示说找不到远程仓库时,可以直接使用「推送到」命令。

4   Codeium扩展插件的帐号token获取及使用

一般直接通过Codeium Auth登录帐号即可使用扩展插件。

4.1   token获取

如果不想登录帐号,而是想要通过ctrl+shift+p执行Codeium: Provide Authentication Token命令输入token的话。首先需要获取token,获取方式:

  • 方式一:官网直链获取(此直链是会提示关联vim扩展,但token都是通用的,同样适用于VSCode的扩展),直接在该网址中登录帐号即可获取「Provide Authentication Token」
  • 方式二:参考token使用的1-4步骤。

4.2   token使用

  1. VSCode安装好Codeium扩展插件。
  2. 左下角,点击Codeium Auth登录按钮,首先插件会弹窗请求跳转到网页输入帐号登录。
  3. 直接关闭打开的网页,点击右下角「在线帐号登录」的cancel按钮。
  4. 之后插件会弹窗请求跳转到网页输入帐号登录,这个在线网址则是获取「Provide Authentication Token」。(如果已经提前获取到token,这里可以不登录网页帐号,直接关闭网页)
  5. 最后通过ctrl+shift+p执行Codeium: Provide Authentication Token命令输入token即可正常登录。

5   参考文献

[1] [Question] How can I get codeium auth token[EB/OL]. https://github.com/Exafunction/codeium.vim/issues/150.
[2] VsCode下载,使用国内镜像秒下载[EB/OL]. https://blog.csdn.net/bielaiwuyang1999/article/details/117814237.

1   Autodesk CAD

1.1   版本下载

CAD哪个版本好用-CAD各版本对比

下载地址:

1.2   官方文档查阅

1.3   优化CAD性能

  • 只用SHX字体,不要用系统真字体,例如宋体、黑体之类的粗字体。SHX的量级要远比TTF字体来得轻便,可以极大减小文件的尺寸,改善缩放平移以后的性能。
  • 开启硬件加速
  • 清理图面,善用清理命令及插件

2   浩辰CAD

2.1   版本下载

下载地址:

3   参考文献

[1] AutoCAD小秘密038:SHX大字体的通天塔[EB/OL]. https://zhuanlan.zhihu.com/p/52121478.
[2] 详解AutoCAD的.TTF字体和.SHX字体文件[EB/OL]. https://www.cadzxw.com/711.html.

1   Word

1.1   页码排版问题

  • 分页符前后的页眉页脚是一样的,分节符前后才有可能不一样。
  • 分节符后面的页眉页脚一般都是默认继承前面的格式的,可以取消“链接到前一个”。
  • 分节符用的下一页。

关于分页符和分节符的删除:

  • 视图删除法:进入菜单「视图」>「大纲视图」或者「草稿视图」等,找到想要删除的符号,按 delete 键进行删除。
  • 在菜单「开始」的文字样式左边,显示/隐藏编辑标记(箭头符号)。点击显示符号,然后 delete 删除。

1.2   格式刷

  • 选中需要复制样式的文字,然后点击菜单「开始」>「格式刷」。然后选中其他需要应用的文字。
  • 单击时,只能使用一次。双击时,能多次使用。

1.3   自动目录

在菜单「视图」>「大纲视图」对需要生成目录的标题进行级别排版后,点击菜单「引用」>「目录」>「自动目录 1」。

1.4   页眉页脚样式的删除,如下划线

双击页眉页脚进入「设计模式」编辑。在「开始」>「样式」下拉 >「清除格式」

1.5   LaTeX公式输入

插入公式的快捷键 alt+=

几种模式的区别:

  • /Unicode:输入空格即可将当前 latex 语句转换成公式。
  • LaTeX:写完所有 LaTeX 语法,通过转换「当前‑专业」功能才能完成转换。(无法通过空格转换)

P.S.「全部‑专业」功能会对当前文档使用转换功能

1.6   在表格(最外框那种,占满整个页面)下方插入空行

  1. 在表格的最下方一行按 TAB 键,生成第二页表格。
  2. 在第二页表格第一行,插入空白页。
  3. 之后删除表格页。

1.7   参考文献的引用及自动更新

  1. 创建文献编号,排版文献
    1. 「开始」选项卡 > 有序编号 > 定义新编号格式(D)
    2. 在数值左右分别添加 [] 符号
    3. 对参考文献使用该格式进行排版
  2. 交叉引用,插入引用编号
    1. 「引用」选项卡 > 交叉引用
    2. 编号项 + 段落编号 + 插入为超链接
    3. 选择所引用的参考文献
  3. 自动更新域:右键插入的引用编号 > 更新域(全局更新:ctrl+A 之后按 F9> 更新页码)

2   Excel

2.1   标准化统一整列数据的格式

  • 无任何数据的初始列:设置单元格式
  • 一列已有数据,包含数字格式、文本格式等不同格式:这个情况使用「设置单元格式」功能并不会对已有数据进行格式化修改。正确的方法是:选中该列数据,选择菜单栏“数据”选项卡---“分列”后单击下一步,再下一步,再如图的选项卡中,选择要把该列数据变更为“常规”还是“文本”或其他。如有特殊需求,可点击“高级”。

2.2   边框颜色修改问题

设置顺序:先选颜色,再在预设里选择边框样式(外边框和内部)。

注意顺序不能搞错,必须先选颜色,再选边框。

3   安卓android Office

  • excel表格别用其中的创建自定义视图功能,这功能是创建一个新的视图,完完全全改变单元格的全部样式(对应视图)。如果只是需要修改单元格特定格式,在编辑模式下完成即可。

4   参考文献

[1] EXCEL将一列不同格式的数据变成同一格式[EB/OL]. https://jingyan.baidu.com/article/3ea51489faf0a252e61bba1e.html.

R.I.P