当前位置: 首页 > news >正文

嵌入式面试题练习 - 2024/11/15

欢迎找我进行职业规划,超值的自我投资 -> 嵌入式软件工程师一对一指导


1.设有定义char *p[]={"Shanghai","Beijing","Honkong"};则结果为j字符的表达式是()

A *p[1] +3

B *(p[1] +3)

C *(p[3] +1)

D p[3] [1]

解析:

p 是一个指针数组,其中每个元素都指向一个字符串字面量。

A. *p[1] + 3
这个表达式首先解引用 p[1](即指向 "Beijing" 的指针),得到 'B' 字符,然后将其 ASCII 值加 3,结果是 'E' 的 ASCII 值,而不是 'j'。

B. *(p[1] + 3)
这个表达式首先计算 p[1] + 3,它是指向 "Beijing" 字符串中第四个字符(从0开始计数)的指针(即指向 'j' 的指针),然后通过解引用得到 'j' 字符。这是正确的表达式。

C. *(p[3] + 1)
这个表达式试图访问 p[3],但数组 p 只有三个元素(索引为 0, 1, 2),所以 p[3] 是未定义的,这将导致未定义行为。(下角标错误)

D. p[3][1]
同样,这个表达式也试图访问 p[3],这是未定义的,因此这个表达式也是错误的。

综上所述,正确答案是 B,即 *(p[1] + 3),这个表达式将返回 'j' 字符。

2.有以下程序, 程序运行后的输出结果是( )

#include "stdio.h"
void main() {    int a[5] = {1, 2, 3, 4, 5}, b[5] = {0, 2, 1, 3, 0}, i, s = 0;    for(i=0; i < 5; i++) s = s + a[b[i]];    printf("%d\n", s);}

解析:

首先,我们有两个数组 a 和 b

int a[5] = {1, 2, 3, 4, 5};int b[5] = {0, 2, 1, 3, 0};

数组 a 包含值 {1, 2, 3, 4, 5},数组 b 包含值 {0, 2, 1, 3, 0}

接下来,我们有一个循环,它遍历数组 b 的每个元素,并使用这些元素作为数组 a 的索引来累加值:

​​​​​​​

for(i=0; i < 5; i++)     s = s + a[b[i]];

让我们逐步执行这个循环:

  1. 当 i = 0 时,b[0] = 0,所以 a[b[0]] = a[0] = 1。因此,s = s + 1s 变为 1

  2. 当 i = 1 时,b[1] = 2,所以 a[b[1]] = a[2] = 3。因此,s = s + 3s 变为 4

  3. 当 i = 2 时,b[2] = 1,所以 a[b[2]] = a[1] = 2。因此,s = s + 2s 变为 6

  4. 当 i = 3 时,b[3] = 3,所以 a[b[3]] = a[3] = 4。因此,s = s + 4s 变为 10

  5. 当 i = 4 时,b[4] = 0,所以 a[b[4]] = a[0] = 1。因此,s = s + 1s 变为 11

最后,程序输出 s 的值是 11

3.在函数调用过程中,如果函数funA调用了函数funB,函数funB又调用了函数funA,则()

A 称为函数的直接递归调用

B 称为函数的间接递归调用

C 称为函数的循环调用

D C语言中不允许这样的递归调用

解析:

  1. 直接递归调用:指的是一个函数在其执行过程中直接调用自身。

  2. 间接递归调用:涉及两个或更多函数,其中一个函数调用另一个函数,而那个函数又直接或间接地调用回原来的函数。

  3. 循环调用:通常指的是一系列函数相互调用,形成一个闭环,但没有明确的递归结构(即不是函数自己调用自己)。

题目中的情况:函数funA调用了函数funB,而函数funB又调用了函数funA

  • 这不是直接递归调用,因为直接递归调用要求函数自己调用自己,而这里是两个函数相互调用。

  • 这是间接递归调用的一个例子,因为funAfunB通过彼此调用形成了一个间接的递归链。

  • 虽然函数间相互调用形成了一个闭环,但这不是传统意义上的循环调用,因为循环调用通常不涉及递归的概念。

  • C语言中允许这样的递归调用,只要递归不是无限的(即必须有终止条件来防止栈溢出)。

综上所述,这种情况最符合间接递归调用的定义。

因此,正确答案是 B 称为函数的间接递归调用。

4.执行以下语句,输出结果为()​​​​​​​

#include <stdio.h>
int main( ) {  char *p1 = "hello";  char *p2 = "world";  char *p3 = "a piece of cake";  char *str[] = {p1, p2, p3};  printf("%c", *(str[0] + 1));}

