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

一、选择题(每题1.5分,共计30分。每小题只有一个正确答案,多选错选均不能分)

1. 以下不属于计算机硬件的是( )

  • A.显示器
  • B.内存
  • C.操作系统
  • D.光盘驱动器

2. 以下列扩展名结尾的文件,是视频文件的是( )

  • A.app
  • B.avi
  • C.tif
  • D.jpg

3. Pascal表达式123 div 5 mod 7值是( )或 C++的表达式为123 / 5 % 7值是( )

  • A.3
  • B.4
  • C.24
  • D.25

4. 计算机存储单位中,1Byte= ( )bit。

  • A.4
  • B.8
  • C.16
  • D.1024

5. 彩色显示器所显示的五彩斑斓的颜色是由( )混合而成的

  • A.红色、黄色、蓝色
  • B.红色、绿色、蓝色
  • C.红色、黄色、绿色
  • D.绿色、黄色、蓝色

6. 已知大写字母A的ASCII码在十六进制下为41,则大写字母K的ASCII码在十六进制下为( )

  • A.51
  • B.4A
  • C.4B
  • D.75

7. ∧表示与,∨表示或,已知A=B=true,C=D=false,下列逻辑表达式的结果为false的是( )

  • A.A∨B∨C∨D
  • B.A∧(B∨C)∨D
  • C.(A∨C)∧(B∨D)
  • D.A∧(B∨C)∧D

8. 选择排序的时间复杂度是( )

  • A.O(n)
  • B.O(nlogn)
  • C.O(n^2)
  • D.O(n^n)

9. 二进制数1011010,在十进制下是( )

  • A.90
  • B.180
  • C.62
  • D.84

10. 如果一棵二叉树的先序遍历是ACDBEFG,中序遍历是DCAEBFG,那么它的后序遍历是( )

  • A.DCAEGFB
  • B.DCAEFGB
  • C.DCEFGBA
  • D.DCEGFBA

11. 一棵满二叉树有n个非叶子结点,那么这棵满二叉树叶子结点的个数是( )

  • A.n-1
  • B.n
  • C.n+1
  • D.2n

12. 一幅尺寸为1920*1080的图片,其位深度为24,这个图片文件的大小约为( )

  • A.5.9KB
  • B.47.5KB
  • C.5.9MB
  • D.47.5MB

13. 中缀表达式A×B-(C+D)×E的后缀表达式是( )

  • A.AB×CD+-E×
  • B.AB×-CD+E×
  • C.AB×CD+E×-
  • D.AB×C+DE×-

14. Windows下,将回收站中的文件还原时,被还原的文件将回到( )

  • A.被删除的位置
  • B.“我的文档”中
  • C.指定位置
  • D.桌面上

15. 一个初始为空的栈,已知ABC依次进栈,则下列出栈序列中不可能出现的是( )

  • A.ABC
  • B.CAB
  • C.BAC
  • D.ACB

16. 算式(101101)2+(12)8的结果是( )

  • A.(37)16
  • B.(55)8
  • C.(110110)2
  • D.(45)10

17. 三个结点的不同二叉树的种类数是( )

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

18. 下面程序段中用到的程序结构有( ) sum=0; for (int i=1; i<=10; i++) for (int j=1; j<=10; j++) sum=sum+i+j;

  • A.顺序结构和分支结构
  • B.分支结构和循环结构
  • C.顺序结构和循环结构
  • D.顺序结构、分支结构和循环结构

19. 计算机病毒造成的主要危害是( )

  • A.磁盘破坏
  • B.计算机用户的感染
  • C.CPU损坏
  • D.程序和数据的破坏

20. 计算机的存储器采用分级存储体系(多级结构)的主要目的是( )

  • A. 便于读写数据
  • B.减小机箱期的体积
  • C.便于系统升级
  • D.解决存储容量、价格和存储速度之间的矛盾

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

1. 下图5×6的网格中,共有多少个不同(位置成大小不同)的矩形(包括正方形和长方形)?
答案:315

