不是VIP会员,不能显示答案,请在后台“我的信息” 在线升级 VIP

一、选择题(每题有且仅有一个正确答案,选对得1.5分,选错.不选或多选均不得分)

1. 以下不是智能语音助理软件的是:

  • A.Siri
  • B.Microsoft PowerPoint
  • C.Cortana
  • D.Google Assistant

2. 在 RGB 色彩模式下, R(红)、G(绿)、 B(蓝)每种成分都可使用从0到255的值。例如白色的R、G、 B值都为 255,黑色的R、G、B值都为 0,而亮红色使用的R值为246、G值为20、B值为 50。则 RGB 色彩模式共可以组合出的色彩总数为:

  • A.255
  • B.256
  • C.256 + 256 + 256
  • D.256 X 256 X 256

3. 以下关于IPv6和 IPv4 的说法不正确的是:

  • A.IPv6的地址长度为 128 位,是 IPv4 地址长度的 4 倍
  • B.IPv6 比 IPv4 具有更大的地址空间
  • C. “FF01:0:0:0:0:0:0:1101”是一种 合法的IPv6地址表示方法
  • D.Windows系列操作系统从Windows 10才开始支持IPv6

4. 以下措施对于加快计算机的开机速度效果最不明显的是:

  • A.使用更高性能的CPU
  • B.使用更大尺寸的显示器
  • C.使用固态硬盘
  • D.使用更大容量的内存

5. 以下不作为输入设备的是:

  • A.麦克风
  • B.手写板
  • C.打印机
  • D.扫描仪

6. 以下关于网络协议的说说不正确的是:

  • A.HTTP是超文本传输协议(HyperText Transfer Protocol)的缩写,主要用于从WWW服务器传输超文本到本地浏览器
  • B.FTP是快速传输协议(Fast Transfer Protocol)的缩写,是实现文件快速传输的协议。
  • C.SMTP是简单邮件传输协议(Simple Mail Transfer Protocol)的缩写,主要和用于传输网络邮件信息
  • D.HTTP、FTP1、SMTP三大协议都位于TCP/IP体系结构的应用层

7. 十六进制50减去十进制数1的结果是:

  • A.十六进制4F
  • B.十六进制数49
  • C.二进制数1010001
  • D.二进制数1011111

8. 奇偶校验是一种校验数据传输正确性的方法,根据被传输的一组二进制数位(含校验位)中“1”的个数是奇数或偶数来进行校验。采用奇数的称为奇校验,反之,称为偶校验,以下采用奇校验的数据在传输过程中出错的是:

  • A.100010001
  • B.010101110
  • C.011101110
  • D.100110011

9. 通常所说的“4K 显示器”中的“4K”是指显示器的:

  • A.价格
  • B.重量
  • C.分辨率
  • D.品牌

10. 以下关于算法描述不正确的是:

  • A.某个算法的空间复杂度很大,时间复杂度有可能很小
  • B.用高级程序设计语言实现的算法时间和空间复杂度肯定低
  • C.解决某个问题的算法可能是不唯一的
  • D.自然语言可以作为描述算法的一种方式

11. 对如图所示的二叉树进行后序遍历的结果为

  • A.DFBAEGC
  • B.FDBAGEC
  • C.FDBGECA
  • D.DFBEGCA

12. 以下程序能正确输出1/3+3/5+5/7+...97/99的是:

  • A.
  • B.
  • C.
  • D.