解析;

题目定义了三个字符串常量 p1p2, 和 p3,然后创建了一个字符指针数组 str,该数组包含这三个字符串的地址。接下来,我们使用 printf 函数来打印 str[0](即 p1 指向的字符串 "hello")的第二个字符。

char *p1 = "hello";  // p1 指向字符串 "hello"char *p2 = "world";  // p2 指向字符串 "world"char *p3 = "a piece of cake";  // p3 指向字符串 "a piece of cake"
char *str[] = {p1, p2, p3};  // str 是一个字符指针数组,包含 p1, p2, 和 p3 的地址
printf("%c", *(str[0] + 1));  // 打印 str[0](即 p1)指向的字符串的第二个字符

str[0] 是 p1,它指向字符串 "hello"str[0] + 1 是将指针 p1 向前移动一个字符位置,因此它现在指向 "hello" 中的 'e'

*(str[0] + 1) 解引用这个新的指针位置,得到字符 'e'

因此,printf("%c", *(str[0] + 1)); 会打印字符 'e'

所以,程序的输出结果是:e

未完待续,持续更新!

以防后边找不到可以点赞收藏下!

欢迎找我进行职业规划,超值的自我投资 -> 嵌入式软件工程师一对一指导

相关文章:

嵌入式面试题练习 - 2024/11/15

欢迎找我进行职业规划&#xff0c;超值的自我投资 -> 嵌入式软件工程师一对一指导 1.设有定义char *p[]{"Shanghai","Beijing","Honkong"};则结果为j字符的表达式是&#xff08;&#xff09; A *p[1] 3 B *(p[1] 3) C *(p[3] 1) D p[3] […...

分析http话术异常挂断原因

用户反馈在与机器人通话时&#xff0c;自己明明有说话&#xff0c;但是通话还是被挂断了&#xff0c;想知道原因。 分析日志 我们根据用户提供的freeswitch日志分析&#xff1a;发现是因为超时导致话术执行hangup动作&#xff0c;结束了通话。 从这一行向上分析日志&#xff…...

云岚到家 秒杀抢购

目录 秒杀抢购业务特点 常用技术方案 抢券 抢券界面 进行抢券 我的优惠券列表 活动查询 系统设计 活动查询分析 活动查询界面显示了哪些数据&#xff1f; 面向高并发如何提高活动查询性能&#xff1f; 如何保证缓存一致性&#xff1f; 数据流 Redis数据结构设计 如…...

【WPF】Prism库学习(一)

Prism介绍 1. Prism框架概述&#xff1a; Prism是一个用于构建松耦合、可维护和可测试的XAML应用程序的框架。它支持WPF、.NET MAUI、Uno Platform和Xamarin Forms等多个平台。对于每个平台&#xff0c;Prism都有单独的发布版本&#xff0c;并且它们在不同的时间线上独立开发。…...

0 -vscode搭建python环境教程参考(windows)

引用一篇非常详细的vscode搭建python环境教程 链接&#xff1a;vscode安装以及配置Python基本环境 以下是VSCode和PyCharm的对比 个人更建议使用VSCode Visual Studio Code (VSCode) Visual Studio Code 是由微软开发的一款免费、开源的轻量级代码编辑器。它支持多种编程语…...

Uniapp 引入 Android aar 包 和 Android 离线打包

需求&#xff1a; 原生安卓 apk 要求嵌入到 uniapp 中&#xff0c;并通过 uniapp 前端调起 app 的相关组件。 下面手把手教你&#xff0c;从 apk 到 aar&#xff0c;以及打包冲突到如何运行&#xff0c;期间我所遇到的问题都会 一 一 进行说明&#xff0c;相关版本以我文章内为…...

10款高效音频剪辑工具,让声音编辑更上一层楼。

音频剪辑在音频&#xff0c;视频&#xff0c;广告制作&#xff0c;游戏开发&#xff0c;广播等领域中都有广泛的应用。通过音频剪辑&#xff0c;创作者可以通将不同的音频片段进行剪切、拼接、混音等操作&#xff0c;创作出风格各异的音乐作品。如果你也正在为音频创作而努力的…...

Javascript——设计模式(一)

Javascript常见设计模式-CSDN博客 设计模式专栏内容总结-CSDN博客 C#编程思想——设计模式-CSDN博客 设计模式概述及其作用 设计模式&#xff08;Design Pattern&#xff09;是一套被反复使用、多数人知晓的、经过分类编目的代码设计经验的总结。使用设计模式的主要目的是为…...

