每天一套笔试题系列(嵌入式相关3)

1.完成使链表逆置函数reverse:

  链表结点的结构如下:

struct node

{

    int num;

    struct node *next;

};

struct node* reverse(struct node *head) // head 链表头结点

{

    struct node *p, *temp1, *temp2;

    if(head==NULL       不填             ) return head;

    p=head->next;

    head->next=NULL;

    while(   p!=NULL                  )//当p不为空的时候

    {

        temp1=head;

         head = p;

         temp2 = p;
    
         P = p->next;

         p = temp2;

      }

    return head;

}

2.程序功能是倒序输出各给定的字符串。找出下面程序中的语法错误,并纠正。

#include <stdio.h>

void main()

{

char str[5][] = {“First”, “Second”, “Third”, “Forth”, “Fifth”};

//char str[5][10]=

char *cp[] = {str[4], str[3], str[2], str[1], str[0]};

//char cp[5][10] =

int i;

while(i<=5)

{

printf(“%c”, *(cp+i));

//printf(“%s”,cp[i]);

i++;

}

}

3.程序功能是将各个平方根值放入数组中。找出下面程序中的语法错误,并纠正。

#include <stdio.h>

//#include<math.h>

void main()

{

int max, a, i;

//int max = 255;

scanf(“%d%d”, max, a);

//scanf(“%d%d”,&max.&a);

double x[max];

for(i=0; i<max; i++)

x[i]=sqrt(a*i): //;

}

4.嵌入式多任务操作系统按照任务调度的方式可以分为哪两类?请简要描述它们的特点。

协作式任务调度

任务必须主动让出CPU,才能进行任务切换。

任务的执行时间不受限制,可以一直持有CPU直到自己完成或者主动让出。任务之间需要遵循一定的协议,如任务主动挂起,通过调用特定的函数或接口来进行任务切换。

优点:简单、低延迟、低开销,适用于相对简单的系统和对实时响应要求不高的应用场景。

抢占式任务调度

操作系统有任务调度权,根据策略对任务进行抢占,强制将CPU从一个任务切换到另一个任务。任务的执行时间受到时间片或优先级的限制,当时间片耗尽或有更高优先级的任务就绪时,当前任务会被暂停执行。

优点:能够保证高优先级任务的实时响应能力、提供较好的系统稳定性和可靠性,适用于对实时性要求较高的嵌入式系统。

5.嵌入式多任务操作系统任务间同步和和通信的方式有哪些?

信号量,互斥锁,事件标志,消息队列。

6.将下列10进制数转成一字节的16进制数格式。

  192     0xC0(1100 0000)       35    0x23(0010 0011)        255    FF        -12      F4     

二.选择题

7.下列能与case:匹配的类型有哪些( )

A.float

B.char *

C.char

D.int

8.以下代码的输出结果是( )

char var[10];

int test(char var[])//退化为指针类型char*,看操作系统32 4字节 64 8字节

{

return sizeof(var);

}

A.10

B.9

C.11

D.4

9.下面程序的输出结果是什么?( )

static int a[3][3] = {1,3,5,7,9,11,13,15,17}, y, x, *p = &a[2][2];

for(x=0; x<3; x++)

y+=*(p-4*x);   //*p - 4*0 = 17  *p - 4*1 = 9 *p - 4*2 = 1 17+1+9 =27

printf(“\n%d”, y);

A.45

B.33

C.17

D.27

10.下面哪些数组的声明是错误的?( )

A.int a[3];

B.int n = 10, a[n]; //数组大小是一个常量

C.int a[10+1] = {0};

D.int a[3] = {1,2,3,4};//数组大小和数组成员大小不匹配

11.请不使用库函数将字符串pStr1, pStr2组拼起来,如:pStr1=”123”, pStr2=”abc”, 组成123abc。

void Fuc(unsigned char *pStr1, unsigned char *pStr2)

{

    int len1 = 0, len2 = 0;

    unsigned char *result = NULL;



    // 计算字符串长度

    while (pStr1[len1] != '\0')

        len1++;

    while (pStr2[len2] != '\0')

        len2++;



    // 分配足够的内存来存储组拼后的字符串

    result = (unsigned char *)malloc((len1 + len2 + 1) * sizeof(unsigned char));



    // 将第一个字符串复制到结果字符串中

    for (int i = 0; i < len1; i++)

        result[i] = pStr1[i];



    // 将第二个字符串连接到结果字符串末尾

    for (int i = 0; i < len2; i++)

        result[len1 + i] = pStr2[i];



}

12.关于继承的说法正确的是( )

子类在继承父类时,会继承父类的所有属性和方法,包括公有(public)、保护(protected)和私有(private)的成员。通过继承,子类可以直接访问父类的非私有属性和方法,并且还可以在子类中添加自己的属性和方法。

A.子类将继承父类所有的属性和方法

B.子类将继承父类的非私有属性和方法

C.子类只继承父类public方法和属性

D.子类只继承父类的方法,而不继承属性

13.关于Qt,描述错误的是( )

A.基于面向对象的C++语言

B.提供了信号槽的对象通信机制

C.有可查询和可设计属性

D.不适用指针

14.Qt中使用的数据库是( )

A.sqlLite

B.Oracle

C.Sql Server

D.Db23

15.在Qt中使用QRadioButton时,要想实现分组需要用的组件是( )

A.QButttonGroup//QButtonGroup是一个特殊的组件,用于对一组按钮进行逻辑分组。

B.QRadioButtons//QRadioButtons 是描述单选按钮的术语,不是Qt中提供的特定组件。

C.QCheckBox//QCheckBox 是用于实现复选框的类

D.QRadioGroup//QRadioGroup 不是Qt的现有组件

16.int a = 3; a= a<<2, a =    12       

17.面向对象程序的主要特征:   封装         继承         多态        

18.在Qt中,有一个类是所有类的父类,这个类的名称是  QObject        

19.OSI模型中,最顶层是   物理层       ,其中运输层主要用到的协议有  TCP/UDP        

20.栈通常采用的两种存储结构:  顺序栈          链式栈        

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

萌新小电阻

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值