13. 当变量a的值不为3、5、7时,以下条件表达式中值“TRUE”(真)的是:

  • A.(a=3)or(a=5)or(a=7)
  • B.(a>=3)and(a<=7)and not (a mod 2=0)
  • C.(a>=3)and(a<=7)or(a<>4)or(a<>6)
  • D.(a>=3)and(a<=7)and(a mod 2<>0

14. 设有栈S和队列Q,初始状态均为空,依次进行如下操作: (1)将元素A、B、C依次进行栈S (2)从栈S中出栈2个元素,根据出栈顺序依次入队Q (3)将元素D、E、F依次进行栈S (4)从队列Q中出队2个元素,根据出队顺序依次进栈S (3)则第5步中元素的出栈顺序依次为:

  • A.B、C、F、E、D、A
  • B.F、E、A、C、B
  • C.C、B、F、E、D、A
  • D.F、E、D、A

15. 有以下程序 程序运行后的输出结果是:

  • A.2
  • B.5
  • C.11
  • D.23

16. 每一次从特排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完,符合这种思想的排序算法是:

  • A.冒泡排序
  • B.选择排序
  • C.插入排序
  • D.快速排序

17. 一棵深度为k的满二叉树,结点总数为

  • A.k
  • B.2^k
  • C.2^(k-1)+1
  • D.2^k-1

18. 小美与小丽是一对双胞胎,她们每天都喜欢穿相同颜色的衣服,她家的14个衣架(编号为1到14)上都挂着一件衣服(可重复穿),每个衣架上衣服的颜色(分别用一个数字表示,相同的数字表示颜色相同,反之不同)如下表所示。 小美和小丽的妈妈要求她俩一周中每天必须穿指定衣架上的衣服,具体要求如下表所示。 小美和小丽有一种神奇的染色装置,每使用一次就能将一件衣服染成任何相要的颜色。要实现小美和小丽每天穿相同颜色的衣服愿望。以符合她们妈妈的要求,这一周中至少需要使用染色装置的次数为:

  • A.2
  • B.3
  • C.4
  • D.5

19. 有名称为A、B、C、D、E的5个队伍参与比赛,前3场比赛的结果如下表所示。 仅根据这3场比赛的结果对本次比赛从前往后排名,排名可能不唯一,如果“ABCDE” 就是其中一种可能的结果。本次比赛从前往向排名可能的方案总数为

  • A.3种
  • B.15种
  • C.18种
  • D.20种

20. 以下关于“人工智能”的说法不正确的是:

  • A.人工智能英文缩写为AI
  • B.人工智能是研究使用计算机来模拟人的某些思维过程和智能行业的学科
  • C.人工智能队了计算机学科外,还涉及信息论、控制论、自动化、仿生学等多门学科
  • D.指纹识别技术不属于人工智能的应用范畴

二、问题求解(每题5分,共10分)

1. 书架上有7本各不相同的书籍,其中4本是历史类书,3本是计算机类书,小明要人中挑出3本书,其中至少要有1本计算机类书的选法共有 种。
答案:31

2. 下图中的8个节点通过13条无向边相连,每条无向边上都有两个信息:前面一个字母表示这条边的安全性(字母S表示这条边是安全边,字母D表示这条边是危险边),后面一个数字表示这条边的长度。从中找出7条边能连通这8个节点,且这7条边中恰好有2条安全边(S边),记这7条边长度之和为SUM,则SUM的最小值为 。
答案:12

三、阅读程序写结果(每题8 分,共 32分)

1.

#include <iostream>
using namespace std;
int n,m,j,x,sum; 
int main()
{
	cin>>n>>m;
	int maxsum=0;
	for (int i=1; i<=n; i++)
	{
		sum=0;
		j=1;
		while (j<=m)
		{
			cin>>x;
			if (x!=3)
				sum=sum+x;
			j++;
		}
		if (maxsum<sum)
			maxsum=sum;
	}
	cout<<maxsum<<endl;	
	return 0;
}
输入:
3 4
12 3 7 6
3 11 2 8
13 -1 13 0
输出:25

2.

#include <iostream>
using namespace std;
int sum,x,n; 
int main()
{
	sum=0;
	cin>>n;
	for(int i=1; i<=n; i++)
	{
		cin>>x;
		if (x%8/2==2)
			sum=sum+x;		
	}
	cout<< sum <<endl;
	return 0;
}
输入:
8
13 14 15 16 17 18 19 20
输出:33

3.

#include <iostream>
#include <string>
using namespace std;
char c;
string s;
int main()
{
	cin>>s;
	int len=s.size();
	for (int i=0; i<len; i++)
		if (s[i]>='A' && s[i] <='Z')
			s[i]=(s[i]+2-'A') % 26 + 'A';
		else
			s[i]=(s[i]+2-'a') % 26 + 'a';
	for (int i=0; i<(len-1)/2; i++)
	{
		c=s[i];
		s[i]=s[len-i-1];
		s[len-i-1]=c;
	}
	for (int i=0; i<len; i++)
		if (s[i]>='A' && s[i] <='Z')
			s[i]=s[i]-'A'+'a';
		else
			s[i]=s[i]-'a'+'A';
	cout<<s<<endl;
	return 0;
}

输入:
NbZxs
输出:UZbDp

4.

#include <iostream>
#include <cmath>
using namespace std;
int a[100],n;
void Find(int s)
{
	int i=1,j=n;
	int diff=1000;
	int x=-1,y=-1;
	while (i<n && j>i)
	{
		if (abs(a[i]+a[j]-s)<diff)
		{
		  //abs(x)表示求x的绝对值 
		  x=i;
		  y=j;
		  diff= abs(a[i]+a[j]-s);
		}
		else if (a[i]+a[j]<s)
		  i++;
		else
		  j--;
	}
	cout<< x <<" "<< y << endl;
}
int main()
{
	cin>>n;
	for (int i=1; i<=n; i++)
		cin>>a[i];
	Find(10);	
	return 0;
}

输入:
8
-3 -1 1 3 6 12 13 15
输出:1 7

四、程序填空 (第1题后两空每空2分 ,其余每空3分,共28分)

1. (递归实现选择排序)请完善下面的程序,读入n个整数,用选择排序对这n个数从小到大排序后输出。
输入:
共2行。
第一行一个整数n((1 ≤ n ≤ 100)。
第二行用空格分隔的n个数。
输出:
共一行,经过排序后的n个整数。整数之间用一个空格分隔。
输入样例:
10
1 3 2 6 3 4 9 8 7 2
输出样例:
1 2 2 3 4 5 6 7 8 9

#include <iostream>
using namespace std;
int a[100],n;
void SelectSort(int s, int e) //对数组元素a[s]到a[e]从小到大排序;
{
	if (e>s)
	{
		int k=s;
		for (int i=s+1; i<=e; i++)
		  if(a[i]<a[k])
		    k=i;
		if ( k!=s )  
		{
			int temp=a[k];
			 a[k]=a[s] ;
			a[s]=temp;
		}
		 SelectSort(s+1,e) ;
	}	
} 

int main()
{
	cin>>n;
	for (int i=1; i<=n; i++)
		cin>>a[i];
	   SelectSort(1,n) ;
	for (int i=1; i<n或 i<=n-1 ; i++)
		cout<<a[i]<<' ';
		cout<<a[n]<<endl;	
	return 0;
}

2. (家谱树》小明的家谱中共有n(编号为1到n)个人,相互关系构成了一棵树。现给出家谱中人员之间的相互关系。求出家谱中子孙(不包括自己)共有m个的人数。
输入:
第一行2个整数n(1≤n≤100)和m(1≤n≤100)。
接下来n-1行,每行两个整数x,y(1≤x,y ≤100),表示x是y的父亲
输出:
输出一行1个整数,表示家谱中子孙共有m个的人数。
输入样例:
9 2
1 2
1 6
2 3
2 4
2 5
6 7
7 8
7 9
输出样例:
2
算法分析:本题主要通过枚举和深搜实现。由于家谱树中的每个结点的子孙结点等于其子结点总数加上各子结点的子孙结点总数。所以在实现时依次枚举各结点。并通过深搜统计以该结点为根的子树结点数之和ans(不包过根结点),如果ans等于m。则给结果cnt加1。

#include <iostream>
#include <cstring>
using namespace std;
int ans,a[101][101],c[101];
//a[i][j]表示编号为i的人的第j个孩子的编号
//c[i]存储编号为i的人的孩子总数
void dfs(int i)
{
	if ( c[i]==0 )
		return ;
	ans += c[i];
	for (int j=1; j<=c[i]; j++)
	   dfs(a[i][j]) ;
} 
int main()
{
	int n,m,x,y,cnt;
	cin>>n>>m;
	memset(a,0,sizeof(a));
	memset(c,0,sizeof(c));
	for (int i=1; i<=n-1; i++)
	{
		cin>>x>>y;
		 c[x]++ ;		
		a[x][c[x]]=y;
	}
	cnt=0;
	for (int i=1; i<=n; i++)
	{
		 ans=c[i] ;
		for (int j=1; j<=c[i]; j++)
			dfs(a[i][j]);
		if ( ans==m )
			cnt++;
	}
	cout<<cnt<<endl;	
	return 0;
}