首页 > 编程语言 >2020年计挑赛往届真题(C++)

2020年计挑赛往届真题(C++)

时间:2024-11-15 15:16:18浏览次数:3  
标签:输出 运算 真题 往届 数据类型 int -- 输入 年计

因为17号要开赛了,甚至是用云端编辑器,debuff拉满,只能临时抱佛脚了

各个选择题的选择项我就不标出来了,默认ABCD排,手打太麻烦了

目录

单选题:

1.阅读以下语句:double m=0;for(int i=3;i>0;i--)m+=1/i;将m保留三位小数输出,结果为()

2.下列选项中,不是C++关键字的是()       

3.下列选项中,运算结果的数据类型为double的选项是()   

 4.下列运算结果的数据类型是int的选项为()   

5. 关于C++数据类型,下列描述错误的是() 

6."阅读以下代码:int main(){    int x=100;    cout<<__①__<<<__②__<<"">

8.关于C++输入输出,下列描述错误的是()    

9.若有int a;char b;string c;cin>>a>>b>>c;则下列输入形式错误的是()  

10.下列位运算表达式的结果为2的选项是()    

11.对于32位机,已知int x=1;下列选项中错误的是()    

x << 36 的值与 x << 4 相等

~(-(x + 1000)) 的值等于 1000

-1的二进制为32个1

x << 31 + 1 的值为负数

 12.下列运算符中,不属于关系运算符的是()    

 13.设char型变量x中的值为1010 1010,则表达式(x+5)^(-1)的计算结果的二进制为()     

14.关于位运算,下列描述正确的是()  

操作题

1."Excel表列名称由字母A~Z组成,列字母的规律如下:A、B、C.....Z、AA、AB......AZ、BA、BB.......ZZZZY、ZZZZZ.......输入:输入包含两个列名称字符串,长度均小于等于5。输出:输出两个列名称之间共有多少列样例输入:AA AZ样例输出:24"    

代码:

2."九键拼音中数字与英文字母成对应关系:2--abc, 3-def, 4-ghi, 5--jkl, 6--mno, 7--pqrs, 8--tuv, 9--wxyz。输入:输入一个由英文小写字母组成的字符串(长度<=100000)输出:输出其对应的九键数字。样例输入:fwgeta样例输出:394382" 

代码:

3."给定两个字符串str1和str2(长度均<=10000),问字符串str2内每个字符是否能在字符串str1内找到输入:第一行输入字符串str1第二行输入字符串str2输出:若能找到,则输出‘Y’,否则输出‘N’;样例输入:abdcdewrtde wbaqx样例输出:YYYNN"           

代码:         

4."有N个正整数,求这N个正整数两两之间的最大公约数之积输入:第一行输入正整数N(N<=100)第二行有N个正整数(<10000)输出:输出这N个正整数两两之间的最大公约数之积,结果对1000000007取模样例输入:46 8 9 10 样例输出:24"   

代码:   

             

    

    


单选题:

1.阅读以下语句:double m=0;for(int i=3;i>0;i--)m+=1/i;将m保留三位小数输出,结果为()

A 0 

B  1    

C1.833    

D6

答案:B

解析:涉及到了数据类型的特点,i是int类型,所以不能有小数,所以计算1/i这个过程中,三次计算的结果分别是0,0,1。因此,m的结果也就是在0,0,1。最终结果也就是1

2.下列选项中,不是C++关键字的是()       

namespace    

typename    

main    

class

答案:C

解析:

解释:

  • namespace 是 C++ 关键字,用于定义命名空间。
  • typename 是 C++ 关键字,用于声明类型名称。
  • main 不是关键字,它是 C++ 程序的入口函数名称。
  • class 是 C++ 关键字,用于定义类。

3.下列选项中,运算结果的数据类型为double的选项是()   

A'+'B'-'C'  

 2-3.0*0    

(int)1.0+5    

10LL-10

答案:B

解析:这里涉及的是数据类型的转换,

