【嵌入式入门篇】嵌入式0基础沉浸式刷题篇1

article/2025/11/9 19:56:13

嵌入式-入门沉浸式刷题篇

  • 前言
  • Q1:嵌入式牛牛宏大小
  • Q2:嵌入式宏空间坐标数量
  • Q3:嵌入式牛牛疑惑的变量
  • Q4:嵌入式关键字const
  • Q5:嵌入式机器的大小端
  • Q6:嵌入式不用排序找数字
  • Q7:嵌入式结构体对齐
  • Q8:嵌入式会改变的指针
  • Q9:嵌入式连续申明的指针
  • Q10:嵌入式字符串所占空间
  • 总结

前言

  • 硬件工程师近年来也开始慢慢吃香,校招进大厂年薪总包不下30-40w的人数一大把!而且大厂的硬件人数并没有饱和!
    ** 本期是【嵌入式入门篇】硬件工程师从0到入门1|嵌入式基础入门篇,有不懂的地方可以评论进行讨论!**
  • 推荐给大家一款刷题、面试的神器,我也是用这一款神器进行学习Verilog硬件代码进行嵌入式入门的!
  • ~链接如下:刷题面试神器跳转链接
  • 也欢迎大家去牛客查看硬件工程师招聘职位的各类资料,并进行提前批投递面试!
  • 小白新手可以通过该神器进行日常的刷题、看大厂面经、学习计算机基础知识、与大牛面对面沟通~ 刷题的图片已经放在下面了~

在这里插入图片描述

Q1:嵌入式牛牛宏大小

问题描述:牛牛和牛妹比较谁的投掷的骰子数比较小,牛牛让牛妹先投,先投掷有一个优先权。只要牛妹的投掷的点数比牛牛小或者等于牛牛的点数,就认为牛妹胜利。能使用宏定义的方式比较牛妹和牛牛输入的两个点数的大小,返回较小的一个吗?(若两数相等,则返回牛妹的数字)

示例输入:1,2
示例输出:1

示例代码:

/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可* @param a int整型 牛妹的点数* @param b int整型 牛牛的点数* @return int整型** C语言声明定义全局变量请加上static,防止重复定义*/
#define min(a,b) (a<=b ? a:b)
int min_number(int a, int b ) {return min(a,b);
}

Q2:嵌入式宏空间坐标数量

问题描述:我们经常使用的点类Point结构体,其中包含两个int变量x与y,这是属于二维平面上点类。现假设我们的点类Point是属于多维空间中的点,其中包含多个相同类型(类型未知)的变量(第一个一定是x)表示坐标,你能否使用宏定义的方式,从使用空间的角度算出这个点类有多少个变量?

示例输入:(1,3)
示例输出:2

示例代码:

#define length(point) (sizeof(point) / sizeof(int))
int define_count(struct Point point ) {return length(point);
}//根据题目描述:
//我们的点类Point是属于多维空间中的点,其中包含多个相同类型(类型未知)的变量(第一个一定是x)表示坐标
//我们可以知道,结构体中的数据类型并不一定是int 因此做出以下修改,确保代码的普适性
//下面的代码中int已经被修改为了typeof(point.x)#define length(point) (sizeof(point) / sizeof(typeof(point.x)))
int define_count(struct Point point ) {return length(point);
}

Q3:嵌入式牛牛疑惑的变量

问题描述:在一个递归函数recursion中,有一个static修饰的变量m,它被初始化为0。现在该函数输入了一个数字n,牛牛在每次递归调用该函数的时候,都将m+n的值赋值给变量m,直到n为0时结束递归。于是牛牛就想知道这个m最后到底等于多少,你能帮牛牛实现这个递归函数,返回m的值吗?

示例输入:10
示例输出:55

示例代码:

int recursion(int n) {static int m = 0;m += n--;if (n)recursion(n);return m;
}

Q4:嵌入式关键字const

问题描述:牛牛正在学习C语言的const语言,它发现被const修饰变量不允许被修改,但是被const修饰的指针却不一定,想让你帮忙测试一下。现牛牛输入n,请你创建一个可以被修改的const指针变量p,将其初始化为n,请返回p++的结果。

示例输入:2
示例输出:6

示例代码:

 /*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可* @param n int整型 * @return int整型* C语言声明定义全局变量请加上static,防止重复定义*/
int const_test(int n ) {// write code hereconst int * p = n;return (p++, p);
}

