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

2023-05-16

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

  • 前言
  • 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 here
    const 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 here
    char *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 here
    return 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 here
    int_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 here
    return ((strlen(str)==sizeof(str))?true:false);
}

总结

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

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

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【嵌入式入门篇】嵌入式0基础沉浸式刷题篇1 的相关文章

  • JAVA- 浅谈==与equal()的区别

    目录 gt 基础 gt 基本数据类型 gt 引用数据类型 gt Java内存 gt 区别 61 61 和equals gt 61 61 gt equals gt 总结 gt 基础 要想区分这两者 xff0c 我们得先明白什么是基本数据类型和
  • Ubuntu20.04+RealSense D455

    Ubuntu20 04装RealSense D455的驱动 Ubuntu20 04装RealSense D455的驱动 官网链接和个人链接 官网链接和个人链接 前言 xff1a 这些是我ubuntu20 04安装时候所找到的方法 xff0c
  • 【Java开发】 Mybatis-Plus 04:条件构造器-wrapper

    条件构造器算是Mybatis Plus中很重要的知识点了 xff0c 个人觉得它类似于Service的链式查询 xff0c 将诸多条件集中在一个wrapper中 xff0c 以达到高效便捷的目的 本文也是对01 02 03 内容的整合归纳
  • PrusaSlicer2.5中文说明1(新手篇)

    下载PrusaSlicer 稳定版本 PrusaSlicer的最新稳定版本始终可以在DRIVERS amp APPS包中找到 xff0c 它适用于Windows Mac OS X和Linux 该软件包还包括测试对象和打印机驱动程序 xff0
  • ROS机器人开发学习记录2——通过opencv读入本地图像并显示

    使用opencv和ros实现彩色图的读入和显示 为了实现该功能 xff0c 我使用了以下主要函数 xff0c 先对这些函数的功能做简要记录 xff1a xff08 1 xff09 Mat obj 61 imread 本地图像路径 实例 F
  • python中函数的参数分类

    python中函数的参数 形参 xff1a 定义函数时代表函数的形式参数 实参 xff1a 调用函数时传入的实际参数 列如 xff1a def f x y x y形参 print x y f 1 2 1 2 实参 定义函数时 xff0c 形
  • 信号量(sem)控制访问有限共享资源的线程数

    信号量 sem t就是个资源计数器 xff0c 用于控制访问有限共享资源的线程数 span class token macro property span class token directive keyword include span
  • 不需要各种代码的MATLAB语法高亮的设置,简单实用

    文章目录 前言一 代码高亮是什么 xff1f 二 设置步骤1 点击主页再点击预设2 点击MATLAB再点击颜色别着急因为是窗口太小哦所以要放大取消使用系统颜色 xff0c 然后自己选择文本颜色和背景颜色 总结 前言 这次主要想说说MATLA
  • 优先级队列(堆)

    优先级队列 1 什么是优先级队列2 什么时候用它什么时候不用它3 它的具体用法记得import两个库 xff1a 3 1定义3 2输入输出 1 什么是优先级队列 优先级队列就是用库内已有的类 xff0c 这个类名字是队列 xff0c 其实不
  • 2.1 关系模型的基本概念

    文章目录 2 1 1 基本术语定义2 1 用二维表格表示实体集 xff0c 用关键码表示实体间联系的数据模型称为关系模型 xff08 relational Model xff09 在关系模型中 xff0c 关键码 key 简称键 由一个或多
  • 2.2 关系代数的五个基本操作

    文章目录 前言2 2 关系代数2 2 1 关系代数的五个基本操作 1 投影 xff08 Projection xff09 2 选择 xff08 Selection xff09 选择与投影组合 3 xff09 并 xff08 Union xf
  • web的一些介绍

    文章目录 前言一 什么是Web xff1f 二 基本Web服务结构软件编程体系C S xff08 Client Server xff09 软件体系结构B S xff08 Brower Server xff09 软件体系结构C S结构与B S
  • .net技术第一章

    文章目录 NETC C Sharp 的特点C 的应用范围 NET Framework1 2 创建简单的C 程序结构和书写规则类型的声明和使用类型的声明和使用命名空间使用方法命名空间举例 注释Main方法命令行参数Main返回值 控制台输入和
  • .net----委托和事件

    委托和事件 委托声明实例化调用将类型安全的函数指针 方法 作为其他方法的参数进行传递 xff0c 从而实现函数回调方法委托 xff1a 匿名方法委托 多播委托委托 xff1a 委托的异步调用委托 xff1a 委托的兼容性 事件事件实际上是委
  • .net-----语言集成查询LINQ

    语言集成查询LINQ 前言相关语言要素初始值设定项匿名类型相关语言要素Lambda表达式扩展方法 LINQ的概念和基本操作集成语言查询LINQLINQ查询操作 标准查询运算符数据排序数据筛选数据投影数据分组联接运算数据分区限定运算聚合运算集
  • .net-----Windows 窗体应用程序包括控件,对话框,多重窗体,绘制图形,菜单和工具栏

    目录 前言Windows窗体应用程序概述 xff1b 窗体和大部分控件常用的事件创建Windows窗体应用程序使用Visual Studio集成开发环境实现Hello World程序 使用常用Windows窗体控件 xff1b Label
  • python字符串内建函数

    在八进制数前面显示零 0 xff0c 在十六进制前面显示 0x 或者 0X 取决于用的是 x 还是 X 0 显示的数字前面填充 0 而不是默认的空格 输出一个单一的 var 映射变量 字典参数 m n m 是显示的最小总宽度 n 是小数点后
  • 物理层-计算机网络速成

    物理层 1 物理层的基本概念1 1四大特性机械特性电气特性功能特性过程特性 1 2两种信号1 3 调制编码调制编码区别 1 4 传输介质双绞线光纤同轴电缆 xff1a 淘汰 xff0c 有线电话无线 xff1a IEEE802 11 1 5
  • 考研第一天,汤家凤基础班,连续与极限复习笔记

    函数连续极限 性质保号性证明极值点 xff1a 夹逼准则二项式展开根号下 xff0c 大于一 xff0c 小于一的讨论直接放缩求和分子分母齐次 xff0c 且分母大一次 xff0c 用积分 单调有界存在极限几个重要的切线放缩证明有界 xff
  • Ubuntu双系统安装教程

    安装Ubuntu双系统 1 下载Ubuntu镜像源文件2 下载制作U盘启动工具3 磁盘分区4 安装Ubuntu 1 下载Ubuntu镜像源文件 18 04 6链接 xff1a http mirrors aliyun com ubuntu r

随机推荐