解释:

  • A'+'B'-'C':此表达式中,字符常量 'A'、'B'、'C' 会先转换为它们的 ASCII 值,这些都是整数运算,结果是整数类型。
  • 2-3.0*0:此表达式中,3.0 是一个 double 类型的常量,乘法运算会导致整个表达式的结果类型为 double。即使是 0,运算的结果也会保持为 double 类型。
  • (int)1.0+5:这里将 1.0 强制类型转换为整数,结果是整数类型,然后加上 5,最终结果也是整数类型。
  • 10LL-10:这里使用的是长长整型(long long int),减去一个整数 10,结果仍然是长长整型。

 4.下列运算结果的数据类型是int的选项为()   

1    

1LL  

 'A'    

'A'+1

答案:D

解析:这里涉及的同为数据类型转换,

  • 1:这是一个整数常量,数据类型为 int,但是我想的是这个过程并没有运算,所以不符合题意
  • 1LL:这是一个 long long int 类型的常量,数据类型是 long long int,而不是 int
  • 'A':字符常量 'A' 没有表达式的话就是默认的char类型。
  • 'A' + 1:这个表达式首先会将 'A' 转换为整数值 65,然后与 1 相加,结果是 66,仍然是 int 类型。

5. 关于C++数据类型,下列描述错误的是() 

相同数据类型所占字节数在不同系统中可能不同    

枚举类型是C++中的一种派生数据类型    

对于小数1.0,其默认数据类型是float    

数据类型转换有自动转换、赋值转换、强制转换

答案:C

解析:对于小数 1.0,C++ 默认的数据类型是 double,而不是 float。这是因为浮点数常量默认会被视为 double 类型,除非明确指定 f 后缀。例如:

  • 1.0double 类型。
  • 1.0ffloat 类型。

6."阅读以下代码:
int main()
{
    int x=100;
    cout<<__①__<<x<<__②__<<"" ""<<x;
    return 0;
},若程序输出结果为64 144,则下列选项中描述正确的是()"    

可将①补全为oct,②补全为hex,输出结果为64 144    

100的二进制为11000010    

cout是一个ostream类的对象    

变量x与0x144相等

答案:C

解析:对于A,答案反了,oct是八进制,答案是144,hex是16进制,答案是64

对于B:单纯的算错了

C:属于 ostream 类的实例。ostream 类用于输出数据。正确

D:0x是16进制的意思,这里算出来就是324,和选项A对应

7. 下列选项中与控制输出精度有关的函数为()  

setf()    

width()    

setprecision()    

fill()

答案:C

解析:认单词

  • setf():用于设置输出格式标志,例如 setf(ios::fixed) 可以控制输出为定点格式,但它本身并不直接控制精度。
  • width():设置输出的最小宽度,但不控制精度。它定义输出内容的最小宽度,内容不足时会填充空格。
  • setprecision():用于设置浮点数输出的精度,控制小数点后位数。
  • fill():用于设置填充字符,常用于设置 width() 中空白位置的填充字符,而不是控制精度。

8.关于C++输入输出,下列描述错误的是()    

getline()可以接收一个字符串,包括空格    

ofstream类的对象可以输出到文件    

cin.getline()和getline()是一样的函数    

cerr和clog流对象都是标准错误流,但存在一些区别    

答案:C

解析:cin.getline()istream 类的成员函数,专门用于从标准输入流读取一行字符串。而 getline()(不带 cin)是全局函数,通常用于读取字符串数据,无论是从标准输入流还是从其他输入流(如文件流)中读取。

9.若有int a;char b;string c;cin>>a>>b>>c;则下列输入形式错误的是()  

1<回车>a<回车>abc    

1 a abc    

1a abc    

"1,a,abc"    

答案:D

解析:char后面不是空格的任何输入都会算成string类型

10.下列位运算表达式的结果为2的选项是()    

~(-2)&2+1    

5^6+1    

4%3*7/2    

4>=5?1+2:2+3

答案:选B