总结:C语言中const修饰的变量的值并非100%不能被修改。在C语言中,const机制是通过编译器检查实现的,它标记const变量不能被直接修改,但并未限制const变量的地址的引用,而只要变量的地址存在被引用的可能,就说明该变量是可以通过指针被间接修改的。所以,只要我们能保证程序在编译过程不出错,那么在程序的运行过程中我们便可以通过指针间接修改该const修饰的变量的值。

Q5:嵌入式机器的大小端

问题描述:数据的低位保存在内存的高地址中,而数据的高位保存在内存的低地址中称之为大端模式(BE),而小端模式(LE)则反之。牛牛想知道牛客网的后台使用的是哪种模式,你能根据函数输入的数据判断吗?

示例输入:1 (大端模式返回数字1,小端模式返回数字0.)
示例输出:1

示例代码:

int judge(int n ) {// write code herechar *p = &n;n = 1;    return *p;
}

Q6:嵌入式不用排序找数字

问题描述:牛牛现在有1000个整数,每个数字都在1~200之间,数字随机排布。假设牛牛不允许你使用任何排序方法将这些整数有序化,你能快速找到从0开始的第450小的数字吗?(从小到大第450位)

示例代码:

/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可** * @param numbers int整型一维数组 * @param numbersLen int numbers数组长度* @return int整型** C语言声明定义全局变量请加上static,防止重复定义*/
int find(int* numbers, int numbersLen ) {int i,count[201] = {0},sum;for(i = 0;i<numbersLen;i++){count[numbers[i]]++;}sum = 0;for(i = 0;i<201;i++){sum+=count[i];if(sum>450) return i;}return 0;// write code here
}

Q7:嵌入式结构体对齐

问题描述:牛牛需要建立一个结构体Nowcoder,该结构体包括三个成员,其类型分别是int、double和char。假设牛牛想让这个结构体所占据的内存最小,请问你该怎么建立该结构体?(输入三个相应类型的变量用于初始化结构体)

示例输入:1,1.000,a
示例输出:13

示例代码:

/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可* @param n int整型 * @param d double浮点型 * @param c char字符型 * @return int整型** C语言声明定义全局变量请加上static,防止重复定义*/
#pragma pack(1)
struct Nowcoder{char c;int n;double d;
};
int smaller_space(int n, double d, char c ) {struct Nowcoder temp;temp.c = c;temp.n = n;temp.d = d;return sizeof(temp);
}

Q8:嵌入式会改变的指针

问题描述:牛牛在嵌入式中学习到了volatile的方法,想要考考你。请创建一个square函数,输入volatile类型的整型指针p,返回p指向值的平方。p的初始指向值为预置函数fun的输入值n。

示例输入:1
示例输出:1

示例代码:

/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可* @param n int整型 * @return int整型* C语言声明定义全局变量请加上static,防止重复定义*/
int square(volatile int *p)
{return (*p)*(*p);
}int fun(int n ) {// write code herereturn square(&n);
}

Q9:嵌入式连续申明的指针

问题描述:牛牛在学习C语言的预定义,他所知道的有方式有#define和typedef两种。请你选择一种方式声明int类型指针的同义字int_p,要求使用语句“ int_p p1, p2; ” 能够直接声明两个指针,将两个指针分别指向输入的数组首部m和n,并返回两个指针各自自增后的结果之和。

示例输入:[1,2,3],[4,5,6]
示例输出:7

示例代码:

/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可* @param m int整型一维数组 * @param mLen int m数组长度* @param n int整型一维数组 * @param nLen int n数组长度* @return int整型** C语言声明定义全局变量请加上static,防止重复定义*/
typedef int*  int_p;
int fun(int* m, int mLen, int* n, int nLen ) {// write code hereint_p p1,p2;p1=m;p2=n;return *(p1+1) + *(p2+1);
}

Q10:嵌入式字符串所占空间

问题描述:牛牛在学习字符串的时候,发现统计字符串所占据空间有多种方式,比如关键字sizeof与strlen()函数,牛牛想让你验证一下这两种方式的结果是不是一致的,请你根据输入字符串返回两种方式的结果是否相等的bool值。

示例输入:“Nowcoder”
示例输出:true

示例代码:

/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可* @param str string字符串 * @return bool布尔型** C语言声明定义全局变量请加上static,防止重复定义*/
bool fun(char* str ) {// write code herereturn ((strlen(str)==sizeof(str))?true:false);
}

总结

点击链接进行跳转注册,开始你的保姆级刷题之路吧!刷题打怪码神之路

