1.[问答题]已知单片机内置10位精度的ADC,单片机工作电压1.8V,ADC基准电压1.8V,请计算ADC采样的电压最小分辨率是多少?请写出计算过程和结果;如果单片机ADC输入口电压为0.9V,则采样得到的值是多少?请写出计算过程和结果。
2.[问答题],写出下面的结果:
char str1[] = "abc";
char str2[] = "abc";
const char* str3 = "abc";
const char* str4 = "abc";
const char* str5 = "abc";
const char* str6 = "abc";
char* str7 = "abc";
char* str8 = "abc";
cout << (str1 == str2) << endl; // 0 (false)
cout << (str3 == str4) << endl; // 可能是1 (true),也可能0 (false),依赖于编译器实现
cout << (str5 == str6) << endl; // 同上,可能是1 (true),也可能0 (false),依赖于编译器实现
cout << (str7 == str8) << endl; // 同上,可能是1 (true),也可能0 (false),依赖于编译器实现
在C++中,字符串字面量(如 “abc”)实际上是一个指向常量字符数组的指针。当多个相同的字符串字面量出现在同一个程序中时,编译器可能会选择将它们存储在内存中的同一位置,以节省空间。这意味着,对于这些字符串字面量,比较它们的地址可能会返回true,即使它们是在不同的地方声明的。
但是,对于使用字符数组(如 char str1[] = “abc”;)定义的字符串,每个数组都会在内存中分配独立的空间,即使它们包含相同的字符序列。因此,它们的地址总是不同的。
解释如下:
对于 str1 和 str2,尽管它们初始化了相同的字符串,但它们是两个独立的数组,因此它们的地址不同,输出为 0(即 false)。
对于 str3, str4, str5, str6, str7, 和 str8,它们都是指向字符串字面量的指针。理论上讲,这些指针可能指向同一个内存地址,特别是当它们指向相同的字符串字面量时。然而,这完全取决于编译器的具体实现。某些编译器可能会优化,使得所有指向相同字符串字面量的指针都指向同一个内存地址,而其他编译器则可能不会这样做。因此,对于这些指针的相等性检查,结果可能是 1(即 true)也可能是 0(即 false),具体要看编译器的行为。
3.根据你所学的计算机体系架构知识,请简还搭建一个嵌入式系统的硬件框图和软件程序流程图,并说明每个部分在某中的角色定位和作用。
4. 给出下面的答案:
typedef struct AA
{
int b1 : 5;
int b2 : 2;
}AA;
int main() {
AA aa;
char cc[100];
strcpy(cc,"123456789abederehi jk1mmoparstuywxyz");
memcpy(&aa,cc,sizeof(AA));
cout << "aa.b1=" << aa.b1 << endl;
cout << "aa.b2=" << aa.b2 << endl;
system("pause");
return 0;
}.
5.[问答题〕什么是野指针?产生的原因?
6.[问答题]<key.value>结构是常用的数据储存结构,如<张三,19岁><李四,18岁>,请编程实现<key,value>存储程序模块,向外提供创建和增删改查接口功能,不限编程语言。
#include <iostream>
#include <unordered_map>
#include <string>
class KeyValueStore {
public:
// 创建一个新的键值对存储
KeyValueStore() {}
// 增加一个键值对
void add(const std::string& key, int value) {
store[key] = value;
}
// 删除一个键值对
bool remove(const std::string& key) {
auto it = store.find(key);
if (it != store.end()) {
store.erase(it);
return true;
}
return false;
}
// 修改一个键值对
bool update(const std::string& key, int value) {
auto it = store.find(key);
if (it != store.end()) {
it->second = value;
return true;
}
return false;
}
// 查询一个键值对
bool get(const std::string& key, int& value) const {
auto it = store.find(key);
if (it != store.end()) {
value = it->second;
return true;
}
return false;
}
private:
std::unordered_map<std::string, int> store;
};
int main() {
KeyValueStore kvStore;
// 添加键值对
kvStore.add("张三", 19);
kvStore.add("李四", 18);
// 查询键值对
int age;
if (kvStore.get("张三", age)) {
std::cout << "张三的年龄是: " << age << std::endl;
} else {
std::cout << "未找到张三" << std::endl;
}
// 修改键值对
if (kvStore.update("张三", 20)) {
std::cout << "更新张三的年龄成功" << std::endl;
} else {
std::cout << "未找到张三" << std::endl;
}
// 再次查询
if (kvStore.get("张三", age)) {
std::cout << "张三的年龄是: " << age << std::endl;
} else {
std::cout << "未找到张三" << std::endl;
}
// 删除键值对
if (kvStore.remove("李四")) {
std::cout << "删除李四成功" << std::endl;
} else {
std::cout << "未找到李四" << std::endl;
}
// 再次查询
if (kvStore.get("李四", age)) {
std::cout << "李四的年龄是: " << age << std::endl;
} else {
std::cout << "未找到李四" << std::endl;
}
return 0;
}
7.[问答题]简述进程和线程的联系和区别。
8.填空题]在Linux文件I/O操作时,当调用 open 函数打开一个现有文件或创建一个新文件时,内核会向该进程返回()。
9.[填空题】通用输入/输出接口,用英文大写字母缩写为(),嵌入式处理器内部一般均集成该种I/O接口。该接口一般具有三态,即()态,()态和()态。
10.[填空题]嵌入式系统使用的存储器有多种类型,按照其存储特性可分为易失性随机存储器()和非易失性储器();
11.填密题!Lnux在某目录下查找某字符串通常可以用()命令。
如果你想在某个目录下查找包含特定字符串的文件,通常可以使用 grep 命令结合 find 命令来实现。这两个命令结合起来非常强大,可以递归地搜索目录中的文件并查找指定的字符串。
12.【[道空题」不能做switch0的参数类型是()。
13.[填空题〕串口通讯硬件接口是按( )单位传输数据。
14.[多选题]下面代码是某平台中断申请的代码,关于该代码的描述,正确的是()(多选题)
//省略了变量的定义部分
test irg = gpio to irq(test _gpio);
ret = request threaded irg(test irg, NuLL,
test_irg_handler,
IRQF_TRIGGER_RISING |IROF ONESHOT, "test", NULL);
if (ret) {
gpio free(test gpio);
return ret;
}
enable irg wake(test irg);
A.该代码中通过函数request_threaded_irg申请了一个线程中断
B.题中通过函数gpio_to_irg来获取了该gpio对应的中断号
C.题中代码通过enable_irq_wake来使能了对应的中断
D.题中没有判断enable_irg_wake的返回值,是因为该函数没有返回值
15.[多选题]下面面向对象的语言有哪些_·
A.C++
B. python
C.php
D.C#
16.[多选题]万用表可以测是哪些物理量?
A.电压值
B.电流值
C.电阻值
D.电荷值
17.[单选题]以下关于通信方式的说法,错误的是()
A.按照通信息交互的过程,可以将通信方式分为单工通信、半双工通信和全双工通信三种
8.单工通信只能在一个方向上通信
C.全双工通信可以在两个方向上通信,且能同时发送和接收信息
D.半双工通信可以在两个方向上同时通信
18.[单选题]TCP和UDP分别是()协议。
A.可靠传输,可靠传输
B.可靠传输,不可靠传输
C.不可靠传输,可靠传输
D.不可靠传输,不可靠传输
19.[单选题]对于电容下列说法正确的是()
A.电容容抗为1/jwC
B.电容两端电流不会发生实变
C电容具有“通交流,阻直流”的作用
D.电容的电压领先电流90度
20.单选题电路的抗干扰能力强,不易受外界干扰;()电路能够在大电流高电压下工作。
A. 数字,模拟
B.数字,数字
C.模拟,数字
D.模拟,模拟
21.[单选题]在两输入端的门电路中,当输入为1和0时,输出为1的门电路是()
A.与门
B.或非门
C.同或门
D.异或门
22.[单选题]extern关键字的作用是什么?()
A.声明外部函数或变量
B.声明外部头文件引用
C.声明使用扩展C++语句
D.声明外部成员函数、成员数据
23.[单选题]I2C总线具有线()逻辑功能。
A.或
B.与
C.非
D.不确定
24.[单选题]在RAM中储存数据是以什么方式存储的?
A .二进制码
B.HEX
C.十进制致掘
D. string
25.[单选题]关于栈和队列的说法正确的是().
A.都是先进先出
B.都是先进后出
C.没有共同点
D,只允许在端点处操作元素
26、[单选题〕在嵌入式系统中,通常使用哪种存储器来保存固件或引导加载程序?
A.RAM
B.EEPROM
C.Flash
D.HDD
27.[单选题]0x5F的补码是多少?
A.0xF5
B.0x5F
C.0x60
D.0xF0
28.[单选题)在C语言中下面哪个函数可以在控制台中输出信息?
A. printf
B.scanf
C. fprintf
D.fscanf
29.[单选題]在Linux系统中下面哪个命令可为用户新建一个目录?
A mkdir
B. touch
C.mk
D.cp
30.[单选题〕以下为Linux下的32 位C程序,请计算sizeof§的值.
char strl[] = "Hello" ;
char *p = str;
int n =10;
A.1
B.2
C.4
D.8
31.[单选题]在大多数Linux发行版本中,以下哪个属于块设备 (block devices)?
A串行口
B.硬盘
C.虚拟终端
D.打印机