解析:5 ^ 6 + 1:

  • 先计算 6 + 1
    6 + 1 = 7
  • 然后表达式变为:
    5 ^ 7
  • 计算 5 ^ 75 的二进制是 01017 的二进制是 0111,按位异或:
    0101 ^ 0111 = 0010,即结果是 2

11.对于32位机,已知int x=1;下列选项中错误的是()    

x&lt;&lt;36的值与x&lt;&lt;4的相等    

~(-(x+1000))的值等于1000  

 -1的二进制为32个1    

x&lt;&lt;31+1的值为负数

答案:D

x << 36 的值与 x << 4 相等

  • 对于32位整数,位移的最大有效范围是 0 到 31。
  • 位移操作的位数实际上是对32取模,因此 x << 36 等价于 x << (36 % 32),也就是 x << 4
  • 这个选项是正确的,因为 36 % 32 = 4,所以 x << 36x << 4 是相等的。

~(-(x + 1000)) 的值等于 1000

  • 先计算 x + 1000x = 1,所以 x + 1000 = 1001
  • 1001 取负值:-1001
  • 然后对 -1001 进行按位取反(~ 运算符):按位取反相当于将每一位的 01 反转,即 ~(-1001) 会得到 1000,这是因为按位取反后,我们得到的是 -1001 的补码表示反转的结果。
  • 这个选项是正确的,因为 ~(-(x + 1000)) = 1000

-1的二进制为32个1

  • 在32位机器上,-1 的二进制表示是补码表示,补码表示中,-1 的二进制是 11111111 11111111 11111111 11111111,即 32个 1
  • 这个选项是正确的,因为 -1 的二进制表示确实是32个 1

x << 31 + 1 的值为负数

  • 优先级问题:运算符优先级中,<<(位移操作符)优先级高于 +,所以 x << 31 + 1 会被解析为 x << (31 + 1),也就是 x << 32
  • 对于32位整数,位移32位会将值移动回原来的位置(即 x << 32 实际上等价于 x)。所以 x << 32 结果是 1
  • 这个选项是错误的,因为 x << 31 + 1 的值是 1,而不是负数

 12.下列运算符中,不属于关系运算符的是()    

!=    

==    

&lt;&lt;=    

&lt;=

答案:C

解析:c选项就是<<,位移运算符,

 13.设char型变量x中的值为1010 1010,则表达式(x+5)^(-1)的计算结果的二进制为()     

0101 0000    

1010 1111    

1111 1111    

0101 0001

答案:A

解析:计算就是175的二进制对-1进行异或运算,

14.关于位运算,下列描述正确的是()  

位运算适用于所有基本数据类型    

位运算的效率普遍较低    

~(-3)的值为2    

符号位不参与位运算

答案:C

解析:

  • 位运算适用于所有基本数据类型

    • 错误。位运算通常适用于整数类型(如 int, char, long 等),而不适用于浮点型(如 float, double)等数据类型。浮点数在内存中的存储方式与整数不同,因此无法直接进行位运算。
  • 位运算的效率普遍较低

    • 错误。位运算实际上是非常高效的,通常比加法、乘法等算术运算要快,因为它直接操作位级数据,不涉及复杂的算术计算。所以这句话是错误的,位运算的效率通常较高。
  • 符号位不参与位运算

    • 错误。符号位是会参与位运算的。在二进制补码表示法中,符号位实际上也是一个位,并且在进行位运算(如按位与、按位或、按位异或等)时,符号位也会参与运算。因此,符号位会影响运算的结果。

15.若有一个3*3的int型二维数组n,第一、二、三行分别存储数据为{1,2,3}、{4,5,6}、{7,8,9},有一个int型指针p,p=n[0];则(*(p+2)+2)的值为()    

2    

3    

4    

答案:选D

