本试卷满分100分,考试时间100分钟。
请将答案填写在答题卡上,在试卷上作答无效,务必写清学校、姓名等个人信息。
一、单选题(每题3分,共60分)
1.以下二维数组的初始化,哪个是符合语法的?()
A. int a[][]={{1,2},{3,4}};
B. int a[][2]={{1,2},{3,4}};
C. int a[2][2]={{1,2,3},{4,5,6}};
D. int a[2][]={{1,2,3},{4,5,6}};
2.回文子串指的是一个字符串中,正着读和反着读都一样的连续字符序列。S="CABCBAABCABCBCBAB",其最长回文子串的长度是()
A.5 B.6 C.7 D.8
3.对于入栈顺序为1,2,3,4,5,6,7的序列,下列不可能是合法的出栈序列为()
A.1,2,3,7,6,5,4
B.1,4,3,2,5,7,6
C.1,4,2,3,7,6,5
D.7,6,5,4,3,2,1
4.给定一组活动,每个活动都有开始时间s_i和结束时间f_i。我们要安排尽可能多的活动(活动之间不能重叠),正确的贪心策略是按照()从小到大排序后依次安排活动。
A.s_i B.f_i C.f_i+s_i D.f_i-s_i
5.有12个人在玩游戏,他们围成一个圈,给定一个字符串LLLLRRLRRRLL代表每个人的“攻击”方向(L向左,R向右)。一个合法的“攻击”应满足以下二者之一:
若只有a攻击b,则b必须攻击a。
若a和c同时攻击b,或a和c都不攻击b,则b可以任意攻击a和c中的一个。
你每次可以进行一次操作,使字符串中的一个字符从L变为R,或从R变为L。最少需要操作()次使得字符串所代表的“攻击”状态合法。
A.1 B.2 C.3 D.4
6.沿着一条平直的道路旁有10棵树,它们的坐标分别为7,10,12,15,19,20,53,63,75,87,它们的高度分别为12,2,2,1,2,1,25,10,12,1。伐木工人如果砍倒一棵坐标为x_i的树,并将其平放在左边或右边的一段空地上,占据一个区间[x_i - h_i, x_i]或[x_i, x_i + h_i],未被砍伐的树只占据一个坐标点x_i。只有当区间中没有任何被占据的点时,伐木工人才能把砍倒的一棵树平放到这个区间上。伐木工人希望尽可能多地砍伐树木,问最多能砍伐()棵树。
A.7 B.8 C.9 D.10
7.陶陶和乐乐最近在练习跳跃技巧,跳跃规则如下:起点位于数轴的点0,如果想要到达点x,一开始可以先跳一单位,然后每次跳跃的长度都比上一次多一单位。每次跳跃可以选择向左或向右。现在陶陶想跳到坐标为56的位置,乐乐想跳到坐标为61的位置,他们两个人分别最少跳跃()次才能到达自己的目标点。
A.10,11 B.11,12 C.12,13 D.11,13
8.同学们玩猜城市游戏,地图上有标号A、B、C、D、E。五人每人只答对一半:
甲说:B是北京,E是天津
乙说:B是湖北,D是重庆
丙说:C是湖北,D是吉林
丁说:A是重庆,E是吉林
戊说:B是天津,C是北京
正确选项是()
A.A是重庆,B是天津,C是湖北,D是北京,E是吉林
B.A是湖北,B是天津,C是重庆,D是吉林,E是北京
C.A是重庆,B是湖北,C是北京,D是天津,E是吉林
D.A是重庆,B是湖北,C是北京,D是吉林,E是天津
9.有6本不同的书,其中语文书3本,数学书1本,英语书2本。若将这6本书排成一排,要求三本语文书必须相邻,而两本英语书不能相邻,则有()种不同的排法。
A.36 B.48 C.72 D.96
10.从1,3,5,7中任取2个数字,从0,2,4,6,8中任取2个数字,组成没有重复数字(无前导零)的四位数,其中能被5整除的数有()个
A.360 B.720 C.300 D.240
11.在数学中,集合是由某些确定的对象组成的整体,函数是从一个集合(称为定义域)到另一个集合(称为值域)的一种对应关系,函数要求定义域中的每一个元素都对应值域中唯一确定的元素。设集合A={1,2,3},B={a,b,c},A作为定义域,B作为值域,则从A到B的所有函数的个数为()
A.6 B.9 C.27 D.81
12.函数是一种数学规则,它将每个输入的数字唯一地对应到一个输出数字。例如,函数f(x)=5x-2表示:对于任何输入x,先乘以5,然后减2,得到计算结果。若函数f(x)=2x+3和g(x)=x-1,那么f(g(2))的值是多少?()
A.3 B.5 C.7 D.9
13.定义在整数集合上的数列F(x)满足:
F(x)=⎨ x-3(x≥10)
⎨ F(x+4)+1(x<10)
则F(4)的值为()
A.9 B.10 C.11 D.12
14.斐波那契数列定义为:F(0)=0,F(1)=1,F(n)=F(n-1)+F(n-2)(n≥2)。用S_i表示前i项和,则S_n可以表示为()
A.F(n+1) B.F(n+2) C.F(n+1)-1 D.F(n+2)-1
15.方程x+y+z=12的正整数解(即x,y,z≥1)的组数是()
A.55 B.66 C.121 D.132
16.以下程序的输出为()
#include
usingnamespace std;intfunc(int n)
{
if(n<=1)
return n;
returnfunc(n-1)+func(n-2)+func(n-3);
}
intmain()
{
cout<return0;
}
A.6 B.13 C.20 D.无法正常结束
请阅读以下程序,若输入两个不同整数x,y,输出结果为()
#include
usingnamespace std;intmain()
{
int a,b;
cin>>a>>b;
a=a^b;
b=a^b;
a=a^b;
cout<}
A.x B.y C.x⊕y D.x|y
辗转相除法是一种求解最大公因数的方法,在横线处填入()后,该函数能正确实现相应功能。
intgcd(int a,int b)
{
while(b!=0)
{
// 横线处
}
return a;
}
A. int temp = b; b=a/b;a = temp;
B. int temp =a; a=b/a;b=temp;
C. int temp =a%b;b=a%b; a= temp;
D. b=a%b; a = b;
以下程序的时间复杂度为()
#include
usingnamespace std;
constint N=100000;
int cnt=0, primes [100010],vis [100010];
intmain()
{
vis [1]=1;
for(int i=2;i<=N-1;i++)
{
if(!vis[i])
primes [++cnt]=i;
for(int j=1;primes[j]*i<=N-1;j++)
{
vis [primes [j]*i]=1;
if(i%primes[j]==0)
break;
}
}
for(int i=1;i<=cnt;i++)
cout<}
A.O(n) B.O(n×logn) C.O(n×loglogn) D.O(n²)
以下程序的时间复杂度为()
intfunc(int n,int m)
{
if(m==0||m==n)
return1;
returnfunc(n-1,m-1)+func(n-1,m);
}
A.O(2ⁿ) B.O(2ᵐ×(n-m)) C.O(Cₙᵐ) D.O(m×(n-m))
二、程序阅读与填空(每题5分,共20分)
请你阅读以下这段程序,程序输入为9 1 4 2 8 5 7 9 2 6,直接写出程序运行的结果。()
#include
usingnamespace std;
int n,ans=0;
int h[110];intmain()
{
cin>>n;
for(int i=0;i cin>>h[i];
int j=0, k=n-1;
while(j{
int s=(k-j)*min(h[j],h[k]);
if(h[j]{
ans=max(ans , s);
j++;
}
else
{
ans=max(ans,s);
k--;
}
}
cout<return0;
}
请你阅读以下这段程序,程序输入为2 40 9,直接写出程序运行的结果。()
#include
usingnamespace std;
int a, b,p,ans=0;intmain()
{
cin>>a>>b>>p;
while(b)
{
bool f=b&1;
if(f)
ans=(ans+a)%p;
a=(a+a)%p;
b=b>>1;
}
cout<return0;
}
请你阅读以下这段程序,直接写出程序运行的结果。()
#include
usingnamespace std;
int stk1[110], t1=0;
int stk2[110], t2=0;voidfunc1(int x)
{
stk1[++t1]=x;
}
voidfunc2()
{
if(t2==0)
while(t1>0)
stk2 [++t2]=stk1[t1--];
if(t2>0)
t2--;
}
intmain()
{
func1(10);func1(20);func1(30);
func2();func1(40);
func2();func1(50);func1(60);
if(t1>0&&t2>0)
cout<else
cout<<-1;
return0;
}
题目描述:给定一个长度为n的整数数组a,请你统计有多少对下标(i,j)满足i
#include
usingnamespace std;
map cnt;
int ans=0;intmain()
{
int n;
cin>>n;
for(int i=1;i<=n;i++)
{
int a;
cin>>a;
int val=___(1)___;
ans+=___(2)___;
cnt[val]++;
}
cout<return0;
}
三、填空(每题2分,共20分)
25.甲、乙两数的最大公因数是75,最小公倍数是450。若它们的差最小,则两个数为______和______。
答案:150,225
26.10条直线,最多可以把平面分为______个区域。
27.将100个小球放入依次排列的36个盒子中。如果任意相邻的5个盒子中的小球总数均为14,且第1个盒中有2个小球。那么第36个盒子中有______个小球。
答案:2
解析:a_i =a_{i+5},即每隔5个盒子小球数相同,周期为5。已知第1个盒子有2个球,故第36个盒子也有2个球。
28.用0到9十个数字组成没有重复数字且没有前导零的四位数,若将这些四位数按从小到大的顺序排列,则5687是第______个。
29.若从1,2,3,…,9这9个整数中同时取4个不同的数,其和为奇数,则不同的取法共有______种。
30.一副扑克牌共54张,最上面的一张是红桃K。如果每次把最上面的12张牌移到最下面而不改变它们的顺序及朝向,那么,至少经过______次移动,红桃K才会又出现在最上面?
31.两对三胞胎喜相逢,他们围坐在桌子旁,要求每个人都不与自己的同胞兄妹相邻,同一位置上坐不同的人算不同的坐法,那么共有______种不同的坐法。
32.把正方体的6个面分别写上了1到6这六个不同的数字,现在将完全相同四个正方体拼成一个长方体,那么长方体的下底面所有数字之和为______。
33.计算机处理数据的能力非常强大的,只要你告诉它规则,它能够按照你提出的任何要求完成任务。比如你要将一个多位数27493去掉两位使剩下的数尽量大,就可以去掉2和4。现在将1~30依次写成一排:12345…282930,形成一个多位数,从这个多位数中去掉45个数字,剩下的数最大是______。
![]()
34.信息学要研究各种信息,需要研究信息的人能够很快抓住问题的核心信息,找到核心点,复杂的问题也会变得很简单。现在要求你把1~7这7个数填入图中的7个方框里,每个数只能填一次,使得三条直线上的三个数之和恰好是8、11和15。那么在圆上的三个数的乘积最大是______。
![]()
点击以下文章是答案:
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.