另外这里不仅仅可以刷题,你想要的这里都会有,十分适合小白和初学者入门学习~
1、算法篇(398题):面试必刷100题、算法入门、面试高频榜单
2、数据结构篇(300题):都是非常经典的链表、树、堆、栈、队列、动态规划等
3、语言篇(500题):C/C++、java、python入门算法练习
4、SQL篇(82题):快速入门、SQL必知必会、SQL进阶挑战、面试真题
5、大厂笔试真题:字节跳动、美团、百度、腾讯…掌握经验不在惧怕面试!

在这里插入图片描述


http://chatgpt.dhexx.cn/article/EaI684lm.shtml

相关文章

嵌入式入门应该先学习STM32还是先学习51

今天在粉丝群里一位嵌入式初学者问了一个这样的问题&#xff1a;学嵌入式应该先学什么&#xff1f;&#xff08;文末有粉丝福利&#xff09; 后面各位大佬也是对该问题发表了自己的观点&#xff0c;大多数人都认为应该先学51&#xff0c;因为51单片机直接对寄存器操作&#xf…

再说嵌入式入门

我之前写过几篇嵌入式入门的文章 不过我的读者还是觉得不够过瘾&#xff0c;我觉得还是要着重说一下嵌入式软件应该重点学习什么&#xff0c;guoqing收假最后一天写文。 精通C语言 精通C语言 精通C语言 C语言对于嵌入式软件来说就是他的命脉&#xff0c;不懂C语言的人根本就…

嵌入式开发入门基础篇

今天在逛CSDN的时候发现一篇嵌入式开发基础篇&#xff0c;看完感觉写的非常好&#xff0c;特拿过来跟大家分享一下。原篇地址&#xff1a;https://blog.csdn.net/qq_61672347/article/details/126760788。 文章目录 前言一、STM32的数据类型二、C语言中常用的关键字1、const关键…

嵌入式开发(一):嵌入式开发新手入门

系列文章&#xff1a; 嵌入式开发&#xff08;一&#xff09;&#xff1a;嵌入式开发新手入门 嵌入式开发&#xff08;二&#xff09;&#xff1a;开发板配置&#xff08;自用&#xff09; 嵌入式开发&#xff08;三&#xff09;&#xff1a;海思Hi3559a交叉编译live555嵌入式…

嵌入式入门基础知识

文章目录 前言嵌入式基本知识ARM的理解ARM是一家公司一类芯片或产品的统称一项技术的名称&#xff0c;即采用RISC处理器体系架构ARM和intel的区分ARM和STM32的关系 处理器的基本概念MCUMPUDSPFPGA总结 ARM开发MCU开发和MPU开发的区别开源硬件 Arduino 和 Raspberry Pi总结 总结…

宽度学习系统BLS推广到在线学习的论文阅读记录

BELS: A BROAD ENSEMBLE LEARNING SYSTEM FOR DATA STREAM CLASSIFICATION 摘要&#xff1a;这篇文章主要是将BLS推广到适用于在线学习的邻域&#xff0c;提出了其如何进行适合在线学习的增量更新&#xff0c;以及面对概念漂移的适应 所提出的算法BELS 稀疏特征映射的更新 …

超越EfficientNet!MutualNet:一种自适应相互学习网络宽度和分辨率的网络

点击上方&#xff0c;选择星标或置顶&#xff0c;不定期资源大放送&#xff01; 阅读大概需要15分钟 Follow小博主&#xff0c;每天更新前沿干货 【导读】今天给大家介绍一篇 ECCV 2020 Oral论文 &#xff0c;该论文强调了同时考虑网络宽度和输入分辨率对有效网络设计的重要性。…

【AI不惑境】网络的宽度如何影响深度学习模型的性能?

大家好&#xff0c;这是专栏《AI不惑境》的第三篇文章&#xff0c;讲述模型宽度与模型性能的关系。 进入到不惑境界&#xff0c;就是向高手迈进的开始了&#xff0c;在这个境界需要自己独立思考。如果说学习是一个从模仿&#xff0c;到追随&#xff0c;到创造的过程&#xff0c…

CSS:宽高自适应详解

宽度自适应的应用 1.属性:width 2.属性值:px/% 3.宽度自适应的特点 - HTML,BODY表示浏览器,默认是块级元素,宽度是100% - 当块级元素不设置宽度或者设置100%的时候,宽度会沾满全屏(通栏效果) - 子级是块级元素,不设置宽度的时候会和父级等…

陈俊龙:从深度强化学习到宽度强化学习—结构,算法,机遇及挑战

