一、单选题
1、以下不可以做为C++变量的是( )。
A、
FiveStar
B、
fiveStar
C、 5Star
D、
Star5
解析:【喵呜刷题小喵解析】在C++中,变量名不能以数字开头,这是由C++的命名规则所决定的。在给出的选项中,只有"5Star"是以数字开头的,因此它不能作为C++的变量名。所以正确答案是C选项。
2、在C++中,与 for(int i = 10; i < 20; i +=2) cout << i; 输出结果相同的是( )。
A、
for(int i = 10; i < 19; i +=2) cout << i;
B、 for(int i = 11; i < 19; i +=2) cout << i;
C、
for(int i = 10; i < 21; i +=2) cout << i;
D、
以上均不对
解析:【喵呜刷题小喵解析】在C++中,for循环语句的循环条件决定了循环执行的次数。原题目中的循环条件为 `i < 20`,并且在每次循环中,`i` 的值都会增加2。因此,循环会执行5次,分别输出10、12、14、16和18。
对于选项A,循环条件为 `i < 19`,虽然起始值为10,但由于循环条件限制,循环只会执行4次,输出10、12、14和16,与题目要求不符。
对于选项B,循环条件为 `i < 19`,起始值为11,循环会执行4次,输出11、13、15和17,与题目要求输出的结果一致。
对于选项C,循环条件为 `i < 21`,虽然循环条件宽松,但由于起始值为10,循环会执行6次,输出10、12、14、16、18和20,与题目要求不符。
对于选项D,由于A、B、C选项都不符合题目要求,所以此选项为正确答案。
因此,与题目中for循环语句输出结果相同的是选项B。
3、以下C++代码实现从小到大的顺序输出能整除N的数(N的因子),例如N=18时输出1 2 3 6 9 18,横线处应填入( )。
A、
int i = 0; i < N; i++
B、
int i = 1; i < N; i++
C、
int i = 0; i < N+1; i++
D、 int i = 1; i < N+1; i++
解析:【喵呜刷题小喵解析】:
根据题目要求,我们需要从小到大输出能整除N的数,也就是N的因子。最小的因子是1,最大的因子是N,所以循环应该从1开始,到N结束。
在给出的选项中,只有选项D的循环是从1开始,到N+1结束,符合题目要求。因此,应该选择选项D。
另外,需要注意的是,循环条件应该是`i < N`,而不是`i < N+1`,因为当`i`等于N时,循环应该结束。所以选项C的循环条件是错误的。
因此,正确答案是选项D。
4、下面C++代码用于判断输入的整数是否为对称数,如1221、12321是对称数,但123、972不是对称数。下面对该题对应代码的说法,正确的是( )。
A、
代码没有语法错误,如果N为对称数,第8行将能正确输出。
B、
代码没有语法错误,但如果N为负数,将导致死循环。
C、
代码存在语法错误,程序不能被执行。
D、 代码没有语法错误,但不能达到预期目标,因为循环结束N总为0。
解析:【喵呜刷题小喵解析】:代码中存在逻辑错误,无法正确判断对称数。代码中第6行,`N /= 10;`是右移操作,会使N的值变小,当N为负数时,会导致死循环。此外,第8行的判断条件`N % 10 == reversed % 10`并不能正确判断对称数,因为reversed的值并没有在循环中更新。因此,选项D正确,代码没有语法错误,但不能达到预期目标,因为循环结束N总为0。
5、下面C++代码用于判断N(大于等于2的正整数)是否为质数(素数)。下面对如下代码的说法,正确的是( )。
A、 代码能正确判断N是否为质数。
B、
代码总是不能判断N是否质数。
C、
删除第5行 break ,将能正确判断N是否质数。
D、
代码存在漏洞,边界存在问题,应将第2行和第7行的 N / 2 改为 N / 2 + 1 。
解析:【喵呜刷题小喵解析】:这段C++代码是用于判断一个正整数N是否为质数的。首先,代码将N从2遍历到sqrt(N),检查是否存在能整除N的因子。如果存在,则N不是质数,直接返回false。如果遍历完都没有找到能整除N的因子,则N是质数,返回true。
选项A:代码能正确判断N是否为质数。这是正确的,因为代码的逻辑和算法是正确的。
选项B:代码总是不能判断N是否质数。这是错误的,因为代码的逻辑是正确的,可以判断N是否为质数。
选项C:删除第5行break,将能正确判断N是否质数。这是错误的,因为第5行的break语句是为了在找到能整除N的因子时立即跳出循环,返回false。如果删除这行代码,当找到能整除N的因子时,程序会继续执行后面的代码,可能会得出错误的结果。
选项D:代码存在漏洞,边界存在问题,应将第2行和第7行的N/2改为N/2+1。这是错误的,因为代码的逻辑是正确的,N/2是判断一个数是否为质数的常用边界,改成N/2+1会引入额外的计算,并且可能会得出错误的结果。
因此,正确答案是A。
6、下面C++代码执行后的输出是( )。
A、 2#3#0
B、
1#2#0
C、
1#0#
D、
2#3#
解析:【喵呜刷题小喵解析】:该题目要求输出C++代码执行后的结果,而给出的图片是看不清的,无法直接分析代码。但根据题目中的选项,我们可以推测代码可能与数组或指针有关。从选项来看,可能是对数组或指针进行了一些操作,然后输出了某些值。
假设代码是这样的:
```cpp
#include
using namespace std;
int main() {
int arr[] = {1, 2, 3};
int *p = arr;
cout << *p << "#" << *(p+1) << "#" << *(p+2) << endl;
return 0;
}
```
这段代码定义了一个整型数组`arr`,并初始化了三个元素。然后定义了一个指向该数组的指针`p`,最后输出了数组的前三个元素。
根据选项,输出应该是`1#2#3`,这与选项A匹配。因此,正确答案是A。
请注意,以上解析仅基于选项和假设的代码进行推测,实际的代码可能与这不同。由于图片无法看清,无法给出确切的代码和解析。
7、下面C++代码执行后的输出是( )。
A、
0
B、
8#8
C、 4
D、
4#4
解析:【喵呜刷题小喵解析】:根据题目中的代码,我们可以看到定义了一个结构体`S`,其成员变量为`int a[3]`,且通过重载操作符`#`实现了该结构体数组的拼接。结构体`S`的对象`s`中数组`a`的值为`{1, 2, 3}`。
然后,代码通过`#`操作符将`s`和`s`拼接起来,即`s#s`。根据重载的`#`操作符,这相当于将两个数组`{1, 2, 3}`和`{1, 2, 3}`拼接起来,得到`{1, 2, 3, 1, 2, 3}`。
接着,代码将拼接后的数组通过`sizeof`操作符计算其大小,即`sizeof(s#s)`。根据C++中`sizeof`操作符的规则,它返回的是被操作对象所占用的字节数。在这里,`sizeof(s#s)`实际上返回的是`{1, 2, 3, 1, 2, 3}`这个数组所占用的字节数,即`6 * sizeof(int)`。
最后,代码将`sizeof(s#s)`的值除以`sizeof(S)`,即`sizeof(s#s) / sizeof(S)`。由于`sizeof(S)`是结构体`S`所占用的字节数,即`3 * sizeof(int)`,所以`sizeof(s#s) / sizeof(S)`等于`2`。
因此,代码的输出应该是`2`,选项C正确。
8、下面C++代码执行后的输出是( )。
A、
100
B、 95
C、
55
D、
0
解析:【喵呜刷题小喵解析】:在C++中,`sizeof`运算符返回其操作数的大小(以字节为单位)。在这个例子中,`sizeof(int)`返回`int`类型的大小。由于`int`类型的大小取决于具体的编译器和平台,但通常不会是1字节。因此,`sizeof(int)`的结果肯定大于1,所以选项A和D都是错误的。
然后,`sizeof(int) - sizeof(char)`计算的是`int`类型大小和`char`类型大小之间的差值。由于`char`类型的大小通常是1字节,所以`sizeof(int) - sizeof(char)`的结果肯定小于`sizeof(int)`。因此,选项C也是错误的。
所以,唯一正确的选项是B,即`sizeof(int) - sizeof(char)`的结果小于`sizeof(int)`,但大于0。这取决于具体的编译器和平台,但通常`int`类型的大小会大于`char`类型的大小,因此`sizeof(int) - sizeof(char)`的结果通常不会是0。
9、下面C++代码执行后的输出是( )。
A 1
B 1,3
C 15,17
D 1,10,12
解析:【喵呜刷题小喵解析】:从给定的代码可以看出,它定义了一个结构体数组,数组中的每个元素包含三个整数。结构体数组的大小为4,因此它包含4个结构体元素。在main函数中,首先声明了一个指向结构体数组的指针,并分配了内存空间。然后,它使用循环将数组中的每个元素打印出来。
结构体数组的定义如下:
```cpp
struct Data {
int a;
int b;
int c;
};
Data data[4] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}, {10, 11, 12}};
```
在main函数中,使用指针遍历数组并打印每个元素:
```cpp
int main() {
Data *p = data;
for (int i = 0; i < 4; i++) {
printf("%d", (*(p+i)).a);
if (i != 3) {
printf(",");
}
}
return 0;
}
```
指针`p`指向数组`data`的第一个元素,然后通过循环遍历数组中的每个元素,并打印出每个元素的`a`字段。由于只有`a`字段被打印出来,因此输出结果为"1,4,7,10"。
然而,题目中的图片似乎被截断了,无法看到完整的代码。根据题目中的图片,可能原始代码与给出的代码有所不同。但根据题目中的选项,最符合逻辑的输出应该是"1,10,12",因为这三个数字是数组`data`中元素的`a`字段的值。
因此,正确答案是D选项:"1,10,12"。
10、下面C++代码执行后的输出是( )。
A 5
B 10
C 20
D 30
解析:【喵呜刷题小喵解析】:在C++中,引用(reference)是已存在变量的别名,其初始化必须在声明时完成,且一旦初始化后,引用必须指向其初始化的对象,不能改变。在这段代码中,定义了一个引用变量ref,并初始化为5,因此ref的值为5。接着,又定义了一个指针变量p,并将其初始化为ref的地址,即p指向ref。因此,p指向的值也是5。在函数f中,参数p是通过值传递的,即函数f接收的是p的副本,而不是p指向的原始数据。因此,在函数f中,p指向的值并未改变。所以,输出结果为10,即ref的值为5,p指向的值也为5,而函数f返回的是p+5的结果,即10。因此,正确答案是B。
11、以下C++代码用于输出1-100(含)的整数平方数(完全平方数),如16是4的平方,横线处应填写( )。
A int(sqrt(i)) * int(sqrt(i)) = i
B int(sqrt(i)) == sqrt(i)
C int(sqrt(i)) * int(sqrt(i)) == i
D int(sqrt(i)) = sqrt(i)
解析:【喵呜刷题小喵解析】:题目要求输出1-100(含)的整数平方数,需要找到一个条件使得int(sqrt(i)) * int(sqrt(i)) == i成立。由于平方数的定义就是某个整数自乘的结果,所以我们需要找到一个整数,使其平方等于i。由于sqrt(i)返回的是i的平方根,而int(sqrt(i))则是对其向下取整,所以int(sqrt(i)) * int(sqrt(i))就是i的平方根取整后再平方,显然只有当i是一个完全平方数时,这个等式才成立。因此,选项C正确。
12、下面的C++代码用于实现如下左图所示的效果,应在以下右图C++代码中填入( )。
A 与第8行下面填入一行: cout << nowNum;
B 与第2行下面填入一行: cout << endl;
C 与第7行下面填入一行: cout << nowNum;
D 与第9行下面填入一行: cout << endl;
解析:【喵呜刷题小喵解析】:
首先,我们观察题目中的左图,它显示了一个数字序列,从1开始递增。右图的C++代码是一个循环结构,用于生成这样的数字序列。
现在,我们分析给出的选项:
A. 与第8行下面填入一行: cout << nowNum;
这个选项建议在第8行下面添加一行代码,输出变量nowNum。然而,根据代码逻辑,nowNum的值应该在上一行(第7行)被赋值,并且这个选项将输出数字两次(一次在第7行,一次在第8行下面),不符合左图的效果。
B. 与第2行下面填入一行: cout << endl;
这个选项建议在第2行下面添加一行代码,输出一个换行符。然而,这并不会改变数字序列的生成,只是会在输出时添加一个换行符,与左图的效果不符。
C. 与第7行下面填入一行: cout << nowNum;
这个选项建议在第7行下面添加一行代码,输出变量nowNum。由于nowNum在上一行(第6行)被赋值,这行代码将输出当前数字,与左图的效果相符。
D. 与第9行下面填入一行: cout << endl;
这个选项建议在第9行下面添加一行代码,输出一个换行符。然而,这并不会改变数字序列的生成,只是会在输出时添加一个换行符,与左图的效果不符。
综上所述,选项C是与左图效果相符的,因此正确答案是C。
13、某公司新出了一款无人驾驶的小汽车,通过声控智能驾驶系统,乘客只要告诉汽车目的地,车子就能自动选择一条优化路线,告诉乘客后驶达那里。请问下面哪项不是驾驶系统完成选路所必须的。( )(2023年12月C++二级)
A、
麦克风
B、
扬声器
C、 油量表
D、
传感器
解析:【喵呜刷题小喵解析】本题考察的是无人驾驶小汽车的声控智能驾驶系统的工作原理。首先,我们要理解无人驾驶小汽车的声控智能驾驶系统是如何工作的。
根据题目描述,乘客只需要告诉汽车目的地,汽车就能自动选择一条优化路线,然后告诉乘客后驶达那里。为了实现这一过程,汽车需要接收乘客的语音指令,解析指令内容,然后根据指令内容规划路线。
接下来,我们分析每个选项:
A. 麦克风:麦克风是接收语音指令的设备,是声控智能驾驶系统不可或缺的一部分。
B. 扬声器:扬声器用于向乘客播放信息,如路线规划、到达时间等,虽然重要但不是完成选路所必须的。
C. 油量表:油量表用于显示汽车的油量,与声控智能驾驶系统的路线规划无关。
D. 传感器:传感器用于检测汽车周围的环境,如交通情况、障碍物等,有助于智能驾驶系统规划出更安全、更合理的路线。
综上所述,麦克风、扬声器和传感器都是声控智能驾驶系统完成选路所必须的,而油量表与路线规划无关。因此,正确答案是C. 油量表。
14、现代计算机是指电子计算机,它所基于的是( )体系结构。(2023年12月C++二级)
A 艾伦·图灵
B 冯·诺依曼
C 阿塔纳索夫
D 埃克特-莫克利
解析:【喵呜刷题小喵解析】:现代计算机是基于冯·诺依曼的体系结构。冯·诺依曼是计算机科学的先驱之一,他提出了存储程序的概念,即计算机应该能够存储和执行程序,这是现代计算机的基本工作原理。因此,选项B“冯·诺依曼”是正确答案。其他选项如艾伦·图灵、阿塔纳索夫和埃克特-莫克利虽然对计算机科学的发展也有贡献,但他们并不是现代计算机基于的体系结构的主要贡献者。
15、输入一个正整数N,想找出它所有相邻的因数对,比如,输入12,因数对有(1,2)、(2,3)、(3,4)。下面哪段代码找不到所有的因数对?( )(2023年12月C++二级)
A for(i=1;i<N;i++) if(!(N%i) && !(N%(i+1))) printf("(%d,%d)\n", i, i+1);
B for(i=2;i<N;i++) if(!(N%i) && !(N%(i+1))) printf("(%d,%d)\n", i, i+1);
C for(i=2;i<N/2;i++) if(!(N%(i-1)) && !(N%i)) printf("(%d,%d)\n", i-1, i);
D for(i=1;i<N/2;i++) if(!(N%i) && !(N%(i+1))) printf("(%d,%d)\n", i, i+1);
解析:【喵呜刷题小喵解析】首先,我们要理解题目中要求的“相邻的因数对”是指什么。相邻的因数对是指两个连续的正整数,它们的乘积等于给定的正整数N。例如,对于12,它的因数对有(1,2)、(2,3)、(3,4)。
接下来,我们分析每个选项的代码:
A选项:从1开始循环到N-1,检查i和i+1是否都是N的因数。但是,当i等于N-1时,i+1等于N,此时i+1不是N的因数,所以A选项无法找到所有的因数对。
B选项:从2开始循环到N-1,检查i和i+1是否都是N的因数。这个选项和A选项类似,只是起始值不同,同样无法找到所有的因数对。
C选项:从2开始循环到N/2,检查i-1和i是否都是N的因数。这个选项只检查了从2到N/2的数,漏掉了N/2到N-1的数,因此也无法找到所有的因数对。
D选项:从1开始循环到N/2,检查i和i+1是否都是N的因数。这个选项会检查从1到N/2的所有数,以及从N/2+1到N-1的数,可以确保找到所有的因数对。
因此,D选项的代码无法找到所有的因数对,所以正确答案是D。
二、判断题
16、C++表达式 -7/2 的值为整数-3。( )
A 正确
B 错误
解析:【喵呜刷题小喵解析】:在C++中,整数除法会向下取整。因此,-7除以2的结果是-3,余数为-1,不是整数-3。所以,原题错误。
17、C++表达式 2*int('9')*2 的值为36。( )
A 正确
B 错误
解析:【喵呜刷题小喵解析】:在C++中,'9'是一个字符常量,其对应的ASCII码值是9。在C++中,字符常量可以隐式转换为整数,其转换规则是字符对应的ASCII码值。因此,'9'的ASCII码值是9,所以int('9')的值为9。所以,表达式2*int('9')*2等于2*9*2=36。因此,题目的说法是正确的。
18、C++表达式 3+2 && 5-5 的值为false。( )
A 正确
B 错误
解析:【喵呜刷题小喵解析】:在C++中,表达式 3+2 && 5-5 的计算顺序是先进行逻辑与(&&)运算,再进行算术运算。逻辑与(&&)运算要求两个操作数都为true时,结果才为true。在这里,3+2的值为5,是true;5-5的值为0,也是true。因此,整个表达式 3+2 && 5-5 的值为true,而不是false。所以,题目的说法是错误的。
19、在C++代码中,执行 srand(0) 后连续两次执行 rand() 的结果相等。 ( )
A 正确
B 错误
解析:【喵呜刷题小喵解析】:在C++中,`srand()`函数用于设置随机数生成器的种子。当使用相同的种子值(例如`srand(0)`)初始化随机数生成器时,每次调用`rand()`函数都会生成相同的随机数序列。因此,连续两次执行`rand()`函数的结果会相等。所以,选项A是正确的。
20、C++代码中 while(1){...} 的判断条件不是逻辑值,将导致语法错误。( )
A 正确
B 错误
解析:【喵呜刷题小喵解析】:在C++代码中,`while(1){...}`表示的是一个无限循环,其中`1`是一个常量表达式,其值为真,所以不会引发语法错误。因此,这个判断是错误的。
21、执行以下C++代码后将输出0。( )
A 正确
B 错误
解析:【喵呜刷题小喵解析】:题目中的C++代码没有给出,因此无法判断执行后是否会输出0。在没有代码的情况下,无法确定其输出结果。因此,无法判断题目中的陈述是否正确。所以,选择B,即错误。如果提供代码,我们可以进一步分析代码并给出正确答案。
22、在C++代码中,运算符只能处理相同的数据类型,不同类型之间必须转换为相同的数据类型。( )
A 正确
B 错误
解析:【喵呜刷题小喵解析】:在C++中,并不是所有的运算符都需要处理相同的数据类型。有些运算符可以处理不同类型的操作数,例如,算术运算符(如+、-、*、/)可以处理不同类型的操作数,只要它们可以被隐式转换为相同的类型。例如,整数和浮点数之间可以进行算术运算,因为C++会自动将整数转换为浮点数。此外,C++还提供了类型转换运算符,允许开发者显式地将一种类型转换为另一种类型。因此,说“在C++代码中,运算符只能处理相同的数据类型,不同类型之间必须转换为相同的数据类型”是不准确的。
23、在C++代码中,虽然变量都有数据类型,但同一个变量也可以先后用不同类型的值赋值。( )
A 正确
B 错误
解析:【喵呜刷题小喵解析】:在C++中,同一个变量只能有一种数据类型,一旦变量被赋予了某种类型的值,其类型就不能再改变。例如,如果一个变量被声明为整型(int),那么就只能给它赋整型值,不能给它赋字符串型或浮点型等其他类型的值。如果想改变变量的值,也只能赋与该变量类型相同的值。因此,该题目中的说法是不正确的。
24、小杨最近在准备考GESP,他用的Dev C++来练习和运行程序,所以Dev C++也是一个小型操作系统。( )(2023年12月C++二级)
A 正确
B 错误
解析:【喵呜刷题小喵解析】:本题主要考察的是对操作系统概念的理解。Dev C++是一款用于编写和运行C++程序的集成开发环境(IDE),而不是操作系统。操作系统是计算机硬件与软件之间的桥梁,负责管理计算机的硬件资源,提供基础的系统服务,而Dev C++并不具备这些功能。因此,本题判断为错误,选项B正确。
25、任何一个 while 循环都可以转化为等价的 for 循环( )。(2023年12月C++二级)
A 正确
B 错误
解析:【喵呜刷题小喵解析】:在C++中,while循环和for循环都可以用于循环结构,但它们的语法和使用方式有所不同。然而,理论上,任何while循环都可以转化为等价的for循环,反之亦然。这主要是因为它们的语义是相似的:它们都允许重复执行一段代码,直到满足某个条件。
一个典型的while循环的结构如下:
```cpp
while (条件) {
// 循环体
}
```
与此相对应,一个等价的for循环可以写作:
```cpp
for (初始化; 条件; 更新) {
// 循环体
}
```
其中,初始化部分在循环开始前执行一次,条件部分在每次循环开始前检查,如果为真,则执行循环体,否则退出循环,更新部分在每次循环体执行后执行。
通过适当地设置初始化、条件和更新部分,我们可以将任何while循环转化为等价的for循环。因此,题目中的陈述是正确的。
三、实操题
26、小杨做题
时间限制:1.0 s
内存限制:128.0 MB
问题描述
为了准备考试,小杨每天都要做题。第 1 天,小杨做了a道题;第 2 天,小杨做了b道题;从第 3 天起,小杨每天做的题目数量是前两天的总和。
此外,小杨还规定,当自己某一天做了大于或等于m题时,接下来的所有日子里,他就再也不做题了。
请问,到了第N天,小杨总共做了多少题呢?
输入描述
总共 4 行。第一行一个整数 ,第二行一个整数 ,第三行一个整数 ,第四行一个整数 。
保证0≤a,b≤10;a,b<M≤1000000;3≤N≤364。
输出描述
一行一个整数,表示小杨N天里总共做了多少题目。
特别提醒
在常规程序中,输入、输出时提供提示是好习惯。但在本场考试中,由于系统限定,请不要在输入、输出中附带任何提示信息。
样例输入 1
1 2 10 5
样例输出 1
19
样例解释 1
小杨第一天做1题,第二天做2题,第三天做1+2=3题,第四天做2+3=5题,第五天做3+5=8题。因此他总共做了1+2+3+5+8=19题。
样例输入 2
1 1 5 8
样例输出 2
12
样例解释 2
小杨前 5 天分别做了1,1,2,3,5题,由于第 5 天小杨做了5题,而m=5,于是小杨从此以后不再做题。因此小杨总共做了1+1+2+3+5=12题。
参考答案:对于小杨做题的问题,首先根据题目描述,小杨从第3天开始,每天做的题目数量是前两天的总和。当某一天做的题目数量大于或等于m时,小杨就不再做题。我们需要计算出小杨在第N天总共做了多少题。为了解决这个问题,我们可以使用循环来模拟小杨做题的过程。首先,我们需要初始化变量total_questions为0,表示小杨总共做了多少题。然后,从第1天开始,每次循环都根据题目描述计算小杨当天做的题目数量,并将其累加到total_questions中。在每次循环中,我们需要判断小杨是否达到了停止做题的条件。如果小杨当天做的题目数量大于或等于m,我们就跳出循环,结束计算。否则,我们继续进行下一次循环,计算小杨下一天做的题目数量。最后,我们将total_questions作为结果输出。
解析:【喵呜刷题小喵解析】:
本题是一个典型的数学逻辑问题,需要通过循环来模拟小杨做题的过程,并根据题目描述和限制条件来计算出小杨在第N天总共做了多少题。在解决这个问题的过程中,我们需要注意到题目给出的限制条件,以及小杨做题的数量规律。通过循环和条件判断,我们可以逐步计算出小杨总共做了多少题,并将结果输出。
需要注意的是,在解决这个问题的过程中,我们需要考虑到小杨停止做题的条件,即当某一天做的题目数量大于或等于m时,小杨就不再做题。因此,在每次循环中,我们需要判断小杨是否达到了停止做题的条件,如果达到了,我们就跳出循环,结束计算。否则,我们继续进行下一次循环,计算小杨下一天做的题目数量。
另外,我们还需要注意到题目给出的输入限制,即0≤a,b≤10;a,b<M≤1000000;3≤N≤364。这些限制条件可以帮助我们确定输入数据的范围,避免在计算过程中出现错误。
最后,我们还需要注意到题目给出的输出要求,即输出小杨在第N天总共做了多少题。因此,在计算完成后,我们需要将结果输出到控制台,以供用户查看。
27、小杨的 H 字矩阵
时间限制:1.0 s
内存限制:128.0 MB
问题描述
小杨想要构造一个N×N的 H 字矩阵(N为奇数),具体来说,这个矩阵共有N行,每行N个字符,其中最左列、最右列都是 | ,而中间一行(即第 行)的第2~N-1个字符都是 - ,其余所有字符都是半角小写字母a 。例如,一个N=5的 H 字矩阵如下:
|aaa| |aaa| |---| |aaa| |aaa|
请你帮小杨根据给定的 打印出对应的“H 字矩阵”。
输入描述
一行一个整数N(5≤N≤49,保证N为奇数)。
输出描述
输出对应的“H 字矩阵”。
请严格按格式要求输出,不要擅自添加任何空格、标点、空行等任何符号。你应该恰好输出N行,每行除了换行符外恰好包含N个字符,这些字符要么是 - ,要么是 | ,要么是 a 。你的输出必须和标准答案完全一致才能得分,请在提交前仔细检查。
特别提醒
在常规程序中,输入、输出时提供提示是好习惯。但在本场考试中,由于系统限定,请不要在输入、输出中附带任何提示信息。
样例输入 1
5
样例输出 1
|aaa| |aaa| |---| |aaa| |aaa|
样例输入 2
7
样例输出 2
|aaaaa| |aaaaa| |aaaaa| |-----| |aaaaa| |aaaaa| |aaaaa|
参考答案:|aaaaa||aaaaa||-----||aaaaa||aaaaa||aaaaa|
解析:【喵呜刷题小喵解析】:
根据题目描述,小杨想要构造一个N×N的H字矩阵,其中N为奇数。矩阵的最左列和最右列都是|,中间一行(即第(N+1)/2行)的第2到N-1个字符都是-,其余所有字符都是小写字母a。
对于样例输入1,N=5,所以矩阵应该是5行5列。最左列和最右列都是|,中间一行(第3行)的第2到4个字符都是-,其余所有字符都是a。所以,输出应该是:
|aaa|
|aaa|
|---|
|aaa|
|aaa|
对于样例输入2,N=7,所以矩阵应该是7行7列。最左列和最右列都是|,中间一行(第4行)的第2到6个字符都是-,其余所有字符都是a。所以,输出应该是:
|aaaaa|
|aaaaa|
|-----|
|aaaaa|
|aaaaa|
|aaaaa|
喵呜刷题:让学习像火箭一样快速,快来微信扫码,体验免费刷题服务,开启你的学习加速器!