解析:

  • p 是指向 n[0][0] 的指针,也就是说 p 当前指向数组 n[0] 的第一个元素(值为 1)。
  • p + 2 会使指针向后偏移两个元素(即跳过 n[0][0]n[0][1],指向 n[0][2],即值为 3)。
  • *(p + 2) 解引用该指针,得到值为 3(即 n[0][2] 的值)。
  • 然后,*(p + 2) + 2 就是 3 + 2 = 5

操作题

必须要提的是,这是我第一次参加这个计挑赛,对比赛用的云端编辑器一点了解都没有

1."Excel表列名称由字母A~Z组成,列字母的规律如下:
A、B、C.....Z、AA、AB......AZ、BA、BB.......ZZZZY、ZZZZZ.......
输入:
输入包含两个列名称字符串,长度均小于等于5。
输出:
输出两个列名称之间共有多少列
样例输入:
AA AZ
样例输出:
24"    

代码:
#include<bits/stdc++.h>

using namespace std;

int satoi(string s){
	int num = 0;
	for(int i =0;i<s.size();i++){
		num *=26;
		num+= s[i] - 'A'+1;
	}
	return num;
}

int main()
{
	string ar1,ar2;
	cin>>ar1>>ar2;
	int num1 =satoi(ar1);
	int num2 = satoi(ar2);
	cout<<num2-num1-1<<endl;
	return 0;
}

2."九键拼音中数字与英文字母成对应关系:2--abc, 3-def, 4-ghi, 5--jkl, 6--mno, 7--pqrs, 8--tuv, 9--wxyz。
输入:
输入一个由英文小写字母组成的字符串(长度<=100000)
输出:
输出其对应的九键数字。
样例输入:
fwgeta
样例输出:
394382" 

代码:
#include<bits/stdc++.h>

using namespace std;



int main()
{
	map<char,int>ar;
		int len =0;
		int num =2;
		for(char a = 'a';a<='o';a++){
			ar[a]=num;
			len++;
			if(len==3){
				num++;
				len=0;
			}
		}
		for(char a = 'p';a<='z';a++){
			ar[a]=num;
			len++;
			if(len==4){
				num++;
				len=0;
			}
		}
	ar['w']=9;
	string s;
	cin>>s;
	const char* s1 = s.c_str();
	for(int i=0;i<s.size();i++){
		cout<<ar[s1[i]];
	}
	return 0;
}

3."给定两个字符串str1和str2(长度均<=10000),问字符串str2内每个字符是否能在字符串str1内找到
输入:
第一行输入字符串str1
第二行输入字符串str2
输出:
若能找到,则输出‘Y’,否则输出‘N’;
样例输入:
abdcdewrtde 
wbaqx
样例输出:
YYYNN"           

代码:         
#include<bits/stdc++.h>

using namespace std;



int main()
{
	string str1,str2;
	cin>>str1>>str2;
	for(int i=0;i<str2.size();i++){
		if(str1.find(str2[i])!=string::npos){
			cout<<"Y";
		}
		else
			cout<<"N";
	}
	return 0;
}

4."有N个正整数,求这N个正整数两两之间的最大公约数之积
输入:
第一行输入正整数N(N<=100)
第二行有N个正整数(<10000)
输出:
输出这N个正整数两两之间的最大公约数之积,结果对1000000007取模
样例输入:
4
6 8 9 10 
样例输出:
24"   

代码:   
             
#include<bits/stdc++.h>

using namespace std;

const int n =1000000007;

int main()
{
	
	int res =  1;
	int N;
	cin>>N;
	vector<int>ar(N+1);
	for(int i=0;i<N;i++){
		cin>>ar[i];
	}
	for(int i=0;i<N-1;i++){
		for(int j=i+1;j<N;j++){
			res*=__gcd(ar[i],ar[j]);
		}
	}
	cout<<res%n;
	return 0;
}
    
 
    

标签:输出,运算,真题,往届,数据类型,int,--,输入,年计
From: https://blog.csdn.net/m0_73302939/article/details/143793069