来源&#xff1a;AI科技评论 摘要&#xff1a;如何赋予机器自主学习的能力&#xff0c;一直是人工智能领域的研究热点。 强化学习与宽度学习 如何赋予机器自主学习的能力&#xff0c;一直是人工智能领域的研究热点。在越来越多的复杂现实场景任务中&#xff0c;需要利用深度学习…

网络的宽度对深度学习模型的性能影响

目录 1 为什么需要足够的宽度 2&#xff0c;经典网络的第一层的宽度 3&#xff0c;宽度对模型性能的影响 4 如何更加有效地利用宽度 4.1 提高每一层通道的利用率 4.2 用其他通道的信息来补偿 5 经典网络模型宽度设计方法 5.1 采用多分支网络结构设计 1&#xff09;ResN…

深度学习笔记(七):网络宽度(卷积核个数)的一些想法

文章目录 一、前言二、网络深度的意义三、宽度的意义四、 网络宽度设计4.1 网络宽度的下限在哪&#xff1f;4.2 网络宽度对模型性能的影响4.3 网络宽度和深度谁更加重要&#xff1f; 五、如何加有效地利用宽度&#xff1f;5.1 提高每一层通道的利用率5.2 用其他通道的信息来补偿…

宽度 深度学习 特点对比

宽度 & 深度学习 特点对比 推荐系统模型介绍实验过程与实验结果实验总结 为了提高神经网络的性能&#xff0c;是应该增加宽度呢&#xff1f;还是应该增加深度呢&#xff1f;增加宽度和增加深度各有什么样的效果呢&#xff1f; 本文对论文《Wide & Deep Learning for Re…

为什么是“深度”学习而不是宽度?

为什么是深度而不是宽度&#xff1f; 先说说我个人的理解&#xff0c;如下图所示&#xff0c;圆圈表示神经元&#xff0c;有两种方式。第一种&#xff0c;只有一层神经层&#xff0c;有8个神经元&#xff1b;第二种方式&#xff0c;有两层神经层&#xff0c;分别有2个和4个神经…

宽度学习系统:一种不需要深度结构的高效增量学习系统

宽度学习系统&#xff1a;一种不需要深度结构的高效增量学习系统 本文是对陈俊龙教授团队“Broad Learning System: An Effective and Efficient Incremental Learning System Without the Need for Deep Architecture”的中文综述&#xff0c;原文将在IEEE Transactions on Neu…

网络的宽度如何影响深度学习模型的性能?

大家好&#xff0c;这是专栏《AI不惑境》的第三篇文章&#xff0c;讲述模型宽度与模型性能的关系。 进入到不惑境界&#xff0c;就是向高手迈进的开始了&#xff0c;在这个境界需要自己独立思考。如果说学习是一个从模仿&#xff0c;到追随&#xff0c;到创造的过程&#xff0…

宽度学习代码的一些问题

最近在拜读陈院士的宽度学习论文&#xff0c;受益匪浅&#xff0c;在此先感谢陈院士团队的开源代码&#xff01; 在复现代码的过程中&#xff0c;发现了一些小问题&#xff0c;在此记录&#xff0c;方便自己日后翻阅。 此博客仅代表个人观点&#xff0c;姑且算作个人读书笔记…

DeepLearning | Broad Learning System 宽度学习系统 : 高效增量式浅层神经网络

Broad Learning System (BLS&#xff0c;宽度学习系统)是澳门大学的陈俊龙教授在2017年TNNLS上基于随机向量函数链接神经网络(RVFLNN)和单层前馈神经网络(SLFN)提出的一种单层增量式神经网络。这个模型相比于传统的深层网络模型&#xff0c;它在保证一定精度的同时&#xff0c;…

宽度学习系统(BLS)的原理、变体形式及当前应用(随时更新......)

ABSTRACT 近年来深度学习迅猛在各个研究领域发展发展&#xff0c;新的模型结构不断涌现&#xff0c;且有层数逐渐加深的趋势。然而深度模型往往有数量过于庞大的待优化参数&#xff0c;通常需要耗费大量的时间和机器资源来进行优化&#xff0c;而且不能根据需求及输入的变化进行…

为什么要做深度学习而不是宽度学习?

点击此处返回总目录 前面在深度学习介绍的最后有留下一个疑问。我们为什么要deep learning。 我们说&#xff0c;变深了&#xff0c;参数增多&#xff0c;model变复杂&#xff0c;performance变好&#xff0c;是很正常的。 所以&#xff0c;真…