一、選擇題(每題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);