一、选择题(每题3分,共30分)
1.以下哪个不是C语言中的关键字?( )
A. int
B. Float
C. Define
D. Return
2.以下代码的输出是: ( )
inta= 5, b= 10;
printf("%d", a++ + ++b);
A. 15
B.16
C.17
D.18
3.以下哪c()算符的优先级最高?( )
A.+
B.*
C.=
D.&&
4.以下关于指针的说法错误的是?( )
A.指针变量存储的是内存地址
B.指针可以进行加减运算
C.指针可以指向任何类型的数据
D.指针变量必须先初始化再使用
5.以下哪个函数可以用于动态分配内存?( )
A, malloc()
B. calloc()
C. realloc()
D.以上都是
6.以下哪个预处理指令用于包含头文件?( )
A. #define
B. #include
C. #ifdef
D. #endif
7.以下代码的输出是:( )
int arr[] = {1, 2, 3, 4, 5};
int *p=arr+ 2;
printf("%d", *p);
A. 1
B.2
C.3
D.4
8.在嵌入式系统中,以下哪种方法常用于降低功耗( )
A.增加主频
B.关闭未使用的外设时钟
C.频繁轮询外设状态
D.使用动态内存分配
9.以下关于看门狗定时器(Watchdog)的说法正确的是:( )
发A.看门狗溢出会导致系统复位
B.看门狗只能通过硬件配置
C.看门狗定时器不需要定期喂狗
D.看门狗用于提高系统运行速度
10.配置 STM32的 ADC 为连续转换模式时,应选择的触源是:( )
A. 外部引脚触发
B.软件触发
C.定时器触发
D.自动连续触发
二、填空题(每题4分,共20分)
1.以下代码的输出是________
数 int a=10;
int *p = &a;
*p= 20;
printf("%d", a);
2.以下代码的功能是分高并输出16bt数据中的高8据,补全代码:
uint8_t get_hight_8bit_func(uint16_t yal) {
return_______;
}
3.以下代码的功能是交换两个变量的值,请补全代码:
void swap(int *a, int *b) {
______= *a;
*a=*b;
*b=______;
}
4.请写出以下代码段的输出结果______
int a = 10;
int *p= &a;
*p=20;
printf("%d", a);
三、编程题(每题 25 分,共 50 分)
1.假设有以下数组 uint8_tnumber10)=(15,92,62,8,16,28,99,20,32,40);,编写一个的数,能将数组内的数据从小到大从新排序川打印输出。丽数名已绘出voidtestfunc(uint8t*number);
2.在蓝牙头戴耳机的研发过程中,存在过硬件设计接错导致了左右声道接反的失误,这时候就需要我们耳机去调换声道数据。我们以POM 格式的音频数据为例,如图:

在此,就需要我们通过程序,讲左右声道的数据互换、举个例子
原来声道数据:0X9A 0X68 0X88 0X33 0X12 0x12 0X45 0X45
调换声道后的数据:0x88 0X33 0X9A 0X68 0X45 0X45 0X12 0X12
实现功能:将原始POM 数据以形参形式传入,最终返网调换声道后的数据、函数名已给出 uint8t*swtch_pcm_channel(uint8_t*base_pcmbuff);