2021年09月06日 计算机_编程基础1

考点1:C语言命名规则

以下叙述中正确的是()

  • A 语言中的关键字不能作变量名,但可以作为函数名
  • B 标识符的长度不能任意长,最多只能包含16个字符
  • C 标识符可以由字母、数字和下划线组成,且第一个字符不得为数字
  • D 用户自定义的标识符必须”见名知义”,如果随意定义,则会出编译错误

解析

显示答案/隐藏答案正确答案: C

C语言标识符命名规则

解析:【解析】
C语言中的关键字即不能做变量名也不能做用户函数名,所以A错误。

标识符的命名规则,即:

  1. 由下划线、字母、数字组成,
  2. 且不能以数字开头,可以就是必须以下划线或字母开头,
  3. 也不能和关键字一致。

不同C语言规定标识符的有效长度可能会不同,但没有限制最大长度,所以B错误。

用户定义的标识符只要满足标识符命名规则没有特殊要求,不必一定”见名知义”,所以D错误。

考点2:排错法?

小孙发现某学生成绩管理系统运行后,不能正常处理分数为90分的成绩。于是小孙再次设计了多个成绩数据进行测试,又发现了它对一些特定分数的成绩处理有错。小孙从所有错误结果中归纳征兆,从而确定错误是由于程序对个位数为0的整数成绩处理有误。小孙排错采用的方法是( )。

  • A 归纳排错法
  • B 演绎排错法
  • C 回溯排错法
  • D 穷举排错法

解析

显示答案/隐藏答案正确答案: A

考点3:源程序转换为可执行程序要经过的步骤

用高级语言编写的源程序转化为可执行程序,必须经过()。

  • A 汇编和解释
  • B 编辑和链接
  • C 编译和链接
  • D 解释和编译

解析

显示答案/隐藏答案正确答案: C

一个计算机程序执行的过程可分为编辑、编译、连接和运行四个过程。用高级语言编写程序的过程称为编辑,之后利用编译程序从源语言编写的源程序产生目标程序的过程称为编译,翻译完的目标程序不能立即被执行,要通过连接将目标程序和有关的系统函数库以及系统提供的其他信息连接起来,形成一个可执行程序。综上所述,用高级语言编写的源程序,将其转化成能在计算机上运行的程序过程是编辑、编译、连接。

考点4:汉字输入码

在拼音输入法中,输入拼音”zhengchang”,其编码属于( )。

  • A 字形码
  • B 地址码
  • C 外码
  • D 内码

解析

显示答案/隐藏答案正确答案: C

外码 汉字输入码

汉字输入码是为使用户能够使用西文键盘输入汉字而编制的编码,也叫外码。

汉字输入码分类

汉字输入码有多种不同的编码方案,大致包括:

  1. 音码(以汉语拼音字母和数字为汉字编码)、
  2. 音形码(以拼音为主,辅以字形字义进行编码)、
  3. 形码(根据汉字的字形结构对汉字进行编码)和
  4. 数字码(直接用固定位数的数字给汉字编码)4类。

故正确答案为C选项。

考点5:C++重载运算符

在表达式 +y*z 中, + 是作为成员函数重载的运算符, * 是作为非成员函数重载的运算符。则 operator+ 有______个参数, operator* 有________参数。 ( )

  • A 2、2
  • B 2、1
  • C 1、1
  • D 1、2

解析

显示答案/隐藏答案正确答案: D

运算符可重载为成员函数,也可重载为非成员函数函数。

  • 当重载为成员函数时,运算符重载函数的形参个数要比运算符操作数的个数少一个
  • 当重载为非成员函数时,其形参个数应与操作数的个数相同

考点6:位运算

下面有关位运算的一些结论哪些是正确的 ( )

  • A 十二进制数81的二进制数为: 01100001
  • B 十进制数-11的补码为:11110101
  • C 十进制数76和81异或的结果为十进制数28
  • D 位运算(A|B)&C = (A&C)|(B&C)
  • E 加法运算等同于位或运算,如A+B=A|B
  • F 与二进制数00101101等值的十六进制数是2C

解析

显示答案/隐藏答案正确答案: ABD

A选项 N进制数转10进制数:按权展开

十二进制的81转10进制

$$
(81)_{12}=8\times 12^1+1\times 12^0=96+1=97
$$

二进制01100001转10进制

$$
(01100001)_{2}=0+1\times 2^6+1\times 2^5+0+0+0+0+1=2^6+2^5+1=64+32+1=96+1=97
$$

所以A正确

B选项 原码反码补码

正数的原码,反码,补码都一样

原码

原码是直接将一个数值换算成二进制数。最高位为符号位,正数为0,负数为1

反码

正数的反码是就是原码

负数的反码是在其原码的基础上, 符号位不变,其余各个位取反.

补码的计算规则

计算机以补码的形式保存所有的整数。

  • 正数的补码和原码完全相同,

  • 负数的补码是其反码加1;

    负数的补码是在其原码的基础上, 符号位不变, 其余各位取反, 最后+1.(即在反码的基础上+1)

$$
(-11)=8+2+1
$$

补码转原码

补码的补码就是原码,就像负负得正一样

二进制十进制转换表

2^n 2^7 2^6 2^5 2^4 2^3 2^2 2^1 2^0
128 64 32 16 8 4 2 0
-11原码 1 0 0 0 1 0 1 1
-11反码 1 1 1 1 0 1 0 0
-11补码 1 1 1 1 0 1 0 1

所以
$$
(-11){原码}=1000 1011 \newline
(-11)
{反码}=1000 0100 \newline
(-11)_{补码}=1111 0101
$$

所以B选项正确

C选项 亦或运算

如果a、b两个值不相同,则异或结果为1。
如果a、b两个值相同,异或结果为0。

相同为0,相异为1

亦或真值表

a b a⊕b
0 0 0
0 1 1
1 0 1
1 1 0

求解过程

76展开:

1
2
3
76-64=12
12-8=4
4-4=0

81展开:

1
2
3
81-64=17
17-16=1
1-1=0
2^n 2^7 2^6 2^5 2^4 2^3 2^2 2^1 2^0
128 64 32 16 8 4 2 0
+76补码 0 1 0 0 1 1 0 0
+81补码 0 1 0 1 0 0 0 1
+76⊕+81补码 0 0 0 1 1 1 0 1

$$
+76⊕81&=&0 0 0 1 1 1 0 1 \newline
&=&16+8+4+1 \newline
&=&29
$$

所以C选项错误

D选项

位运算(A|B)&C = (A&C)|(B&C)

交换律 结合律 分配律

https://www.shuxuele.com/associative-commutative-distributive.html

交换律

符号相同的时候

$a+b=b+a$

结合律

符号相同的时候

$(a+b)+c=a+(b+c)$

$(a\times b) \times c=a\times (b \times c)$

分配率

符号不同的时候

$a\times (b+c)=a\times b+a\times c$

按位或按位与满足分配率

1
2
3
4
5
6
7
8
public class Test2 {
public static void main(String[] args) {
int A=1;
int B=2;
int C=3;
System.out.println(((A | B) & C) == ((A & C) | (B & C)));
}
}

输出结果:

1
true

E选项

1
2
3
4
5
6
7
int A=-4;
int B=5;
int C=6;
System.out.println(A+B);
System.out.println(A|B);
System.out.println(C+B);
System.out.println(C|B);

运行结果:

1
2
3
4
1
-3
11
7