Hybird和WebView

在移动端Hybrid开发模式下&#xff0c;iOS和Android应用都可以通过一种共享代码的方式&#xff0c;利用Web技术&#xff08;HTML、CSS、JavaScript&#xff09;和原生应用的功能进行开发。这种方式的主要优点是减少了开发成本&#xff0c;因为大部分代码可以共享&#xff0c;同…...

c++实现中缀表达式 转换为后缀表达式

使用栈来计算后缀表达式的值&#xff1a; 9(3 - 1)*310/2; 后缀表达式&#xff1a;所有的符号都是在运算数字的后面出现&#xff1a; 9 3 1 – 3 * 10 2 / 规则: 中缀表达式转后缀表达式: 1.从左到右遍历中缀表达式的每个数字和符号&#xff0c;若是数字就打印同时入栈数…...

Cisco FMC重置SmartLicense到Evaluatin mode步骤

1 科普&#xff1a; what is FMC full name is Firepower Management Center, 是思科FirePower防火墙的统一管理平台. 能管理ASA不&#xff1f; no&#xff0c;只能管理FTD模式的墙。这里的FTD包括物理机firepower系列运行的FTD&#xff0c;以及FTDv&#xff08;虚拟化版本&a…...

多表查询综合归纳

目录 1. 多表关系 1.1 一对多&#xff08;多对一&#xff09; 1.2 多对多 1.3 一对一 2. 多表查询概述 2.1 熟悉表 2.2 笛卡尔积 2.3 消除笛卡尔积 2.4 多表查询分类 3. 内连接 3.1 隐式内连接 3.2 显式内连接 4. 外连接 4.1 左外连接 4.2 右外连接 5. 自连接 …...

【5.线性表-链式表示-王道课后算法题】

王道数据结构-第二章-链式表示算法题 1.在带头结点的单链表L中&#xff0c;删除所有值为x的结点&#xff0c;并释放其空间&#xff0c;假设值为x的结点不唯一&#xff0c;试编写算法以实现上述操作。2. 试编写在带头结点的单链表L中删除一个最小值结点的高效算法(假设该结点唯一…...

存储过程及练习

1.存储过程 &#x1f4d6;什么是存储过程&#xff1f; 存储过程和函数是事先经过编译并存储在数据库中的一段sql语句集合&#xff0c;调用存储过程函数可以简 化应用开发人员的很多工作&#xff0c;减少数据在数据库和应用服务器之间的传输&#xff0c;对于提高数据处理的 效率…...

【在Linux世界中追寻伟大的One Piece】多路转接epoll

目录 1 -> I/O多路转接之poll 1.1 -> poll函数接口 1.2 -> poll的优点 1.3 -> poll的缺点 1.4 -> poll示例 1.4.1 -> 使用poll监控标准输入 2 -> I/O多路转接之epoll 2.1 -> 初识epoll 2.2 -> epoll的相关系统调用 2.2.1 -> epoll_cre…...

设计模式-参考的雷丰阳老师直播课

一般开发中使用的模式为模版模式策略模式组合&#xff0c;模版用来定义骨架&#xff0c;策略用来实现细节。 模版模式 策略模式 与模版模式特别像&#xff0c;模版模式会定义好步骤定义好框架&#xff0c;策略模式定义小细节 入口类 使用模版模式策略模式开发支付 以上使用…...

Python +Pyqt5 简单视频爬取学习(一)

文章目录 前言 一、演示 二、查找网页视频流的索引文件 三、分析视频流的url和视频流索引文件的差异性 四、判断视频数据是否需要转化为ts 五、判断视频是否被加密&#xff0c;如若被加密&#xff0c;需要先解密 六、合并所有的ts视频&#xff0c;以MP4模式输出完整视频 总结 前…...

Python Requests模块全面教程

Python Requests模块全面教程 在现代软件开发中&#xff0c;网络请求是一个不可或缺的部分。无论是获取网页数据、调用API接口&#xff0c;还是进行数据交互&#xff0c;都会涉及到HTTP请求。Python的Requests模块是一个非常强大的库&#xff0c;能够让我们轻松地发送HTTP请求…...

PyQt入门指南六十 与Python其他库的集成方法

PyQt是一个强大的GUI库&#xff0c;它可以与Python的其他库无缝集成&#xff0c;以实现更复杂的功能。以下是一些常见的集成方法和示例&#xff1a; 1. NumPy NumPy是Python中用于科学计算的基础库。您可以在PyQt应用程序中使用NumPy来处理数据和进行数值计算。 import sys …...

