F,E,D,C,B,A的顺序进栈,请问下列哪一个出栈顺序是不可能的是()

A、

B、

C、

D、

答案:D

题解:

选项D:FEDC进栈,C出栈,此时栈顶是D;B进栈,B出栈,此时栈顶是D;D出栈,此时栈顶是E;F在E的下面,所以F不可能出栈。D选项错误。

一个单向链表上的两个元素,指针M和N分别指向这两个元素,M所指元素是N所指元素前驱的条件是()

A、M->next = N;

B、M->next = N->next;

C、N->next = M;

D、M = N;

答案:A

现有长度分别为1,2,3,4,5,6,7,8,9,10 的木棍各一根,现要求用这些木棍(可以多根组合,但组合A=B=C=D, ABCD、ACDB..等重排列算一种正方形)拼成一个正方形,可以有几种拼法()

A、18种

B、19种

C、20种

D、15种

答案:B

题解:

由于每根木棍的长度不同,所以一定需要 7 根以上才能组成正方形;也就是说正方形的边长一定要 7 以上;

边长7有一种:1+6、2+5、3+4、7;

边长8有一种:1+7、2+6、3+5、8;

边长9有五种:1+8、2+7、3+6、4+5、9;(选4组进行组合)

边长10有五种:1+9、2+8、3+7、4+6、10;(选4组进行组合)

边长11有五种:1+10、2+9、3+8、4+7、5+6;(同上)

边长12有一种:2+10、3+9、4+8、5+7;

边长13有一种:3+10、4+9、5+8、6+7;

一共 19 种。

下边IPV6地址中写法正确的是()

A、fe80:0:b4f9:6c6f:b658:d4aa

B、fe80:0:0:0:b4u9:6c6f:b658:d4aa

C、fe80::b4f9:6c6f:b658:d4aa

D、fe80::b4f9:6c6f:b658::d4aa

答案:C

题解:

1050:0000:0000:0000:0005:0600:300c:326b

可以写成:

1050:0:0:0:5:600:300c:326b

ff06:0:0:0:0:0:0:c3

可以写成:

ff06::c3

1+2*(3+8/4)的后缀表达式正确写法是()

A、12384/+*+

B、/+*+12384

C、12384+*+/

D、+*+/12384

答案:A

题解:

中缀表达式变成后缀表达式的规则:

运维同学通知我们一台服务器(linux)存放日志的磁盘分区快满了,因此我们决定删除一些日志。但该服务器部署了多个服务,我们想优先删除磁盘占用量比较大的服务的日志。已知所有服务都将日志打印到/opt/scf/log/{服务名}/{服务名}.log, 请帮忙选出一个命令来查看各个服务日志占用的空间()

A、df -h /opt/scf/log

