初赛冲刺模拟————阅读程序专题

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

________________________

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值