相关文章

  • 2024年09月CCF-GESP编程能力等级认证Python编程二级真题解析
    本文收录于专栏《Python等级认证CCF-GESP真题解析》,专栏总目录:点这里,订阅后可阅读专栏内所有文章。一、单选题(每题2分,共30分)第1题据有关资料,山东大学于1972年研制成功DJL-1计算机,并于1973年投入运行,其综合性能居当时全国第三位。DJL-1计算机运算控制部分所使用的......
  • 【华为OD机试真题E卷】573、区间交叠问题 | 机试真题+思路参考+代码解析(E卷复用)(C++、J
    文章目录一、题目......
  • 真题练习6-Excel电子表格-全国计算机等级考试二级MS Office高级应用与设计考试【汪老
    视频解析真题练习6-Excel电子表格_哔哩哔哩_bilibili题库下载全国计算机等级考试题库下载(用电脑下载安装):请点击题目要求某公司销售部门主管大华拟对本公司产品前两季度的销售情况进行统计,按下述要求帮助大华完成统计工作:1.在考生文件夹下,将“Excel素材.xlsx”文件另存为“......
  • 2024年软考高级“系规“真题(回忆版),含综合知识、案例分析和论文
    一、2024年下半年系统规划与管理师《综合知识》真题1.IT服务团队建设过程中,相比其他阶段,人员沟通在()显得尤为重要。A.组建期B.风暴期 C.规范期D.表现期【参考答案】B2.团队成员之间已经形成一定配合关系,团队价值也基本定型,团队成员形成共享愿景,目前该团队处于团队建......
  • 华为OD机试真题-寻找最大价值的矿堆-2024年OD统一考试(E卷)
    最新华为OD机试考点合集:华为OD机试2024年真题题库(E卷+D卷+C卷)_华为od机试题库-CSDN博客     每一题都含有详细的解题思路和代码注释,精编c++、JAVA、Python三种语言解法。帮助每一位考生轻松、高效刷题。订阅后永久可看,发现新题及时跟新。题目描述给你一个由''(空地)......
  • 【系统架构设计师-2024下半年真题】综合知识-参考答案及部分详解(完整回忆版)
    更多内容请见:备考系统架构设计师-专栏介绍和目录文章目录【第1题】【第2题】【第3题】【第4题】【第5题】【第6~10题】【第11~12题】【第13~14题】【第15题】【第16题】【第17题】【第18题】【第19题】【第20题】【第21题】【第22题】【第23题】......
  • 2024华为OD机试真题---中文分词模拟器
    华为OD机试中的中文分词模拟器题目,通常要求考生对给定的不包含空格的字符串进行精确分词。这个字符串仅包含英文小写字母及英文标点符号(如逗号、分号、句号等),同时会提供一个词库作为分词依据。以下是对这类题目的详细解析一、题目描述给定一个连续不包含空格的字符串Q,该字......
  • 华为OD机试真题---电脑病毒感染
    华为OD机试中的“电脑病毒感染”题目是一个典型的图论问题,涉及到网络中的电脑如何通过连接传播病毒,并计算感染所有电脑所需的最短时间。以下是对该题目的详细解析:一、题目描述一个局域网内有很多台电脑,分别标注为0~N-1的数字。相连接的电脑距离不一样,所以感染时间不一样,感......
  • 【软考】系统架构设计师-2018年下半年下午案例真题及答案
    全国计算机技术与软件专业技术资格(水平)考试高级系统架构设计师2018年下半年下午试卷 案例试题一 【说明】某文化产业集团委托软件公司开发一套文化用品商城系统,业务涉及文化用品销售、定制、竞拍和点评等板块,以提升商城的信息化建设水平。该软件公司组织项......
  • 【软考】系统架构设计师-2018年下半年下午论文真题及答案
    全国计算机技术与软件专业技术资格(水平)考试高级系统架构设计师2018年下半年下午试卷 论文试题一 论软件开发过程 RUP 及其应用RUP(RationalUnifiedProcess)是 IBM 公司一款软件开发过程产品,它提出了一整套以UML 为基础的开发准则,用以指导软件开发人员以 U......