Android15之解决:Dex checksum does not match for dex:framework.jar问题(二百三十九)

简介&#xff1a; CSDN博客专家、《Android系统多媒体进阶实战》一书作者 新书发布&#xff1a;《Android系统多媒体进阶实战》&#x1f680; 优质专栏&#xff1a; Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a; 多媒体系统工程师系列【…...

基于算法竞赛的c++编程(28)结构体的进阶应用

结构体的嵌套与复杂数据组织 在C中&#xff0c;结构体可以嵌套使用&#xff0c;形成更复杂的数据结构。例如&#xff0c;可以通过嵌套结构体描述多层级数据关系&#xff1a; struct Address {string city;string street;int zipCode; };struct Employee {string name;int id;…...

第19节 Node.js Express 框架

Express 是一个为Node.js设计的web开发框架&#xff0c;它基于nodejs平台。 Express 简介 Express是一个简洁而灵活的node.js Web应用框架, 提供了一系列强大特性帮助你创建各种Web应用&#xff0c;和丰富的HTTP工具。 使用Express可以快速地搭建一个完整功能的网站。 Expre…...

盘古信息PCB行业解决方案:以全域场景重构,激活智造新未来

一、破局&#xff1a;PCB行业的时代之问 在数字经济蓬勃发展的浪潮中&#xff0c;PCB&#xff08;印制电路板&#xff09;作为 “电子产品之母”&#xff0c;其重要性愈发凸显。随着 5G、人工智能等新兴技术的加速渗透&#xff0c;PCB行业面临着前所未有的挑战与机遇。产品迭代…...

Vue3 + Element Plus + TypeScript中el-transfer穿梭框组件使用详解及示例

使用详解 Element Plus 的 el-transfer 组件是一个强大的穿梭框组件&#xff0c;常用于在两个集合之间进行数据转移&#xff0c;如权限分配、数据选择等场景。下面我将详细介绍其用法并提供一个完整示例。 核心特性与用法 基本属性 v-model&#xff1a;绑定右侧列表的值&…...

论文浅尝 | 基于判别指令微调生成式大语言模型的知识图谱补全方法(ISWC2024)

笔记整理&#xff1a;刘治强&#xff0c;浙江大学硕士生&#xff0c;研究方向为知识图谱表示学习&#xff0c;大语言模型 论文链接&#xff1a;http://arxiv.org/abs/2407.16127 发表会议&#xff1a;ISWC 2024 1. 动机 传统的知识图谱补全&#xff08;KGC&#xff09;模型通过…...

Robots.txt 文件

什么是robots.txt&#xff1f; robots.txt 是一个位于网站根目录下的文本文件&#xff08;如&#xff1a;https://example.com/robots.txt&#xff09;&#xff0c;它用于指导网络爬虫&#xff08;如搜索引擎的蜘蛛程序&#xff09;如何抓取该网站的内容。这个文件遵循 Robots…...

微信小程序云开发平台MySQL的连接方式

注&#xff1a;微信小程序云开发平台指的是腾讯云开发 先给结论&#xff1a;微信小程序云开发平台的MySQL&#xff0c;无法通过获取数据库连接信息的方式进行连接&#xff0c;连接只能通过云开发的SDK连接&#xff0c;具体要参考官方文档&#xff1a; 为什么&#xff1f; 因为…...

Typeerror: cannot read properties of undefined (reading ‘XXX‘)

最近需要在离线机器上运行软件&#xff0c;所以得把软件用docker打包起来&#xff0c;大部分功能都没问题&#xff0c;出了一个奇怪的事情。同样的代码&#xff0c;在本机上用vscode可以运行起来&#xff0c;但是打包之后在docker里出现了问题。使用的是dialog组件&#xff0c;…...

重启Eureka集群中的节点,对已经注册的服务有什么影响

先看答案&#xff0c;如果正确地操作&#xff0c;重启Eureka集群中的节点&#xff0c;对已经注册的服务影响非常小&#xff0c;甚至可以做到无感知。 但如果操作不当&#xff0c;可能会引发短暂的服务发现问题。 下面我们从Eureka的核心工作原理来详细分析这个问题。 Eureka的…...

计算机基础知识解析:从应用到架构的全面拆解

目录 前言 1、 计算机的应用领域&#xff1a;无处不在的数字助手 2、 计算机的进化史&#xff1a;从算盘到量子计算 3、计算机的分类&#xff1a;不止 “台式机和笔记本” 4、计算机的组件&#xff1a;硬件与软件的协同 4.1 硬件&#xff1a;五大核心部件 4.2 软件&#…...