一、单选题
1、我们通常说的“内存”属于计算机中的( )。
A 输出设备
B 输入设备
C 存储设备
D 打印设备
解析:【喵呜刷题小喵解析】:计算机中的“内存”是指随机存取存储器(Random Access Memory,RAM),它属于计算机的存储设备,用于存储正在运行的程序和数据。因此,正确选项是“存储设备”。输出设备是将计算机处理结果输出到外部的设备,如显示器、打印机等;输入设备是将外部数据输入到计算机的设备,如键盘、鼠标等;打印设备是专门用于打印输出的设备,如打印机。这些选项与“内存”不属于同一类别,因此可以排除。
2、以下C++不可以作为变量的名称的是( )。
A redStar
B RedStar
C red_star
D red star
解析:【喵呜刷题小喵解析】在C++中,变量名需要遵循一定的命名规则。首先,变量名必须以字母或下划线开头,不能以数字开头。其次,变量名只能包含字母、数字和下划线,不能包含空格。因此,选项D中的"red star"包含了空格,不能作为C++的变量名。而选项A中的"redStar"、选项B中的"RedStar"和选项C中的"red_star"都符合C++的变量命名规则,可以作为变量名。
3、C++表达式 2 - 1 && 2 % 10 的值是( )。
A 0
B 1
C 2
D 3
解析:【喵呜刷题小喵解析】
C++中,逻辑与运算符 `&&` 的操作数都会参与求值,只有当第一个操作数为 `true` 时,才会对第二个操作数求值。如果第一个操作数为 `false`,则不会求第二个操作数,直接返回 `false`。
在表达式 `2 - 1 && 2 % 10` 中,`2 - 1` 的值是 `1`,这是一个非零值,所以 `true`。因此,逻辑与运算符 `&&` 会对第二个操作数 `2 % 10` 求值。
`2 % 10` 的值是 `2`,这是一个非零值,所以也是 `true`。
因此,整个表达式 `2 - 1 && 2 % 10` 的值是 `true`,在C++中,`true` 的整数值是 `1`。所以答案是 `1`。
4、下面C++代码段执行后的输出是( )。
A 3+4= 7
B 3+4=7
C a+b=7
D a+b=a+b
解析:【喵呜刷题小喵解析】:根据题目中提供的代码,`a = 3; b = 4;`定义了两个变量`a`和`b`,分别赋值为3和4。接下来的`printf("%d+%d=%d", a, b, a+b);`语句使用`printf`函数输出`a`和`b`的值以及它们的和。因此,执行后的输出应该是`3+4=7`。选项B与此输出一致,因此选B。
5、在C++语言中, int 类型的变量 x 、 y 、 z 的值分别为 2 、 4 、 6 ,以下表达式的值为真的是( )。
A x > y || x > z
B x != z - y
C z > y + x
D x < y || !x < z
解析:【喵呜刷题小喵解析】根据题目描述,在C++语言中,变量x、y、z的值分别为2、4、6。
对于选项A:x > y || x > z,由于x的值为2,y的值为4,z的值为6,所以x > y不成立,x > z也不成立,因此整个表达式为假。
对于选项B:x != z - y,将x、y、z的值代入,得到2 != 2,显然不成立,所以整个表达式为假。
对于选项C:z > y + x,将x、y、z的值代入,得到6 > 4 + 2,即6 > 6,显然不成立,所以整个表达式为假。
对于选项D:x < y || !x < z,由于x的值为2,y的值为4,z的值为6,所以x < y成立,由于x的值为2,所以!x为假,那么!x < z即为假 < z,即z,因为z的值为6,所以整个表达式为真。
因此,正确答案为D。
6、对 int 类型的变量 a 、 b 、 c ,下列语句不符合C++语法是( )。
A c += 5;
B b = c % 2.5;
C a = (b = 3, c = 4, b + c);
D a -= a = (b = 6) / (c = 2);
解析:【喵呜刷题小喵解析】:在C++中,赋值语句的右侧不能包含浮点数。在选项B中,`b = c % 2.5;`中的`2.5`是一个浮点数,所以该语句不符合C++语法。其他选项中的语句都是符合C++语法的。
7、下面C++代码执行后的输出是( )。(2023年9月C++一级)
A 都是偶数
B 都是奇数
C 不都是偶数或奇数
D 以上说法都不正确
解析:【喵呜刷题小喵解析】:
首先,我们需要理解C++代码的工作原理。
这段代码定义了一个函数`f()`,该函数接受两个整数参数`a`和`b`。在函数内部,它首先计算`a`和`b`的和,然后将结果赋值给`sum`。接着,它检查`sum`是否为偶数,如果是,则输出"都是偶数",否则输出"不都是偶数或奇数"。
然而,这段代码存在一个逻辑错误。当`sum`是偶数时,它应该输出"都是偶数",这是正确的。但当`sum`是奇数时,它应该输出"不都是奇数",而不是"不都是偶数或奇数"。
因此,这段代码的输出取决于`sum`的值,但输出的文本描述并不准确。所以,给出的选项"都是偶数"、"都是奇数"和"不都是偶数或奇数"都不能完全准确地描述代码的输出结果。
因此,正确答案是"以上说法都不正确"。
8、下面C++代码执行后的输出是( )。
A 都是偶数
B 都是奇数
C 不都是偶数或奇数
D 以上说法都不正确
解析:【喵呜刷题小喵解析】:根据给定的C++代码,我们可以看到,`i`的值在循环中从0开始,每次增加2,因此`i`的值是0、2、4、6...,即`i`的值都是偶数。而`j`的值在循环中从1开始,每次增加2,因此`j`的值是1、3、5、7...,即`j`的值都是奇数。但是,`i+j`的值则是0+1=1、2+3=5、4+5=9...,即`i+j`的值都是奇数。因此,选项D“以上说法都不正确”是正确的。
9、下面C++代码执行后的输出是( )。
A 0
B 1
C 2
D 3
解析:【喵呜刷题小喵解析】:题目中给出的C++代码是 `int a[3] = {1, 2}; int *p = a; *p = 0;`。
首先,我们分析数组`a`的初始化,它包含3个元素,但只初始化了前两个元素,第三个元素默认为0。
然后,我们定义了一个指向数组`a`的指针`p`,并将`p`指向数组的第一个元素。
接着,我们通过`*p = 0;`将数组的第一个元素的值设置为0。
所以,最终数组`a`的值为`{0, 2, 0}`。
但题目只问的是输出,输出的是指针`p`指向的值,也就是数组的第一个元素的值,即0。
因此,输出是0,所以正确答案是A。
10、下面C++代码段执行后的输出是( )。
A 1
B 4
C 5
D 10
解析:【喵呜刷题小喵解析】:根据题目中的代码,我们可以看到这是一个简单的C++程序,主要涉及到指针和数组的操作。
首先,定义了一个整型数组`arr`,并初始化了它的前三个元素为1、2、3。
然后,定义了一个指向整型数组的指针`p`,并将它指向`arr`数组的第二个元素。
接着,执行了`*p += 10;`操作,这个操作的意思是将指针`p`所指向的元素的值加10。由于`p`指向的是`arr`数组的第二个元素,所以就是将`arr[1]`的值加10。
最后,程序输出了`arr[2]`的值,也就是`arr[2] = 3 + 10 = 13`,所以输出结果为13,对应选项B。
需要注意的是,虽然`p`指向的是`arr`数组的第二个元素,但是`*p += 10;`操作并没有影响到`arr[0]`和`arr[2]`的值,因此`arr[0]`和`arr[2]`的值仍然是1和3,没有被改变。
11、下面C++代码执行后的输出是( )。
A 2
B 4
C 9
D 10
解析:【喵呜刷题小喵解析】
题目中给出的C++代码是:
```cpp
#include
using namespace std;
int main() {
int a = 2;
int &ref = a;
a = a * 5;
cout << ref << endl;
return 0;
}
```
在这段代码中,首先定义了一个整型变量`a`并赋值为2。然后定义了一个引用`ref`,使其引用`a`。接着,将`a`的值乘以5,即`a = a * 5;`,此时`a`的值变为10。最后,通过引用`ref`输出`a`的值,即输出10。
因此,正确答案是D,即输出为10。
12、下面C++代码执行后的输出是( )。
A 3
B 4
C 6
D 7
解析:【喵呜刷题小喵解析】:根据题目中的代码,我们可以看到这是一个C++程序,主要涉及到指针和数组的操作。
首先,定义了一个整型数组`int arr[3] = {1, 2, 3};`,数组中有三个元素,值分别为1、2、3。
然后,定义了一个指向整型数组的指针`int *p = arr;`,将指针`p`指向数组`arr`的首地址。
接着,执行了`*p += 2;`,这里对指针`p`指向的数组的第一个元素进行了操作,将第一个元素的值增加了2,也就是1+2=3。
再执行`*(p+1) *= 2;`,这里对指针`p`指向的数组的第二个元素进行了操作,将第二个元素的值乘以2,也就是2*2=4。
最后,执行`cout << *(p+2) << endl;`,这里输出的是指针`p`指向的数组的第三个元素的值,也就是3。
所以,程序的输出结果是3,选项C正确。
13、下面C++代码用于求正整数的所有因数,即输出所有能整除一个正整数的数。如,输入10,则输出为1、2、5、10;输入12,则输出为1、2、3、4、6、12;输入17,则输出为1、17。在横线处应填入代码是( )。
A int i = 1; i < n; i + 1
B int i = 1; i < n + 1; i + 1
C int i = 1; i < n; i++
D int i = 1; i < n + 1; i++
解析:【喵呜刷题小喵解析】:在C++中,for循环的语法格式通常为:for(初始化; 条件; 增量)。在给定的代码中,for循环用于遍历正整数的所有因数,从1开始到n(包含n)。
首先,我们需要确定循环的初始值,它应该被设置为1,表示从1开始检查。在给出的选项中,这一点都满足。
接下来,我们需要确定循环的条件,它应该是一个表达式,当该表达式为真时,循环会继续执行。在这里,我们需要检查i是否小于n。在给出的选项中,选项A和B的条件表达式不完整,选项C的条件表达式“i < n”是正确的。
最后,我们需要确定循环的增量,它应该是一个表达式,每次循环结束时都会执行。在这里,我们需要将i增加1,以便检查下一个数是否是n的因数。在给出的选项中,选项C的增量表达式“i++”是正确的。
因此,正确的选项是C:“int i = 1; i < n; i++”。
14、在下列代码的横线处填写( ),可以使得输出是正整数 1234 各位数字的平方和。
A n / 10
B (n / 10) * (n / 10)
C n % 10
D (n % 10) * (n % 10)
解析:【喵呜刷题小喵解析】:根据题目,我们需要获取1234的各位数字,然后计算它们的平方和。首先,我们需要知道如何从数字中提取每一位数字。观察数字1234,我们可以看到每一位数字都在特定的位置上。具体来说,千位数字在最高位,百位数字在次高位,十位数字在倒数第二位,个位数字在最低位。
为了获取个位数字,我们可以使用模运算符(%)来获取余数。例如,1234 % 10 将返回4,这是1234的个位数字。为了获取十位数字,我们可以将数字除以10,然后再取余数。例如,1234 / 10 % 10 将返回3,这是1234的十位数字。
因此,为了计算1234的各位数字的平方和,我们需要将1234除以10,然后取余数以获取个位数字,然后计算其平方。同样,我们需要将1234除以100,然后取余数以获取十位数字,然后计算其平方。然后,我们需要将1234除以1000,然后取余数以获取百位数字,然后计算其平方。最后,我们需要将1234除以10000,然后取余数以获取千位数字,然后计算其平方。
现在,我们来看选项:
A. n / 10 - 这将返回123,而不是我们需要的个位、十位、百位和千位数字。
B. (n / 10) * (n / 10) - 这将计算123的平方,而不是我们需要的各位数字的平方。
C. n % 10 - 这将返回4,这是1234的个位数字。
D. (n % 10) * (n % 10) - 这将计算4的平方,但不是我们需要的操作,因为我们还没有提取出所有位数。
因此,正确的选项是C,因为它可以让我们提取1234的各位数字,并计算它们的平方。
15、执行以下C++语言程序后,输出结果是( )。
A 1
B 0
C 120
D 无法确定
解析:【喵呜刷题小喵解析】
该C++程序涉及到指针和引用。指针和引用在C++中都可以用来访问对象的内存地址,但它们在语义和使用上有所不同。
从图片中的代码可以看出,变量`a`被初始化为`10`,然后`b`被初始化为`a`的地址(即`&a`)。接着,`c`被初始化为`b`所指向的值,即`10`。
然后,`a`的值被修改为`120`,此时`a`的地址并没有改变,只是`a`所存储的值发生了变化。
最后,输出`c`的值。由于`c`存储的是`a`的初始值(即`10`),而不是`a`的地址,因此输出结果为`10`,而不是`120`。
因此,选项D“无法确定”是不正确的,因为程序的结果是确定的,即输出`10`。选项A、B和C都是错误的。
二、判断题
16、早期计算机内存不够大,可以将字库固化在一个包含只读存储器的扩展卡中插入计算机主板帮助处理汉字
A 正确
B 错误
解析:【喵呜刷题小喵解析】:在计算机发展的早期,由于内存的限制,处理汉字时可能会出现内存不足的情况。为了解决这个问题,开发者将字库固化在包含只读存储器的扩展卡中,然后插入计算机主板。这样,计算机在处理汉字时,可以从这个扩展卡中读取字库信息,而不需要占用宝贵的内存空间。因此,该题目所述的内容是正确的。
17、神威·太湖之光超级计算机是中国自主研制的超级计算机,在全球超级计算机TOP500排行榜中多次荣膺榜首。(2023年9月C++一级)
A 正确
B 错误
解析:【喵呜刷题小喵解析】:根据题目给出的信息,神威·太湖之光超级计算机是中国自主研制的超级计算机,并且在全球超级计算机TOP500排行榜中多次荣膺榜首。因此,题目中的陈述是正确的。
18、C++表达式 int(3.14) 的值为 3 。
A 正确
B 错误
解析:【喵呜刷题小喵解析】:在C++中,`int(3.14)`是强制类型转换,将浮点数3.14转换为整数。整数类型会去掉小数部分,所以`int(3.14)`的值是3,这是正确的。但题目中的说法“C++表达式 int(3.14) 的值为 3 。”是不准确的,因为“C++表达式”这个词组多余且不准确。应该直接写“int(3.14) 的值为 3”,所以选项B正确。
19、C++语句 cout << (2, 3, "23") 的输出为 2, 3, 23 。
A 正确
B 错误
解析:【喵呜刷题小喵解析】:在C++中,cout << (2, 3, "23") 这种写法是不合法的。cout << 是一个输出流操作符,它期望的是一个可以转换为基本数据类型的表达式,而不是一个逗号表达式。逗号表达式(2, 3, "23")会按照从左到右的顺序计算其各个部分,但整个表达式的值会是最后一个计算出来的值,即 "23"。然而,cout << 并不能直接输出一个字符串字面值,它只能输出基本数据类型(如int、float、char等)。所以,这种写法在编译时就会产生错误。
如果题目中的意图是输出字符串 "23",应该写成 cout << "23";如果是要分别输出2、3,则应该分别写成 cout << 2; 和 cout << 3;。因此,题目中的说法是不正确的。
20、C++的循环语句 for (int i = 0; i < 10; i += 2) 表示 i 从 0 开始到 10 结束但不包含 10 ,间隔为2 。
A 正确
B 错误
解析:【喵呜刷题小喵解析】:题目中的C++循环语句`for (int i = 0; i < 10; i += 2)`表示i从0开始,每次增加2,直到i小于10。因此,循环将执行5次,分别对应i的值为0、2、4、6和8。这个循环并没有包括10,所以题目的描述是正确的。
21、C++表达式 ('1' + '1') 的值为 '2' 。
A 正确
B 错误
解析:【喵呜刷题小喵解析】:在C++中,'1'和'2'是字符类型,它们被存储在内存中作为ASCII值。'1'的ASCII值是49,'2'的ASCII值是50。当我们对字符进行加法操作时,实际上是对它们的ASCII值进行加法操作,而不是对字符本身进行加法。因此,('1' + '1')的结果并不是字符'2',而是它们的ASCII值之和,即49 + 49 = 98,对应的字符是'b',而不是'2'。所以,题目中的表达式('1' + '1')的值为 '2' 是错误的。
22、在C++语言中, do-while 循环不可能导致死循环,但 while 有可能。
A 正确
B 错误
解析:【喵呜刷题小喵解析】:在C++语言中,`do-while`和`while`循环都有可能导致死循环。死循环是指循环条件始终为真,导致循环无法自行终止。无论是`do-while`还是`while`循环,如果循环条件设置不当,都有可能导致死循环。因此,该题目的陈述是不准确的。
23、在下面的C++代码中,由于循环中的 continue 是无条件被执行,因此将导致死循环。
A 正确
B 错误
解析:【喵呜刷题小喵解析】:从给出的代码片段来看,并没有明显的死循环。代码中的循环体包含一个条件判断`if (i < 10)`,当`i`小于10时,循环体会执行,否则`continue`语句会被执行,导致循环跳过本次迭代。因此,循环会在`i`达到10时结束,而不是无限循环。所以,题目中的说法是错误的。
24、在C++代码中,不可以将变量命名为 cout ,因为 cout 是C++的关键字。
A 正确
B 错误
解析:【喵呜刷题小喵解析】:在C++中,cout是一个预定义的输出流对象,用于向控制台输出数据。它不是一个关键字,因此变量可以被命名为cout。然而,在实际编程中,为了避免混淆和潜在的命名冲突,通常不建议将变量命名为cout或其他预定义标识符,如cin、endl等。所以,虽然技术上可以这样做,但在良好的编程实践中,这样做是不推荐的。因此,题目中的陈述是不准确的。
25、C++是一种高级程序设计语言。(2023年9月C++一级)
A 正确
B 错误
解析:【喵呜刷题小喵解析】:C++是一种高级程序设计语言,这是正确的。C++是一种由Bjarne Stroustrup于1985年推出的编程语言,它是C语言的一个超集,支持面向对象编程,并且包含了许多高级特性,如类、对象、继承、多态等。因此,题目中的陈述是正确的。
三、实操题
26、买文具
时间限制:1.0 s
内存限制:128.0 MB
问题描述
开学了,小明来到文具店选购文具。签字笔2元一支,他需要X支;记事本5元一本,他需要Y本;直尺3元一把,他需要Z把。小明手里有Q元钱。请你通过编程帮小明算算,他手里的钱是否够买他需要的文具。
输入描述
输入4行。
第一行包含一个正整数X,是小明购买签字笔的数量。约定1≤X≤10。
第二行包含一个正整数Y,是小明购买记事本的数量。约定1≤Y≤10。
第三行包含一个正整数Z,是小明购买直尺的数量。约定1≤Z≤10。
第四行包含一个正整数Q,是小明手里的钱数(单位:元)。
输出描述
输出2行。如果小明手里的钱够买他需要的文具,则第一行输出"Yes",第二行输出小明会剩下的钱数(单位:元);
否则,第一行输出"No",第二行输出小明缺少的钱数(单位:元)。
样例输入1
1
1
1
20
样例输出1
Yes
10
样例输入2
1
1
1
5
样例输出2
No
5
参考答案:br />```#include
解析:【喵呜刷题小喵解析】
这个问题是一个简单的数学问题,不需要复杂的算法或数据结构。主要步骤包括:
1. 从输入中读取小明购买签字笔、记事本和直尺的数量,以及他手里的钱数。
2. 计算小明购买这些文具所需的总钱数,即签字笔的总价、记事本的总价和直尺的总价之和。
3. 比较总钱数和小明手里的钱数,如果总钱数小于等于小明手里的钱数,则输出"Yes"和剩余的钱数;否则,输出"No"和缺少的钱数。
在编程实现时,使用C++语言,通过`cin`函数读取输入,通过`cout`函数输出结果。注意,输入和输出都需要按照题目要求的格式进行。
对于样例输入1,小明需要购买1支签字笔、1本记事本和1把直尺,总共需要2+5+3=10元,而小明手里有20元,所以小明手里的钱够买他需要的文具,输出"Yes"和剩余的钱数10元。
对于样例输入2,小明需要购买1支签字笔、1本记事本和1把直尺,总共需要2+5+3=10元,而小明手里只有5元,所以小明手里的钱不够买他需要的文具,输出"No"和缺少的钱数10-5=5元。
27、小明的幸运数(2023年9月C++一级)
时间限制:1.0 s
内存限制:128.0 MB
问题描述
所有个位数为k的正整数,以及所有k的倍数,都被小明称为“k幸运数”。小明想知道正整数L和R之间(包括L和R)所有k幸运数的和,你能帮帮他吗?
输入描述
输入3行。第一行包含一个正整数k,第二行包含一个正整数L,第三行包含一个正整数R。约定2≤k≤9,1≤L≤R≤1000。
输出描述
输出1行,符合题意的幸运数之和。
样例输入1
7
1
10
样例输出1
7
样例解释1
1和10之间共有1个7幸运数:7。因为7既是7的倍数,个位数又为7。因此,结果为7。
样例输入2
7
10
20
样例输出2
31
样例解释2
10和20之间共有2个7幸运数:14和17。14是7的倍数,17的个位数为7。因此,结果为31。
参考答案:对于每一个k,我们都需要计算L到R之间所有k的倍数和个位数为k的数,然后将它们相加。
解析:【喵呜刷题小喵解析】:
首先,我们需要理解题目的要求。题目要求我们计算L到R之间所有k幸运数的和。k幸运数有两种:一种是k的倍数,另一种是个位数为k的数。
对于k的倍数,我们可以使用等差数列的求和公式来计算。假设k的倍数在L到R之间的起始位置为start,结束位置为end,那么它们的和就是(start + end) * (end - start + 1) / 2。
对于个位数为k的数,我们可以遍历L到R之间的每一个数,检查它们的个位数是否为k。如果是,就将其加入到结果中。
最后,我们将k的倍数的和和个位数为k的数的和相加,就得到了L到R之间所有k幸运数的和。
需要注意的是,当L是k的倍数时,我们需要将L也加入到结果中,因为L是个位数为k的数。同样,当R是k的倍数时,我们需要将R也加入到结果中。
根据题目给定的样例输入和样例输出,我们可以发现,样例1中的L=1,R=10,k=7。在1到10之间,只有7是7的倍数,且是个位数为7的数。因此,结果为7。样例2中的L=10,R=20,k=7。在10到20之间,有14和17两个7的倍数,且17是个位数为7的数。因此,结果为31。
喵呜刷题:让学习像火箭一样快速,快来微信扫码,体验免费刷题服务,开启你的学习加速器!