A. 思卡奇C2期末模拟考试
思卡奇C2期末模拟考试
该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。
一. 单项选择题(共 15 题,每题 2 分,共计 30 分)
- memset函数的头文件是( )。 {{ select(1) }}
- cstdio
- cmath
- limits
- cstring
- 假设一个整数类型的一维数组在内存中的“首地址”是100,则第6个元素的存储地址开始于( ) 。 {{ select(2) }}
- 112
- 116
- 120
- 100
- 将数组(8,23,4,16,77,-5,53,100)中的元素按从大到小的顺序排列,每次可以交换任意两个元素,最少需要交换( )次。 {{ select(3) }}
- 4
- 5
- 6
- 7
- 100以内最大的素数是( )。 {{ select(4) }}
- 89
- 97
- 91
- 93
- 对二维数组进行定义,正确的语句是( )。 {{ select(5) }}
- int a[3][ ]
- float a[3,2]
- double a[3][4]
- float a(3)(4)
- 对二维数组进行初始化,正确的语句是( )。 {{ select(6) }}
- int c[3][ ]={{3},{4},{5}};
- int c[ ][3]={{3},{3},{4}};
- int c[3][2]={{3},{3},{4},{5}};
- int c[ ][3]={{3},{1},{1,2,3,4}};
- 以下排序算法中,不需要进行关键字比较操作的算法是( )。 {{ select(7) }}
- 基数排序
- 冒泡排序
- 选择排序
- 插入排序
- 我们想使用sort()函数,需要添加什么头文件( )。 {{ select(8) }}
- #include <
cstdio
> - #include<
iostream
> - #include<
algorithm
> - #include<
numeric
>
- 实际参数可以是任何符合形式参数类型的常量、变量、表达式。函数参数传递的过程就是实际参数和形式参数相结合的过程,必须遵守三个一致:( )。 {{ select(9) }}
- 类型一致、大小一致、位置一致
- 类型一致、个数一致、位置一致
- 类型一致、顺序一致、大小一致
- 顺序一致、个数一致、类型一致
- 设x=true,y=true,z=false,以下逻辑运算表达式值为真的是( )。(与:⋀或:V 非:¬) {{ select(10) }}
- (x ⋀ y) ⋀ z
- x ⋀ (z V y) ⋀ z
- (x ⋀ y) V (z V x)
- (y V z) ⋀ x ⋀ z
- 下列程序中,正确计算1, 2, ..., 100 这 100 个自然数之和sum(初始值为0)的是( )。 {{ select(11) }}
- i = 1; do{ sum +=i; i++; } while(i <= 100);
- i = 1; do{ sum +=i; i++; } while(i > 100);
- i = 1; while(i < 100) { sum+=i; i++; }
- i = 1; while(i >= 100) { sum+=i; i++; }
- 设字符串 S=“sikaqi”,S 的非空子串的数目是( )。 {{ select(12) }}
- 20
- 21
- 22
- 23
- 体育课的铃声响了,同学们都陆续地奔向操场,按老师的要求从高到矮站成一排。每个同学按顺序来到操场时,都从排尾走向排头,找到第一个比自己高的同学,并站在他的后面。这种站队的方法类似于( )算法。 {{ select(13) }}
- 快速排序
- 插入排序
- 冒泡排序
- 归并排序
- 假设一个整数类型的一维数组在内存中的“首地址”是:0xfff100,则第6个元素的存储地址开始为( )。 {{ select(14) }}
- 0xfff100
- 0xfff106
- 0xfff107
- 0xfff114
- 下面的故事与( )算法有着异曲同工之妙。 从前有座山,山里有座庙,庙里有个老和尚在给小和尚讲故事:从前有座山,山里有座庙,庙里有个老和尚在给小和尚讲故事:‘从前有座山,山里有座庙,庙里有个老和尚给小和尚讲故事....’ {{ select(15) }}
- 枚举
- 递归
- 贪心
- 分治
二、阅读程序(判断题正确填“√”,错误填“×”特殊说明外,判断题1.5分,选择题3分,共计40分)
(一)
01 #include <iostream>
02 using namespace std;
03 int a,b;
04 int work(int a,int b){
05 if(a%b) return work(b,a%b);
06 return b;
07 }
08
09 int main(){
10 cin>>a>>b;
11 cout<<work(a,b)<<endl;
12 return 0;
13 }
● 判断题
- 在第2行下面添加#define int long long程序可以正常运行。( ) {{ select(16) }}
- √
- ×
- 将第3行的int改成double结果不会改变。( ) {{ select(17) }}
- √
- ×
- 不能输入0 0。( ) {{ select(18) }}
- √
- ×
- 输入20 12结果输出4。( ) {{ select(19) }}
- √
- ×
● 选择题
- 输入2012 13,输出( )。 {{ select(20) }}
- 2012
- 2013
- 13
- 1
- 该算法的时间复杂度级别为( )。 {{ select(21) }}
- 线性时间
- 对数时间
- 平方时间
- 常数时间
(二)
01 #include <iostream>
02 using namespace std;
03 int main()
04 {
05 int a[3],b[3];
06 int i,j,tmp;
07 for(i=0;i<3;i++)
08 cin>>b[i];
09 for(i=0;i<3;i++)
10 {
11 a[i]=0;
12 for(j=0;j<=i;j++)
13 {
14 a[i]+=b[j];
15 b[a[i]%3]+=a[j];
16 }
17 }
18 tmp=1;
19 for(i=0;i<3;i++)
20 {
21 a[i]%=10;
22 b[i]%=10;
23 tmp*=a[i]+b[i];
24 }
25 cout<<tmp<<endl;
26 return 0;
27 }
● 判断题
- 输入的3个数越大,则输出的结果也越大。( ) {{ select(22) }}
- √
- ×
- 执行完第17行后,b[i]比a[i]相对应的值要大。( ) {{ select(23) }}
- √
- ×
- 将第18行的tmp=1改为tmp=0,不论输入什么数据,输出结果都是0。( ) {{ select(24) }}
- √
- ×
- 若输入数据中包含字母,如3 3 a则程序会出错。( ) {{ select(25) }}
- √
- ×
● 选择题
- 输入2 3 5,输出的结果是( )。 {{ select(26) }}
- 414
- 415
- 416
- 417
- 输入1 1 1,输出的结果是( )。 {{ select(27) }}
- 36
- 48
- 72
- 108
(三)
01 #include <iostream>
02 using namespace std;
03 const int maxn=50;
04 void getnext(char str[])
05 {
06 int l=strlen(str),i,j,k,temp;
07 k=l-2; //k=2
08 while(k>=0 && str[k]>str[k+1]) k--;
09 i=k+1;
10 while(i<l && str[i]>str[k]) i++;
11 temp=str[k];
12 str[k]=str[i-1];
13 str[i-1]=temp;
14 for(i=l-1;i>k;i--)
15 for(j=k+1;j<i;j++)
16 if(str[j]>str[j+1])
17 {
18 temp=str[j];
19 str[j]=str[j+1];
20 str[j+1]=temp;
21 }
22 return;
23 }
24 int main()
25 {
26 char a[maxn];
27 int n;
28 cin>>a>>n;
29 while(n>0)
30 {
31 getnext(a);
32 n--;
33 }
34 cout<<a<<endl;
35 return 0;
36 }
● 判断题
- 每次循环找到的k一定不同。( ) {{ select(28) }}
- √
- ×
- 如果把第18~20行换成swap(str[j],str[j+1]),输出结果不变。( ) {{ select(29) }}
- √
- ×
- 去掉第32行会导致程序超时。( ) {{ select(30) }}
- √
- ×
- 输入的字符串可包含任意字母。( ) {{ select(31) }}
- √
- ×
● 选择题
- 输入NOIP 3,输出的结果是( )。 {{ select(32) }}
- NPOI
- NPIO
- NIPO
- PONI
- 输入CSP2021 2,输出的结果是( ) {{ select(33) }}
- CPS2120
- CSP2120
- CPS2210
- CSP2021
三、完善程序(每空3分,共30分)
1.杨辉三角是一个由数字排列成的三角形数表,一般形式如下:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1
1 7 21 35 35 21 7 1
... ...
#include<iostream>
#include<cstring>
#define maxn 110
using namespace std;
int main(){
int i,j,n,c[maxn][maxn];
cin>>n;
memset(c,0,sizeof(c));
c[0][0]=1; c[1][0]=1; c[1][1]=1;
for( ⑴ ;i<n;i++){
⑵
for(j=1; ⑶ ;j++){
⑷
}
}
for(i=0; ⑸ ;i++){
for(j=0;j<=i;j++){
cout<<c[i][j]<<" ";
}
cout<<endl;
}
return 0;
}
● 选择题
- ⑴处填( )。{{ select(34) }}
- i=0
- i=1
- i=2
- i=3
- ⑵处填( )。{{ select(35) }}
- c[0][i]=1
- c[0][0]=1
- c[i][0]=1
- c[i][0]=0
- ⑶处填( )。{{ select(36) }}
- j<=n
- j<=i
- j<n
- j<i
- ⑷处填( )。{{ select(37) }}
- c[i][j]=c[i-1][j-1]+c[i-1][j-1]
- c[i][j]=c[i-1][j-1]+c[i-1][j]
- c[i][j]=c[i-1][j]+c[i-1][j]
- c[i][j]=c[i][j]+c[i-1][j-1]
- ⑸处填( )。{{ select(38) }}
- i<=n
- i<n
- i<=j
- i<j
2.快排的代码实现
#include<bits/stdc++.h>
using namespace std;
int a[1000];
void qsort(int low,int high){
int ⑴
int i=low,j=high;
while( ⑵ ){
while(i<high){
if(a[i]>=sol){
break;
}
else i++;
}
while(j>low){
if(a[j]<=sol){
break;
}
else j--;
}
if(i<=j){
swap(a[i],a[j]);
⑶
⑷
}
}
if(low<j){
qsort(low,j);
}
if(high>i){
qsort(i,high);
}
}
int main(){
int i,n;
cin>>n;
for(i=0;i<n;i++){
cin>>a[i];
}
⑸
for(int i=0;i<n;i++){
cout<<a[i]<<" ";
}
return 0;
}
● 选择题
- ⑴处填( )。{{ select(39) }}
- sol=0
- sol=1
- sol=a[low]
- sol=a[0]
- ⑵处填( )。{{ select(40) }}
- i>=j
- i>j
- i<=j
- i<j
- ⑶处填( )。{{ select(41) }}
- i--
- i++
- i=0
- i=1
- ⑷处填( )。{{ select(42) }}
- j++
- j--
- j=0
- j=1
- ⑸处填( )。{{ select(43) }}
- qsort(0,n)
- qsort(0,n-1)
- qsort(0,0)
- qsort(1,1)