B、df -h /opt/scf/log/*

C、du -sh /opt/scf/log

D、du -sh /opt/scf/log/*

答案:D

题解:

df -h:以可读性较好的方式显示文件系统信息;

du -sh:查看当前目录下各个文件及目录占用空间大小

以下哪项是对单核cpu执行程序时间的正确描述()

A、程序CPU执行时间= 指令数× 时钟周期时间

B、程序CPU执行时间= CPU时钟周期数× 单条指令平均执行周期

C、程序CPU执行时间=指令数×单条指令平均执行周期×时钟周期时间

D、程序CPU执行时间= CPU时钟周期数× 指令数×单条指令平均执行周期×时钟周期时间

答案:C

机器间传输数据,发送端发送2096字节的数据,接收端会出现丢失部分数据情况(传输协议使用: UDP),引起这问题最大可能原因()

A、网络环境问题

B、接收端网卡问题

C、数据长度大于接收端缓冲区

D、网络传输分包

答案:C

采用快排对3 7 6 9 10 12 1进行排序(第一个为基准数),第一轮探测结果为()

A、1 3 6 9 10 12 7

B、9 1 6 3 10 12 7

C、3 1 6 9 10 12 7

D、1 3 6 7 9 10 12

答案:A

题解:

快速排序思想:以某个数为基准,进行第一次调整,要求调整完后中缀表达式转后缀表达式,基准前面的数字都比基准数字小,基准后面的数字逗比基准数字大(如果是按从小到大排序)。然后对基准数字前面的序列以及后面的序列都进行相同的操作(递归)。

题目中以数字 3 为基准,所以第一趟排序后,3前面的数字都应该比 3 小,3后面的数字都应该比 3 大。

以下关于进程调度算法的描述中,错误的是()

A、优先级调度算法会引起进程的饥饿问题

B、短作业优先调度算法的平均等待时间最少

C、当系统最长响应时间一定时,时间片轮转调度算法的时间片大小与系统允许的最大进程数成正比

D、高响应比优先调度算法综合考虑了进程等待时间和执行时间

答案:C

十一

对TCP/IP协议集叙述正确的的选项()

A、TCP/IP协议集分为4层,从上到下依次分别为应用层、网络层、传输层、接口层

B、应用层包含有"超文本传输协议(HTTP)"、"简单文件传输协议(TFTP)"、"地址解析协议(ARP)"等

C、网络层包含有"TCP"、"UDP"等

D、"TCP"在创建链接使用"3次握手",断开链接使用"4次握手"

答案:D

题解:

选项A:应用层-传输层-网络层-数据链路层;

选项B:ARP属于网络层;

选项C:TCP和UDP协议属于传输层。

十二

时间限制:C/C++ 1秒,其他语言2秒

空间限制:C/C++ 32M,其他语言64M

给定一个字符串,字符串是有序的整数集合,逗号相连中缀表达式转后缀表达式,移除相同的数字,使每个数字只出现一次,输出最终的数字个数。

输入描述:

1,2,2

输出描述:

2

输入例子1:

1,2,2

输出例子1:

2

输入例子2:

0,0,1,1,1,2,2,3,3,4

输出例子2:

5

#include 
#include 
#include 
int count(int *a, int last)
{
    int i, length = 1, num = a[0];
    for (i = 1; i <= last; i++)
    {
        if (a[i] != num)             //遇到相同的数字跳过,统计不同数字的个数
        {
            length++;
            num = a[i];
        }
    }
    return length;                  //返回个数
}
int str_to_int(char *str, int *a)
{
    int i = 0;
    char *p1, *p2;
    p1 = str;
    p2 = str;
    char num[32] = {0};
    while (*p1 != '' && *p2 != '')
    {
        if (*p2 == ',')                  //遇到逗号开始解析前面的字符串
        {
            strncpy(num, p1, p2 - p1);   //存放逗号之间的字符串
            a[i++] = atoi(num);          //字符串转换成数字
            p1 = ++p2;
            memset(num, 0, sizeof(num));
        }
        else
        {
            p2++;
        }
    }
    strncpy(num, p1, p2 - p1);            //最后一个数字没有逗号,单独处理
    a[i] = atoi(num);
    return i;                             //返回最后一个数字的下标
}
int main()
{
    char str[1024] = {0};
    int array[1024] = {0};
    scanf("%s", str);                     //把输入当做一个字符串获取
    int length = str_to_int(str, array);  //根据逗号解析字符串,得到一个整形数组
    printf("%dn", count(array, length));
    return 0;
}

十三

时间限制:C/C++ 1秒,其他语言2秒

空间限制:C/C++ 32M,其他语言64M

现有一个地图,由横线与竖线组成(参考围棋棋盘),且两点之间有行走距离起点为左上角,终点为右下角在地图上,每次行走只能沿线移动到临近的点,并累加路径计算一个人从地图的起点走到终点的最小路径为多少。

输入描述:

m*n地图表示如下:
3
3
1 3 4
2 1 2
4 3 1
其中m=3,n=3 表示3*3的矩阵
行走路径为:下>右>右>下

输出描述:

路径总长:1+2+1+2+1=7

输入例子1:

1
2
1 2

输出例子1:

3

输入例子2:

2
3
9 8 6
2 3 7

输出例子2:

21

#include 
#include 
int min(int x, int y)
{
    return (x < y) ? x : y;
}
int main()
{
    int m, n;
    int i, j;
    scanf("%d%d", &m, &n);
    //int (*input)[n] = (int (*)[n])malloc(sizeof(int) * m * n); 
    int **input = (int **)malloc(sizeof(int *) * m);
    for (i = 0; i < m; i++)
    {
        input[i] = (int *)malloc(sizeof(int) * n);
    }
    
    for (i = 0; i < m; i++)
    {
        for (j = 0; j < n; j++)
        {
            scanf("%d", &input[i][j]);
        }
    }
    //int (*dp)[n] = (int (*)[n])malloc(sizeof(int) * m * n);
    int **dp = (int **)malloc(sizeof(int *) * m);
    for (i = 0; i < m; i++)
    {
        dp[i] = (int *)malloc(sizeof(int) * n);
    }
    dp[0][0] = input[0][0];
    for(i = 1; i < m; i++)
    {
        dp[i][0] = dp[i - 1][0] + input[i][0];
    }
    for(i = 1; i < n; i++)
    {
        dp[0][i] = dp[0][i - 1] + input[0][i];
    }
    for(i = 1; i < m; i++)
    {
        for(j = 1; j < n; j++)
        {
            dp[i][j] = min(dp[i-1][j], dp[i][j - 1]) + input[i][j];
        }
    }
    printf("%dn", dp[m - 1][n - 1]);
    return 0;
}

中缀表达式转后缀表达式_表达式后缀转中缀什么意思_表达式转中缀表达式

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注