1.【 填空 】12 分
一
#include<iostream>
using namespace std;
int main(){
int a,b,c;
a=1;b=2;c=3;
if (a>b){
if (a>c)
cout<<a<<'';
else
cout<<b<<'';
}
cout<<c<<endl;
return 0;
}
1、判断题(填“ 对 ”或“ 错 ”)
(1)把第1 行iostream 改为cstdio,程序仍然可以正常运行。( )
(2)如果把a 的初值改为-1,结果不会改变。( )
(3)程序结果为3。( )
(4)如果把c 的初值改为5,结果不会改变。( )
2、选择题
(5)把b 的的初值改为4,结果为( )。
A.1 B.2 C.3 D.4
(6)该程序的最坏时间复杂度为( )。
A. O(1) B. O(n) C. O(n*m) D. O(2ⁿ)
________________________
2.【 填空 】12 分
二
#include<iostream>
using namespace std;
struct point {
int x;
int y;
};
int main(){
struct EX {
int a;
int b;
point c;
}e;
e.a=1;
e.b=2;
e.c.x=e.a+e.b;
e.c.y=e.a*e.b;
cout<<e.c.x<<','<<e.c.y<<endl;
return 0;
}
判断题(填“ 对 ”或“ 错 ”)
(1)输出结果为“3 2”。( )
(2)将08~12 行移到06~07 行之间,程序运行结果不会发生改变。( )
(3)将01 行的iostream 改为cstdio 程序运行结果不会发生改变。( )
(4)程序的时间复杂度为O(1)。( )
选择题
(5)该程序会输出( )个数。
A.1 B.2 C. 3 D.0
(6)将13 行改为e. a=4;输出将为( )。
A.6,8 B.6,7 C.7,8 D.8,6
____ ____ ____ ____ ____ ____
3.【 填空 】12 分
三
#include<iostream>
using namespace std;
const int SIZE=100;
int alive[SIZE];
int n;
int next(int num){
do {
num++;
if(num>n)num=1;
}while(alive[num]==0);
return num;
}
int main(){
int m,i,j,num;
cin>>n>>m;
for (i=1;i<=n;i++)
alive[i]=1;//17
num=1;
for(int i=1;i<=n;i++){
for(j=1;j<m;j++)
num=next(num);
cout<<num<<" ";
alive[num]=0;
if(i<n)num=next(num);//24 行
}
cout<<endl;
return 0;
}
1、判断题(填“ 对 ”或“ 错 ”)
(1)若输入100 0 该程序会运行错误。()
(2)若把17 行去掉,程序结果不会发生改变。()
(3)如果把24 行的“<”改为“<=”,则程序结果发生改变()
(4)若输入11 3,则输出3 6 9 1 5 10 4 11 8 2 7()
2、选择题
(5)该程序的最坏时间复杂度为( )。
A.O(i) B.O(n) C.O(n*m) D:O(2^n)
(6)若输入为10 4,则第4 个数为( )。
A.5 B.6 C.7 D:8
____ ____ ____ ____ ____ ____
4.【 填空 】12 分
四
#include<cstdio>
char st[100];
int main(){
scanf("%s",st);
for (int i=0;st[i];++i){
if('A'<=st[i]&&st[i]<='Z')
st[i]+=1;//7 行
}
printf("%s\n",st);
return 0;
}
1、判断题(填“ 对 ”或“ 错 ”)
(1)第5 行的循环将执行n次,n 为字符串长度()
(2)输入的字符串必须由大写字母组成。()
(3)输出最多含有25 种大写字母。()
(4)若输入的字符串由n 种不同字符组成,则输出由n 种不同字符组成()
2、选择题
(5)输入QuanGuo,则输出的结果是()。
A.RuanHuo B.quanguo C.QuanGuo D.PuanFuo
(6)如果将第07 行的st[i]+=1;改成st[i]-=1;则第(5)题的输出结果为()
A.QUANGUO B.PuanFuo C.quanguo D.QvboGvp
________________________
5.【 填空 】12 分
五
#include<iostream>
#include<string>
using namespace std;
int main(){
string s;
char m1,m2;
int i;
getline(cin,s);
m1=' '; //10 行
m2=' '; //11 行
for (i=0;i<s.length();i++)//12 行
if (s[i]>m1){
m2=m1;
m1=s[i];
}
else if (s[i]>m2) //17 行
m2=s[i];
cout<<m1<<" "<<m2<<endl;
return 0;
}
1、判断题(填“ 对 ”或“ 错 ”)
(1)去掉第10、11 行,程序会运行错误。( )
(2)去掉第17 行的else,程序会运行错误。()
(3)将12 行替换为“for(i=s.length()-1;i>=0;i--)”,运行结果不变()
(4)将17 行的“s[i]>m2”替换为“s[i]>=m2”,运行结果不变。()
2、选择题
(5)当输入为AABBCCDD 时,输出为()
A.B A B.C B C.D D D.D A
(6)当输入的字符串为大写字符串时,输出不可能为()
A、Z B B、A B C、T B D、G A
________________________
6.【 填空 】12 分
六
#include<iostream>
#include<string>
using namespace std;
int main(){
string str;
cin>>str;
int n=str.size();
bool isPlalindrome=true;//8 行
for (int i=0;i<n/2;i++){
if (str[i]!=str[n-i-1]){
isPlalindrome=false;//11 行
}
}
if(isPlalindrome)
cout<<"Yes"<<endl;
else
cout<<"No"<<endl;
return 0;//18 行
}
1、判断题(填“ 对 ”或“ 错 ”)
(1)如果去掉第18 行,程序不能正常运行。()
(2)如果去掉第8 行的初始化,程序可能得不到正确答案()
(3)在11 行下添加一行break;,程序运行结果不变。()
(4)如果输入abceecba,输出Yes。()
2、选择题
(5)程序的时间复杂度为()。
A、O(n) B、O(logn) C、O(nlogn) D、O(n2)
(6)输入abcdefghijklmnmlkjihgfedcba,输出为(
A. No B.Yes C.NO D.YES
____ ____ ____ ____ ____ ____
7.【 填空 】12 分
七
#include<iostream>
using namespace std;
int main(){
const int SIZE=10;
int data[SIZE],i,j,cnt,n,m;
cin>>n>>m;
for (i=1;i<=n;i++)
cin>>data[i];
for (i=1;i<=n;i++){
cnt=0;
for (j=1;j<=n;j++)
if ((data[i]<data[j])||(data[j]==data[i]&&j<i))
cnt++;
if (cnt==m)
cout<<data[i]<<endl;
}
return 0;
}
1、判断题(填“ 对 ”或“ 错 ”)
(1)若输入的n 大于等于10,则程序可能发生运行时错误()
(2)若输入的m 大于等于n,则程序没有输出。()
(3)若把第14 行的==换成>=,则程序运行结果不变。()
(4)输入5 2 96 -8 0 16 87,则会输出17。()
2、选择题
(5)输入6 3 1 5 3 7 8 4,则输出为()
A. 1 B.3 C、4 D、5
(6)程序的时间复杂度为()
A.O(n) B.O(logn) C.O(nlogn) D.O(n2)
____ ____ ____ ____ ____ ____
8.【 填空 】12 分
八
#include<iostream>
#include<string>
using namespace std;
int main(){
int len,maxlen;
string s,ss;
maxlen=0;//7 行
do {
cin>>ss;
len=ss.length();
if (ss[0]=='#')break;
if (len>maxlen){//12 行
s=ss;
maxlen=len;
}
}while(true);
cout<<s<<endl;
return 0;
}
1、判断题
(1)输出可以包含# 。()
(2)如果去掉第7 行的初始化,程序可能得不到正确答案。()
(3)输出一定有字符。()
(4)如果把第12 行的>改为>=,程序结果不会改变。()
2、选择题
(5)程序的时间复杂度级别为()。
A.线性B.对数C.常数D.平方
(6)输入I am a citizen of China # ,输出()。
A.am B.a C.citizen D.China
____ ____ ____ ____ ____ ____
9.【 填空 】12 分
九
#include<iostream>
using namespace std;
int main(){
int Max,Min,sum,count=0;
int tmp;
cin>>tmp;
if (tmp==0)
return 0;
Max=Min=sum=tmp;
count++;
while (tmp!=0){
cin>>tmp;
if (tmp!=0){
sum+=tmp;
count++;
if (tmp>Max)Max=tmp;
if (tmp<Min)Min=tmp;
}
}
cout<<Max<<","<<Min<<","<<sum/count<<endl;//22 行
return 0;
}
1、判断题(填“ 对 ”或“ 错 ”)
(1)程序一定会输出 3 个整数并用逗号隔开。
(2)若把 Max,Min,sum 的数据类型改为 double,则输出结果会改变。
(3)输入 1 2 0 3 4 5 0 7 0 时,count 值最终为 8。
(4)程序的时间复杂度瓶颈在于第 22 行计算答案过程。
2、选择题
(5)程序的时间复杂度为。 A.O(1) B.O(count) C.O(∞) D.O(tmp)
(6)若输入为 1 9 2 8 3 7 4 6 0 5,则会输出。 A.9,1,5 B.9,1,6 C.9,1,7 D.9,1,
________________________
10.【 填空 】12 分
十
#include<iostream>
using namespace std;
int n,i,temp,sum,a[100];
int main(){
cin>>n;
for (i=1;i<=n;i++)
cin>>a[i];
for (i=1;i<=n-1;i++)
if (a[i]>a[i+1]){
temp=a[i];//10 行
a[i]=a[i+1];//11 行
a[i+1]=temp;//12 行
}
for (i=n;i>=2;i--)//14 行
if (a[i]<a[i-1]){
temp=a[i];
a[i]=a[i-1];
a[i-1]=temp;
}//19 行
sum=0;
for (i=2;i<=n-1;i++)
sum+=a[i];
cout<<sum/(n-2)<<endl;
return 0;
}
1、判断题(填“ 对 ”或“ 错 ”)
(1)输入的 n 小于 100,否则可能会出现运行时错误
(2)第 10 行到第 12 行实现了交换的功能。
(3)把 sum 的数据类型改为 double,程序运行结果不会改变。
(4)当 n 为 2 时,程序可以正常运行。
2、选择题
(5)程序的时间复杂度为 A.O(1) B.O(nlogn) C.O(n) D.O(n2)
(6)14~19 行的代码段功能为
A. 排序整个序列 B.把序列中的最小值放到序列开头 C.把序列中的最小值放到序列末尾 D.把序列中的最大值放到序列末
________________________
11.【 填空 】12 分
十一
#include<iostream>
using namespace std;
int main(){
const int SIZE=100;
int na,nb,a[SIZE],b[SIZE],i,j,k;
cin>>na;
for (i=1;i<=na;i++)
cin>>a[i];
cin>>nb;
for (i=1;i<=nb;i++)
cin>>b[i];
i=1;//13 行
j=1;//14 行
while ((i<=na)&&(j<=nb)){
if (a[i]<=b[j]){
cout<<a[i]<<' ';
i++;
}
else {
cout<<b[j]<<' ';
j++;
}
}
if (i<=na)
for (k=i;k<=na;k++)
cout<<a[k]<<' ';
if (j<=nb)
for (k=j;k<=nb;k++)
cout<<b[k]<<' ';
return 0;
}
判断题
(1)保证 a 数组和 b 数组小到大有序,输出的序列一定是一个不降序列。
(2)如果输入 0 0,不会输出数。
(3)如果删掉第 13 行和第 14 行不影响程序结果
(4)使用 C++98 不会 CE。//ce 编译错误
选择题
(5)该程序时间复杂度是 A.O(na+nb) B.O(max{na,nb}logmax{na,nb}) C.O(na*nb) D.O(na^nb)
(6)如果输入 5 \n 1 3 5 7 9\n 4 \n 2 6 10 14,输出
A.1 2 3 5 6 7 9 10 14 B.1 4 10 9 7 6 5 3 2 1 C.1 3 5 7 9 2 6 10 14 D.5 1 3 5 7 9 4 2
________________________
12.【 填空 】12 分
十二
#include<iostream>
using namespace std;
int main(){
int a[6];
int pi=0;
int pj=5;
int t,i;
while (pi<pj){//8 行 n
t=a[pi];
a[pi]=a[pj];
a[pj]=t;
pi++;
pj--;
}
for(i=0;i<6;i++)
cout<<a[i]<<",";
cout<<endl;
return 0;
}
1、判断题(填“ 对 ”或“ 错 ”)
(1)将第 8 行改成 pi<=pj 不影响程序结果。()
(2)程序输出六个数,逗号只出现在相邻两个数之间()
(3)如果 a={1,2,3,4,5,6},那么输出 6,5,4,3,2,1。()
2、选择题
(4)这个程序在() A.将已知序列翻转 B.求序列的逆 C.求序列的卷积 D.将原始数列随机打乱
(5)这个程序的时间复杂度是()。 A.O(n 2) B.O(n) C.O(nlogn) D.O(n√n)
(6)如果 a=(6,5,4,3,2,1),那么输出() A.6,5,4,3,2,1 B.6 5 4 3 2 1 C.1 2 3 4 5 6 D.1,2,3,4,5,6,
________________________
13.【 填空 】12 分
十三
#include<iostream>
using namespace std;
int fun(int n){
if (n==1)return 1;
if (n==2)return 2;
return fun(n-2)-fun(n-1);
}
int main(){
int n;
cin>>n;
cout<<fun(n)<<endl;
return 0;
}
1、判断题(填“ 对 ”或“ 错 ”)
(1)输入 114514 时在普通计算机上程序运行时间不会超过 1s。
(2)输入 0 程序不会出现运行错误。
(3)该程序开启 o2 不会出现错误
(4)输入 6,输出 7。
2、选择题
(5)时间复杂度为 A.O(2^n) B.O(n^2) O.O(nlogn) D.O(n)
(6)输入 7 时输出 A.-11 B.11 C.-10 D.10
________________________
14.【 填空 】12 分
十四
#include<iostream>
using namespace std;
int main(){
const int SIZE=100;//04 行
int n,f,i,j,t,left,right,middle,a[SIZE];
cin>>n>>f;
for (i=1;i<=n;i++)//07 行
cin>>a[i];//08 行
for (i=1;i<=n;i++)
for (j=1;j<=i;j++)//前面的数据
if (a[i]<=a[j])//11 行{
t=a[j];
a[j]=a[i];
a[i]=t;
}
left=1;
right=n;
do {
middle=(left+right)/2;
if(f<=a[middle])
right=middle;
else
left=middle+1;
}while (left<right);
cout<<left<<endl;
return 0;
}
1、判断题(填“ 对 ”或“ 错 ”)
(1)将第 04 行的程序移动到 02 03 行的中间,序能够正常运行。
(2)将第 11 行的“=”删除,运行结果会改变。
(3)将第 07 行的“i=1;i =n;”改为“i=0;i<n;”运行结果不会改变
(4)若第08行输入n+2个相同的数字,序最后输出的left值为1。
2、选择题
(5)当n=5,f=7,a={8,4,7,5,6}时,则结果为A.3 B.4 C.5 D.7
(6)输入仍是第(5),将第11行的<=改为>=,则结果为A.3 B.4 C.5 D.7 运行结果不会改变
________________________
15.【 填空 】12 分
十五
#include<iostream>
using namespace std;
#define maxn 5004
const int y=2009;
int n,c[maxn][maxn],i,j,s=0;
int main(){
cin>>n;
c[0][0]=1;
for (i=1;i<=n;i++){
c[i][0]=1;
for (j=1;j<i;j++)
c[i][j]=c[i-1][j-1]+c[i-1][j];
c[i][i]=1;
}
for(i=0;i<=n;i++)
s=(s+c[n][i])%y;
cout<<s<<endl;
return 0;
}
1、判断题(填“ 对 ”或“ 错 ”)
(1)该程序的第 03 行需要加分号才能正常运行。
(2)该程序可能输出 2009。
(3)第 05 行的 s 可以不用赋初值。
(4)输入 17,输出 487。
2、选择题
(5)该程序的实质是
A.快速排序 B.区间最大和 C.区间前缀和 D.杨辉三角
(6)该算法的时间复杂度级别为
A.线性时间 B.对数时间 C.平方时间 D.常数时间
________________________
16.【 填空 】12 分
十六
#include<iostream>
using namespace std;
int main(){
const int SIZE=100;
int height[SIZE],num[SIZE],n,ans;
cin>>n;
for(int i=0;i<n;i++){
cin>>height[i];
num[i]=1;
for (int j=0;j<i;j++){
if ((height[j]>height[i])&&(num[j]>=num[i]))
num[i]=num[j]+1;
}
}
ans=0;
for (int i=0;i<n;i++){
if (num[i]>ans)ans=num[i];
}
cout<<ans<<endl;
return 0;
}
1、判断题(填“ 对 ”或“ 错 ”)
(1)将第 4 行的程序移动到第 2 3 行中间,序能够正常运行。
(2)第 6 行输入 n=5,则输出 ans 的值一定小于 5。
(3)把 01 行的 iostream 改为 cstdio 时不会编译错误
(4)如果输出是 1,则 height 数组中的数一定是递减的
2、选择题
(5)当 n=6 时,输入 height 数组为 2 5 3 11 12 4,输出为()。
A.4 B.2 C.14 D.6
(6)如果将第 13 行的 height[j]<height[i]改成 height[j]>height[i],则第(5)的输出结果为()
A.4 B.2 C.14 D.6
________________________