2. 班上有48 名学生,在一节自习课上,写完语文作业的有28人,写完数学作业的有18人,语文数学作业都没有写完的有10人。问写完语文作业但没有写完数学作业的有多少人?
答案:20

三、阅读程序,求程序运行输出结果(每题8分,共计32分)

1.

#include <iostream>
using namespace std;
int main()
{
	int a,b,c,d;
	cin>>a>>b;
	if (a+b>25)
		a=a-5;
	else
		b=b+5;
	c=b-a;
	d=a*b;
	cout<<d-c<<endl;
	return 0;
}
输入:10 20 
运行结果为:
输出:85

2.

#include <iostream>
using namespace std;
int main()
{
	int x,k,n;
	int a[100];
	cin>>x>>k;
	n=0;
	while (x>0)
	{
		n++;
		a[n]=x%k;
		x=x/k;	
	}
	for (int i=n; i>=1; i--)
		cout<<a[i];
	cout<<endl;
	return 0;
}

输入:2018 7 
运行结果为:
输出:5612

3.

#include <iostream>
using namespace std;
int n,m;
int f(int n,int m)
{
	if (m<=1) return n+m;
	if (n>=m) return f(n-m+1,m)*2;
	else  return f(m,n)*3;
}
int main()
{
	cin>>n>>m;
	cout<<f(n,m)<<endl;
	return 0;
}

输入:6 3 
运行结果为:
输出:432

4.

#include <iostream>
using namespace std;
int n,m;
int a[100],b[100];
bool tmp;
int main()
{
	cin>>n>>m;
	for (int i=1; i<=n; i++)
		cin>>a[i];
	for (int i=1; i<=m; i++)
		cin>>b[i];
	for (int i=1; i<=n-m+1; i++)
	{
		tmp=true;
		for (int j=1; j<=m; j++)
			if (a[i+j-1]!=b[j])
				tmp=false;
		if (tmp) cout<<i<<endl;
	}	
	return 0;
}
输入:
8 2
10 15 2 3 4 7 3 12 3 4  
运行结果为:
输出:4

四.完善程序(每题前一空2 分,其余每空3 分,共 28 分)

1. (最小公倍数)
输入a、b、c,输出a、b、c的最小公倍数。三个数的最小公倍数为同时能够整除这三个数的最小正整数。
思路:先求出a,b的最小公倍数d,再用同样方法求出c,d的最小公倍数,即为所要求的a、b、c的最小公倍数。
请根据上面的描述,完善如下程序:

#include <iostream>
using namespace std;
int a,b,c,d; 
int main()
{
	cin>>a>>b>>c;
	for (int i=a; i>=1; i--)
	if ( a%i==0 && b%i==0)
	{
		d=a/i*b;
		for (int j=c; j>=1; j--)
			if (c%j==0 && d%j==0 )
			{
				cout<< c/j*d <<endl;
				 return 0 ;
			}
		break;		
	}
	return 0;
}

2. (回文平方数)
如果一个数从左往右读和从右往左读都是一样,那么这个数就叫做“回文数”。例如,12321就是一个回文数,而77778就不是。当然,回文数的首和尾都应是非零的,因此0220就不是回文数。
给定一个进制k(2≤k≤20,k由十进制表示),找到正整数n(1≤n≤1000,n由十进制表示),使得n和n的平方在k进制下都是回文数,输出所有满足要求的正整数n。
请根据上面的描述,完善如下程序:

#include <iostream>
using namespace std;
int k;
int a[100];
bool check(int x)
{
	int n;//n用来记录x转换成 k 进制后的位数 
	bool bo;
	//将x转换成k进制存入数组a中 
	n=0;
	while(x)
	{
		n++;
		a[n]=x%k;
		x/=k;
	} 
	//判断存储在 a 中的 k 进制是否回文
	bo=true; 
	for (int i=1; i<=n/2; i++)
		if (a[i]!= a[n-i+1] )
		{
			bo=false;
			break;
		}
		return bo;
}
int main()
{
	cin>>k;
	for (int i=1; i<=1000; i++)
	if (check(i) && check(i*i))
		cout<< i <<endl;
	return 0;
}