RT-Thread 能力认证习题总结 ---- 第三周

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/m0_37697335/article/details/90049667

第三周:QEMU 网络

要求

学习文档中心QEMU网络视频教程。观看视频及文档,能够搭建 QEMU 的运行环境并成功运行文件系统;了解基本的网络概念,学会使用抓包工具分析数据包。


作业提交:第三周作业+姓名.zip

其中包含:

作业2的.c
作业3的.c
一个word文档写出几个作业的步骤、心得

作业1:

获取并运行文件系统相关示例程序,这可以在学习过程中进行。

作业2:

文件匹配: 有一系列文件如:1.txt, 12.txt, 123.txt,从中找出1.txt,并将文件内容输出出来。

作业3:(服务器开两周,注意做作业时间)

观看视频及文档,能够正常获取并运行示例程序,通过示例程序的学习能够掌握使用 Socket 进行网络编程的方法,能够实现一个简单的 TCP 聊天客户端

背景

在服务器 183.193.243.90 的 5000 端口 上运行了一个基于 TCP 的简单的聊天服务器。

  1. 当有 TCP 客户端连接上后,服务器会回复给客户端 Welcome to TestChat;
  2. 未使用 login 命令登录服务器之前,服务器收到任何信息只会回复 Please log in Use "login "
  3. 服务器端能够接收如下命令:
命令 说明 示例 服务器回复
login 登录聊天室 login ID
say 说话 say My name is Yqiu, I’m doing this job at 20180512. ID :My name is Yqiu, I’m doing this job at 20180512.
look 查看聊天室有哪些人 look 所有ID
who 我是谁 who login ID
logout 退出 logout
其他 Unknown Command

服务器会把接受到的每条命令,发送给客户端。

如果服务器接受到错误命令,会发送给客户端 Unknown command 的字符串。

注意:每条命令必须以\r\n结束,服务器才能识别。

作业要求:

通过编程实现:

  1. 使用 login 命令登录上服务器聊天室,并将服务器返回的信息通过串口打印出来
  2. 使用 say 命令通知服务器你的个人姓名和作业时间 “My name is Yqiu, I’m doing this job at 20180730”,并将服务器返回的信息打印出来
  3. 使用 look 命令查看聊天室人员,并将服务器返回的信息打印出来
  4. 使用 who 命令查看我是谁,并将服务器返回的信息打印出来
  5. 使用 say 命令告诉服务器我看到有哪些人在聊天室
  6. 使用 say 命令告诉服务器我准备退出了
  7. 使用 logout 退出聊天室

练习题:

完成以下练习题:

1、若有宏定义:#define MOD(x,y) x%y
则执行以下语句后的输出结果是

int a=13,b=94;
printf("%d\n",MOD(b,a+4));

A.5

B.7

C.9

D.11

答案:B

2、若一个栈的输入序列是1,2,3,…,n,输出序列的第一个元素是n,则第i个输出元素是( )

A.n

B.n-i

C.n-i-1

D.n-i+1

答案:D
特例判断

3、以下程序输出结果为:

char* f(char *str, char ch) {
    char *it1 = str;
    char *it2 = str;
    while (*it2 != '\0') {
        while (*it2 == ch) { it2++; }
        *it1++ = *it2++;
     }
    return str;
}
void main(int argc, char *argv[]) {
    char *a = new char[10];
    strcpy(a, "abcdcccd");
    cout << f(a, 'c');
}

A.abdcccd

B.abdd

C.abcc

D.abddcccd

答案:D

4、编程:将一个正整数分解质因数。例如:输入90,打印出90=2 * 3 *3 *5。

#include "stdio.h"

int main(void){
    int num=0,rel=0;
    int buf[32]={0};
    int i,j=0;
    scanf("%d",&num);

    for(i=2;i<=num;i++)  
    {
        rel=num/i;
        if(num ==(rel*i))  //因为存在类型截断,判断i是否是质因数
        {
            buf[j++] = i;
            num=num/i;  //更新num,缩小范围
            i--;
        }
    }

    for(i=0;i<j;i++)
        printf("%d ",buf[i]);

    return 0;
}


1.设栈 S 和队列 Q 的初始状态为空,元素 e1 、 e2 、 e3 、 e4 、 e5 和 e6 依次通过栈 S ,一个元素出栈后即进入队列 Q ,若 6 个元素出队的顺序是 e2 、 e4 、 e3 、 e6 、 e5 、和 e1 ,则栈 S 容量至少应该是

A.6

B.4

C.3

D.2

答案:C


1、以下有关IO接口或IO设备说法错误的是( )

A.GPIO一般有三态:0态 ,1态 ,高阻态

B.I2C只有两条信号线,在SCL为高电平,将SDA从高电平拉低后可以开始传输数据

C.SPI一般使用4线制,可以一主多从

D.UART是全双工串行异步通信,直接使用UART通信时,需要将信号相同的线相连。

答案:D


1、中断屏蔽器能屏蔽( )

(A)所有中断和异常 (B)除了NMI外所有异常和中断

(C)除了NMI、异常所有其他中断 (D)部分中断

答案:B

2.下列寄存器中,汇编语言程序员可见的是()。

A.存储器地址寄存器(MAR)

B.程序计数器(PC)

C.存储器数据寄存器(MDR)

D.指令寄存器(IR)

答案:B

3.以下各种情况中,属于死锁现象的是() 。

A.某进程执行了死循环

B.某进程为了得到某资源,等待了很长的时间

C.某进程为了得到某资源,等待了无限的时间

D.操作系统故障

答案:C


1、指出下面的 IP 地址中,哪个是 C 类地址 ( )

A.127 . 19 . 0 . 23

B.193 . 0 . 25 . 37

C.225 . 21 . 0 . 11

D.170 . 23 . 0 . 1

答案:

猜你喜欢

转载自blog.csdn.net/m0_37697335/article/details/90049667