2022入门组 CSP-J 初赛模拟试题 (10)

一、单选题(每题 2 分,共 30 分)
第 1 题 十六进制数(-73)16的8位二进制补码是( )。
第 2 题 以下关于CSP-J/S的描述错误的是( )。
第 3 题 以下语言中,同时符合面向对象和解释执行的是什么语言( )。
第 4 题 小明家买了一台4K超清电视,其屏幕分辨率是4096 *2160,每一个像素都是32位真彩色,一个视频文件有2分钟,每秒钟播放24帧。在没有压缩的情况下,这个视频占用空间最接近以下哪个值( )。
第 5 题 假设一个待排序数组已基本有序,以下排序算法效率最高的是( )。
第 6 题 一个包含m个分支结点(非叶子结点,也就是度不为0的节点)的非空满n叉树,n≥l,它的叶结点数目为( )。
第 7 题 前缀表达式-*a+bcd的后缀表达式是( )。
第 8 题 下列关于CPU的说法哪个是正确的? ( ) 。
第 9 题 关于计算机网络,下面的说法哪个是正确的? ( )。
第 10 题 设哈希表的地址空间为0到10,散列函数为hash(n)=n mod 11,用线性探查法解决碰撞。现从空的哈希表开始,依次插入关键码值84 ,25 ,38 ,57,71,则最后一个关键码71的地址为( )。
第 11 题 十进制数0.25等于十六进制数的多少? ( )。
第 12 题 以下逻辑表达式恒为真的是( )。
第 13 题 已知rand()可以生成一个0到32767的随机整数,如果希望得到一个范围在[m,n]的随机整数,m和n均是不超过1024的正整数且m
第 14 题 CSP-J初赛结束后,某学校1位教练带4名女生和5名男生排成一行拍照留念,要求男生必须排在一起,老师在中间,女生也必须排在一起,那么不同的排列方式共有( )种。
第 15 题 一张有10个结点的非连通无向图最多有( )条边。
二、判断题(每题 2 分,共 20 分)
第 16 题
#include <iostream>
using namespace std;
int main ()
{
	int a,b,c;
	cin>>a>>b>>c;
	a=a*b;
	b=a/b;
	a=a/b;
	c=a/b;
	cout<<a<<" "<<b<<" "<<c<<endl;
	return 0;
}
判断题
第 16 题 若输入24 1,则输出4 2 2。( )
第 17 题 若输入1234567890 8 5,则输出a和b分别是8和1234567890。( )
第 18 题 将第01行头文件#include 替换成#include,程序运行结果不会改变。( )
第 19 题 将第01行头文件#include替换成#include ,第11行替换为printf("%d%d%d\n",a, b, c);程序运行结果不会改变。( )
第 20 题 若输入数据为3 7 3,则输出为( )。
第 21 题 若将第10行c=a/b改成c=b*a,输入0 4 3,则输出是( )。
第 23 题
#include<bits/stdc++.h>
using namespace std;
int n,m, result,a[101],b[101];
int power (int x, int y)
{
	int i, ret=1;
	for (i=1; i<=y; ++i)
		ret*=x;
	return ret;
}
int main()
{
	int i=2;
	cin>>n;
	while(1!=n)
	{
		if (0==n%i)
		{
			++m;
			a[m]=i;
			while(0==n%i)
			{
				++b[m];
				n/=i;
			}
		}
	}
	++i;
	result=1;
	for(i=1; i<=m; ++i)
	{
		result-= (a[i]-1)*power(a[i],b[i]-1);
	}
	cout<<result;
}
判断题
第 23 题 不管输入什么值,程序的输出值一定比输入值大。( )
第 24 题 若输入n是一个质数,则输出值result也可能是一个质数。( )
第 25 题 若输入n是一个质数,程序执行到第29行时,i的值等于刚开始输入的n。( )
第 26 题 若输入n的值等于正整数c的正整数d次方c^d(c,d>=2),程序的第15行循环执行完成后,m的值为1,a[1]的值为c。( )
第 27 题 (若输入n=2400,则输出result为( )。
第 28 题 若输出result=2400,则输入n可能为( )
第 30 题
#include<iostream>
#include<string>
using namespace std ;
int main ()
{
	string str;
	char ch1, ch2;
	getline (cin,str) ;
	ch1 =ch2-' ';
	for(int i=0; i<str.size(); ++i)	{
		if (ch1<str[i])
		{
			ch2= ch1 ;
			ch1=str[i];
		}
		else if (ch2<str[i])
			ch2=str[i];
	}
	if (isalpha (ch1))
		ch1 ^=' ';
	if (isdigit (ch2) )
		ch2=ch2-'0'+48;
	cout<<ch1<<" "<<int (ch2) <<endl;
	return 0;
}
判断题
第 30 题 若将第08行替換为cin>>str; 程序运行结果不会改变。( )
第 31 题 若输入字符串只包含大写字母,则输出int(ch2)一定小于91。( )
第 32 题 若将第20行替换为chl ^=32; 程序运行结果不会改变。( )
第 33 题 若输入55555 ,程序运行结果输出为5 5。( )
第 34 题 若输入数据为654321 ,程序运行结果输出为( )。
第 35 题 若输入只有3个数字型字符,输出为3 50,则输入一共有多少种不同方案( )。
第 36 题 (4分)若输入数据为The 19th Asian Games Hangzhou 2022 ,则输出是( )。
三、编程题(每题 25 分,共 50 分)
第 38 题 (最少问题)我们玩一个按字符的游戏,有一组只有0和1二进制数组成的字符串,每按下其中一个字符,其相邻的字符和它本身都会变成和原来不同的字符(0变1,1变0)。如果按下的字符非最左边和最右边字符,则其本身和左右相邻的两个字符变成和原来不同的字符;如果按下最左边字符,则其本身和右边相邻的一个字符变成和原来不同的字符;如果按下最右的字符,则其本身和左边相邻的一个字符变成和原来不同的字符。 给出一张“初始字符串”和一张“最终字符串”。通过按下字符,使“初始字符串”变为“最终字符串”,求最少需要按几次可以完成。如:初始字符串为010,最终字符串为110。 首先按下2号字符,3个字符变为101 ,然后按下3号字符,3个字符变为110,故使“初始字符串”变为“最终字符串”最少需要按2次。 如下所述步骤:010->101->110 输入格式: 第一行输入一个由“0”和“1”组成的字符串,字符串长度为n(1 #include<bits/stdc++.h> using namespace std; string a,b, temp; int MIN=0,push_cnt; void change(int i) //改变当前字符的值 { if(i>=0 &&__(1)__) { if(__(2)__) temp[i]='1'; else temp[i]='0'; } } void push(int i) //按下当前位置的字符产生的影响 { change (i-1) ; change(i); change (i+1) ; __(3)__; } void traverse () { for(int i-1; i<a.size() ; i++) { if(__(4)__) { push(i) ; } } if (temp==b &G push_ cnt <MIN) __(5)__; } int main () { cin>>a>>b; MIN=0x3F3F3F3F ; //第1种情况,按第1个字符 push_cnt=0; temp=a; push(0) ; traverse() ; //第2种情况,不按第1个字符 push_cnt=0; temp=a; traverse() ; if (MIN== 0x3F3F3F3F) cout<<0; else cout<<MIN; return 0; }
第 38 题 ⑴处应填( )。
第 39 题 ⑵处应填( )。
第 40 题 ⑶处应填( )。
第 41 题 ⑷处应填( )。
第 42 题 ⑸处应填( )。
第 44 题 在大数据时代数据爆炸性的增长,在海量数据处理中,我们经常会遇到的某几类问题,一种是优先级队列,一种在给定演艺数据中找出出现频率最高的前n个演员,或者从电影数据中找出最近一个月热度最高的前m部电影,这类问题通常被称为 top K问题。例如,在搜索引擎中,统计搜索最热门的前10大足球明星或者NBA篮球明星,在金曲榜中统计下 载最高的前10首流行歌曲等。下面的代码是一个经典的堆排序过程,请补充完整全部程序。
#include<iostream>
#include <algorithm>
us ing namespace std;
void heap_change (int *arr,int i,int len)
{
	int l_kid=2*i;
	int r_kid=2*i+1;
	int max=i;
	if(i<=len/2)
	{
		if(__(1)__)
		{
			max=l_kid;
		}
		if(__(2)__)
		{
			max=r_kid;
		}
		if(__(3)__)
		{
			swap (arr[i],arr[max]);
			__(4)__;
		}
	}
}
void build_heap(int*arr,int len)
{
	for(int i=len/2; i>=1; --i)
	{
		heap_change(arr, i, len);
	}		
}
void heap_sort(int*arr,int len)
{
	int i;
	build_heap (arr,len);
	for(i=1en; 1>=1; --i)
	{
		swap (arr[1],arr[i]);
		__(5)__;
	}
}
void print_value(int*a,int len)
{
	for(int in1; i<=len; ++i)
	{
		cout<<a[i]<<" ";
	}
	cout<<endl ;
}
int main()
{
	int n;
	cin>>n;
	int a[n+1];
	for(int i=1; i<=n; 1++)
	{
		cin>>a[i];
	}
	print_value(a,n) ;
	heap_sort(a,n) ;
	print_value (a,n) ;
	return 0;
}
第 44 题 ⑴处应填( )。
第 45 题 ⑵处应填( )。
第 46 题 ⑶处应填( )。
第 47 题 ⑷处应填( )。
第 48 题 ⑸处应填( )。