一.选择题
1.下面的排序算法中,稳定是
直接插入排序法
快速排序法
直接选择排序法
堆排序法
解析:
2.关于TCP/IP协议叙述中错误的是()
TCP/IP协议是一个协议系列,它包含100多个协议.
TCP,IP协议是其中两个最基本,最重要的协议。
一种网络通信协议
TCP/IP协议广泛用于广域网互联,但不可用于局域网通信。
3.关于C/S模式中扮演服务器角色的计算机,下面说法错误的是()
硬盘容量大
并发处理能力强
传输速率高
只能作为服务器,不可能再做客户机
4.数据的逻辑独立性是指( )?
存储结构与物理结构的逻辑独立性
数据与存储结构的逻辑独立性
用户的应用程序与数据库的逻辑结构是相互独立的
数据元素之间的逻辑独立性
5.设某堆中有 n 个结点,则在该堆中插入一个新结点的时间复杂度为 O(log2n) 。( )
正确
错误
6.为实现快速排序算法,待排序序列宜采用的存储方式是()。
顺序存储
散列存储
链式存储
索引存储
解析:对绝大部分内部排序而言,只适用于顺序存储结构。快速排序在排序的过程中,既要从后向前查找,也要从前向后查找,因此宜采用顺序存储。
7.波特率是指( )。
每秒钟传输的比特数
每秒钟传送的波形(码元)数
每秒钟传输的周期数
每秒钟传输的字节数
8.CSMA/CD 总线网适用的标准 ()
IEEE802.3
IEEE802.5
IEEE802.6
IEEE802.11
9.无向图G中含8个顶点,则保证图G在任何情况下都是连通的,则需要的边数最少是( )
6
7
16
22
[解析] 本题考查图的基本概念。
要保证无向图G在任何情况下都是连通的,即任意变动图G中的边,G始终保持连通。首先需要图G的任意7个结点构成完全连通子图G1,需n(n-1)/2=7×(7-1)/2=21条边,然后再添加一条边将第8个结点与G1连接起来,共需22条边。
本题非常容易错误地选择选项A,主要原因是对“保证图G在任何情况下都是连通的”的理解,分析选项A,在图G中,具有8个顶点7条边并不能保证其一定是连通图,即有n-1条边的图不一定是连通图。
分析选项D,图G有8个顶点28条边,那么图G一定是无向完全图,无向完全图能保证其在任何情况下都是连通的,但是这不符合题目中所需边数最少的要求。——摘自https://wenku.baidu.com/view/b0591d2d59fb770bf78a6529647d27284b733771.html
10.what is the result of the following code?
enum AccountType
{
SAVING, FIXED, CURRENT;
private AccountType()
{
System.out.println(“It is a account type”);
}
}
class EnumOne
{
public static void main(String[]args)
{
System.out.println(AccountType.FIXED);
}
}
Compiles fine and output is prints”It is a account type”once followed by”FIXED”
Compiles fine and output is prints”It is a account type”twice followed by”FIXED”
Compiles fine and output is prints”It is a account type”thrice followed by”FIXED”
Compiles fine and output is prints”It is a account type”four times followed by”FIXED”
Compilation fails
解析:枚举类有三个实例,故调用三次构造方法,打印三次It is a account type
二.编程题
链接:https://www.nowcoder.com/questionTerminal/493d71a992f44554a500ed818056e1a6
来源:牛客网
https://www.nowcoder.com/practice/493d71a992f44554a500ed818056e1a6?tpId=85&&tqId=29895&rp=1&ru=/activity/oj&qru=/ta/2017test/question-ranking
继MIUI8推出手机分身功能之后,MIUI9计划推出一个电话号码分身的功能:首先将电话号码中的每个数字加上8取个位,然后使用对应的大写字母代替 (“ZERO”, “ONE”, “TWO”, “THREE”, “FOUR”, “FIVE”, “SIX”, “SEVEN”, “EIGHT”, “NINE”), 然后随机打乱这些字母,所生成的字符串即为电话号码对应的分身。
输入描述:
第一行是一个整数T(1 ≤ T ≤ 100)表示测试样例数;接下来T行,每行给定一个分身后的电话号码的分身(长度在3到10000之间)。
输出描述:
输出T行,分别对应输入中每行字符串对应的分身前的最小电话号码(允许前导0)。
示例1
输入
4
EIGHT
ZEROTWOONE
OHWETENRTEO
OHEWTIEGTHENRTEO
输出
0
234
345
0345
/*
此题我们要找到每个单词的关键字母进行统计然后计算每个单词的个数,之后对它进行加8取余再进行遍历输出就可得到答案
具体分析:见代码注释
**/
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
public class Main {
public static void main(String[] args){
Map<Character,Integer> map=new HashMap<Character,Integer>();
Scanner sc=new Scanner(System.in);
int num=sc.nextInt();
Main te=new Main();
String[] str=new String[num];
for(int i=0;i<num;i++){
str[i]=sc.next();
}
for(int i=0;i<num;i++){
te.getMap(map);
te.countString(str[i],map);
int count[]=new int[10];
te.numberCount(map,count);
te.print(count);
}
sc.close();
}
//2.统计每个字符串中每个字母的个数
public void countString(String str,Map<Character,Integer> map){
for(int i=0;i<str.length();i++){
char c=str.charAt(i);
if(map.containsKey(c)){
map.put(c, 1+map.get(c));
}
}
}
//1.用来保存关键字母
public void getMap(Map<Character,Integer> map){
map.put('Z',0);
map.put('O',0);
map.put('W',0);
map.put('R',0);
map.put('U',0);
map.put('F',0);
map.put('X',0);
map.put('S',0);
map.put('G',0);
map.put('N',0);
}
//3.进行每个数字个数的计算数组下标代表该数
public void numberCount(Map<Character,Integer> map,int[] count){
count[0]=map.get('Z');
count[2]=map.get('W');
count[4]=map.get('U');
count[6]=map.get('X');
count[8]=map.get('G');
count[1]=map.get('O')-count[2]-count[4]-count[0];
count[3]=map.get('R')-count[0]-count[4];
count[5]=map.get('F')-count[4];
count[7]=map.get('S')-count[6];
count[9]=(map.get('N')-count[7]-count[1])/2;//9有两个N
}
//4.输出加8之后的个位数并且按照个数输出
public void print(int[] count){
int[] newcount=new int[10];//用来记录加8之后的个位数
for(int i=0;i<newcount.length;i++){
newcount[i]=count[(i+8)%10];
}
for(int k=0;k<newcount.length;k++){//遍历十个数
for(int j=0;j<newcount[k];j++){//每个数输出几次
System.out.print(k);
}
}
System.out.println();//每个字符串完后换行
}
}