当前位置: 首页 > news >正文

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

因为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";}elsecout<<"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;
}
    
 
    
http://www.lryc.cn/news/486632.html

相关文章:

  • ES6进阶知识二
  • 大语言模型通用能力排行榜(2024年10月8日更新)
  • 第六节、Docker 方式部署指南 github 上项目 mkdocs-material
  • 【MySQL】MySQL中的函数之JSON_REPLACE
  • 【大数据学习 | HBASE高级】hbase的API操作
  • C++(Qt)软件调试---内存泄漏分析工具MTuner (25)
  • python核心语法
  • MATLAB用CNN-LSTM神经网络的语音情感分类深度学习研究
  • 智能网页内容截图工具:AI助力内容提取与可视化
  • Axure设计之文本编辑器制作教程
  • 【MyBatis源码】深入分析TypeHandler原理和源码
  • 号卡分销系统,号卡系统,物联网卡系统源码安装教程
  • 常用命令之LinuxOracleHivePython
  • 从dos上传shell脚本文件到Linux、麒麟执行报错“/bin/bash^M:解释器错误:没有那个文件或目录”
  • 使用 Go 实现将任何网页转化为 PDF
  • 文件操作和IO
  • 【C++滑动窗口】1248. 统计「优美子数组」|1623
  • C语言导航 4.1语法基础
  • 使用 Python 和 Py2Neo 构建 Neo4j 管理脚本
  • Centos 7 安装wget
  • 定时器的小应用
  • linux企业中常用NFS、ftp服务
  • 数据结构与算法分析模拟试题及答案5
  • .NET 9.0 中 System.Text.Json 的全面使用指南
  • Python自动检测requests所获得html文档的编码
  • 11.12机器学习_特征工程
  • RAG经验论文《FACTS About Building Retrieval Augmented Generation-based Chatbots》笔记
  • 【配置后的基本使用】CMake基础知识
  • ollama+springboot ai+vue+elementUI整合
  • 【项目开发】理解SSL延迟:为何HTTPS比HTTP慢?