20221320—馮泰瑞—課上測試:位運算(AI)
20221320—馮泰瑞—課上測試:位運算(AI)
一、使用位運算編寫并調用下面函數 ,把當前時間(使用C庫函數獲得)設置到 TIME 中,給出代碼,使用git記錄過程。(12 分)
void setHour(int h)
void setMinute(int m)
void setSecond(int s)
代碼:
#include <stdio.h>
#include <time.h>
unsigned short TIME;
// 設置小時
void setHour(int h) {
TIME = (TIME & 0x1FFF) | (h << 12);
}
// 設置分鐘
void setMinute(int m) {
TIME = (TIME & 0xE0FF) | (m << 8);
}
// 設置秒
void setSecond(int s) {
TIME = (TIME & 0xFF00) | s;
}
// 獲取系統時間并設置TIME
void setCurrentTime(void) {
struct tm *timeinfo;
time_t rawtime;
time(&rawtime);
timeinfo = localtime(&rawtime);
setHour(timeinfo->tm_hour);
setMinute(timeinfo->tm_min);
setSecond(timeinfo->tm_sec);
}
int main() {
setCurrentTime(); // 獲取系統時間并設置TIME
return 0;
}
運行結果:
fengtairui@fengtairui-virtual-machine:~$ vim main.c
fengtairui@fengtairui-virtual-machine:~$ gcc -g main.c
fengtairui@fengtairui-virtual-machine:~$ ./a.out
git記錄過程:
fengtairui@fengtairui-virtual-machine:~$ git init
提示:使用 'master' 作為初始分支的名稱。這個默認分支名稱可能會更改。要在新倉庫中
提示:配置使用初始分支名,并消除這條警告,請執行:
提示:
提示: git config --global init.defaultBranch <名稱>
提示:
提示:除了 'master' 之外,通常選定的名字有 'main'、'trunk' 和 'development'。
提示:可以通過以下命令重命名剛創建的分支:
提示:
提示: git branch -m <name>
已初始化空的 Git 倉庫于 /home/fengtairui/.git/
fengtairui@fengtairui-virtual-machine:~$ git add main.c
二、使用位運算編寫并調用下面函數 ,讀取TIME中的時間,給出代碼,使用git記錄過程。(12 分)
void setHour(int h)
void setMinute(int m)
void setSecond(int s)
代碼:
#include <stdio.h>
#include <time.h>
unsigned short TIME;
// 設置小時
void setHour(int h) {
TIME = (TIME & 0x1FFF) | (h << 12);
}
// 設置分鐘
void setMinute(int m) {
TIME = (TIME & 0xE0FF) | (m << 8);
}
// 設置秒
void setSecond(int s) {
TIME = (TIME & 0xFF00) | s;
}
// 讀取小時
int getHour(void) {
return (TIME >> 12) & 0x1F;
}
// 讀取分鐘
int getMinute(void) {
return (TIME >> 8) & 0x3F;
}
// 讀取秒
int getSecond(void) {
return TIME & 0xFF;
}
// 獲取系統時間并設置TIME
void setCurrentTime(void) {
struct tm *timeinfo;
time_t rawtime;
time(&rawtime);
timeinfo = localtime(&rawtime);
setHour(timeinfo->tm_hour);
setMinute(timeinfo->tm_min);
setSecond(timeinfo->tm_sec);
}
int main() {
setCurrentTime(); // 獲取系統時間并設置TIME
printf("當前時間:\n");
printf("小時: %d\n", getHour());
printf("分鐘: %d\n", getMinute());
printf("秒: %d\n", getSecond());
return 0;
}
運行結果:
fengtairui@fengtairui-virtual-machine:~$ vim main.c
fengtairui@fengtairui-virtual-machine:~$ gcc -g main.c
fengtairui@fengtairui-virtual-machine:~$ ./a.out
當前時間:
小時: 10
分鐘: 38
秒: 39
三、 完成main.c測試模塊,測試你完成的代碼,給出代碼,編譯運行結果,使用 git 記錄過程。(5?0?3)
獲取系統時間設置TIME
讀取你設置的結果
設置minute 為你學號最后兩位
讀取minute
代碼:
#include <stdio.h>
#include <time.h>
unsigned short TIME;
// 設置小時
void setHour(int h) {
TIME = (TIME & 0x1FFF) | (h << 12);
}
// 設置分鐘
void setMinute(int m) {
TIME = (TIME & 0xE0FF) | (m << 8);
}
// 設置秒
void setSecond(int s) {
TIME = (TIME & 0xFF00) | s;
}
// 讀取小時
int getHour(void) {
return (TIME >> 12) & 0x1F;
}
// 讀取分鐘
int getMinute(void) {
return (TIME >> 8) & 0x3F;
}
// 讀取秒
int getSecond(void) {
return TIME & 0xFF;
}
// 獲取系統時間并設置TIME
void setCurrentTime(void) {
struct tm *timeinfo;
time_t rawtime;
time(&rawtime);
timeinfo = localtime(&rawtime);
setHour(timeinfo->tm_hour);
setMinute(timeinfo->tm_min);
setSecond(timeinfo->tm_sec);
}
int main() {
setCurrentTime(); // 獲取系統時間并設置TIME
printf("當前時間:\n");
printf("小時: %d\n", getHour());
printf("分鐘: %d\n", getMinute());
printf("秒: %d\n", getSecond());
// 設置分鐘為你學號最后兩位
setMinute(20);
printf("修改后的分鐘: %d\n", getMinute());
return 0;
}
運行結果:
fengtairui@fengtairui-virtual-machine:~$ gcc -g main.c
fengtairui@fengtairui-virtual-machine:~$ ls
公共的 圖片 音樂 bestidiocs main.c sm2_key.pem test.txt
模板 文檔 桌面 bestidiocs2024 rc4_example snap
視頻 下載 a.out build rc4_example.c test.bin
fengtairui@fengtairui-virtual-machine:~$ ./a.out
當前時間:
小時: 10
分鐘: 40
秒: 8
修改后的分鐘: 20