不保證全復制對了,可以對照着下發 pdf 看看。
#include<bits/stdc++.h>
using namespace std;
const char *str[122][2] = {
{"NOI 機試使用的操作系統是:", "Linux"},
{"Linux 中為文件改名使用的命令是:", "mv <舊文件名> <新文件名>"},
{"在 Linux 中返回上一級目錄使用的命令是:", "cd .."},
{"在 Linux 中刪除當前目錄下的 test 目錄的命令是:", "rm -r test"},
{"當前目錄下有一個編譯好的可執行文件 a.out,執行它使用的命令是:", "./a.out"},
{"使用高級語言編寫的程序稱之為:", "源程序"},
{"在 NOI Linux 系統中可以用來調試程序的程序是:", "gdb"},
{"在 Linux 系統中,文件夾中的文件可以與該文件夾同名嗎:", "可以"},
{"Linux 系統中殺掉名為 test 的后台進程的命令是:", "killall test"},
{"Linux 系統中可以查看隱藏文件的命令是:", "ls -a"},
{"Linux 系統中編譯 C++程序的編譯器是:", "g++"},
{"Linux 系統中,將當前目錄下的文件名打印到 tmp 文件中的命令是:", "ls >tmp"},
{"Linux 系統中,測量當前目錄下程序 test 運行時間的命令是:", "time ./test"},
{"vim 編輯器中,強制退出不保存修改應當輸入:", ":q!"},
{"vim 編輯器中,強制退出並保存修改可輸入以下三種命令之一:", ":wq、ZZ、:x"},
{"vim 編輯器中,定位到文件中第 12 行應當輸入:", ":12"},
{"vim 編輯器中,在文件中查找字符串“12”應當輸入:", "/12"},
{"使用 g++ 編譯 C++ 程序時,生成調試信息的命令行選項是:", "-g"},
{"使用 g++ 編譯 C++ 程序時,生成所有警告信息的命令行選項是:", "-Wall"},
{"使用 g++ 編譯 C++ 程序時,只編譯生成目標文件的命令行選項是:", "-c"},
{"使用 g++ 編譯 C++ 程序時,指定輸出文件名的命令行選項是:", "-o"},
{"如果 C++ 程序中使用了 math.h 中的函數,在用 g++ 編譯時需要加入選項:", "-lm"},
{"Linux 系統中具有最高權限的用戶是:", "root"},
{"在 Linux 的各個虛擬控制台間切換的快捷鍵是:", "Ctrl+Alt+Fn"},
{"在 NOI Linux 中,從字符控制台切換回桌面環境使用的快捷鍵是:", "Ctrl+Alt+F7"},
{"在 NOI Linux 中默認使用的 Shell 是:", "bash"},
{"在 Linux 中查看當前系統中的進程,使用的命令是:", "ps"},
{"在 Linux 中查看進程的 CPU 利用率,使用的命令是:", "ps"},
{"在終端中運行自己的程序,如果進入死循環,應當如何終止:", "Ctrl-C"},
{"可執行文件 a.out 從標准輸入讀取數據。現有一組輸入數據保存在1.in 中,使用這個測試數據文件測試自己的程序的命令是:", "./a.out <1.in"},
{"可執行文件 prog_1 輸出運行結果到標准輸出。則將輸出結果保存到文件 1.out 中使用的命令是:", "./prog_1 >1.out"},
{"在 Linux 系統中,用於查看文件的大小的命令是:", "ls -l"},
{"當前目錄中有如下文件:\n-rw-r--r--\t1 user None\t8.7K Jul 2\t16:35 foobar\n-rw-r--r--\t1 user None\t93 Jul 2\t16:35 foobar.c++\n-rwx------\t1 user None\t144 Jul 2\t16:35 foobar.sh\n其中,可以執行的文件是:", "foobar.sh"},
{"評測系統中對程序源文件大小的限制是:", "小於 100KB"},
{"如無另行說明,評測系統中對程序使用內存的限制是:", "以硬件資源為限"},
{"Linux 下的換行字符為:", "\\n"},
{"終止一個失去響應的進程($pid 代表進程號)的命令是:", "kill $pid"},
{"Linux 中是否區分文件和目錄名稱的大小寫:", "是"},
{"選手在 NOI 機試過程中是否禁止使用網絡:", "是"},
{"為源代碼文件 my.cpp 創建一個備份 mycpp.bak 時,使用的命令是:", "cp my.cpp mycpp.bak"},
{"調試程序的方法有:", "單步調試、使用 print 類語句打印中間結果、閱讀源代碼"},
{"在考試過程中,如果出現系統死機或者崩潰現象,選手應當采取的措施是:", "舉手示意監考人員處理"},
{"提交的答案程序中如果包含 NOI 考試明確禁止使用的代碼,后果是:", "本題成績以0分計算"},
{"對評測結果有疑義,需要申請復評,其流程為:", "提出書面申請,經領隊、科學委員會主席簽字確認后,提交至評測人員"},
{"復評成績較原始成績有變化,則:", "以復評成績為准"},
{"NOI 考試對 C++ 語言標准模板庫的使用有限制嗎?", "沒有"},
{"NOI 考試對 C++ 語言的使用有限制嗎?", "有"},
{"名為 FILE 的文件和名為 File 的文件在 Linux 系統中被認為是:", "不同的文件"},
{"目錄 DIRECT 和目錄 Direct 在 Linux 系統中被認為是:", "不同的目錄"},
{"在 NOI 正式考試中如何登錄自己的比賽用機:", "使用考前工作人員下發的賬戶及密碼"},
{"如果考試分多日進行,那么選手的考試賬戶和口令:", "由工作人員在每場考試開始前下發"},
{"考試結束后,應如何處理密碼條:", "保存好密碼條,用於復測"},
{"選手答案文件保存的目錄是:", "選手目錄下和考題名稱符合的目錄"},
{"選手答案的文件名要求是:", "和試卷的題目摘要中所示文件名一致"},
{"選手答案的文件名大小寫錯誤,成績會怎樣:", "0 分"},
{"選手提交的源代碼文件名是否有特殊要求:", "源程序文件名由試題名稱縮寫加后綴構成,試題名稱縮寫及后綴一律使用小寫"},
{"在NOI考試中,C++源文件的擴展名規定為:", "cpp"},
{"發現鼠標或其他硬件設備有問題,選手可以:", "請工作人員更換"},
{"對試題理解有問題,選手可以:", "舉手求助"},
{"考試結束后選手需要:", "迅速離開"},
{"復評結束后是否還能提交復評申請:", "不能"},
{"測試點時間限制的含義是指:", "題目允許程序運行所占用的用戶時間總和的上限值"},
{"什么情況下選手可以申請延長考試時間:", "機器出現故障,並由工作人員確認和記錄"},
{"考試中選手自行重新啟動機器,能否獲得加時?", "不能"},
{"草稿紙用完了,如何處理:", "舉手向監考人員求助"},
{"水喝完了,如何處理:", "舉手向監考人員再要一瓶"},
{"考試太簡單,能提前離開嗎?", "能"},
{"離開考場后,發現自己文操沒寫,能回去再改嗎?", "不能"},
{"考試中機器突然沒響應了,如何處理?", "舉手向監考人員求助"},
{"考試中發現登錄名和密碼的單子丟了,如何處理?", "向工作人員求助"},
{"復評的時候忘記登錄名和密碼了,如何處理?", "向工作人員求助"},
{"在監考人員宣布 NOI 機試開始之前,是否允許選手登錄系統和翻閱試卷?", "否"},
{"在 NOI 上機考試中,是否允許選手私自重新啟動計算機?", "否"},
{"在 NOI 系列考試中,如果由於文件名不正確導致被判 0 分,提出復評請求,會被接受嗎?", "不會"},
{"在 NOI 系列考試中,如果由於文件目錄名不正確導致被判 0 分,提出復評請求,會被接受嗎?", "不會"},
{"在 NOI 系列考試中,如果由於文件保存路徑不正確導致被判 0 分,提出復評請求,會被接受嗎?", "不會"},
{"選手可以不使用集成開發環境(IDE)編輯程序源代碼嗎?", "可以"},
{"選手程序在某測試點上的運行時間僅比時限多0.005 秒,算不算超時?", "算"},
{"在 NOI 上機考試中,允許選手使用的編程語言包括:", "C++"},
{"NOI 比賽的題目類型有:", "非交互式程序題、交互式程序題、答案提交題"},
{"選手比賽中提交的有效文件類型有:", "答案文件、源程序"},
{"選手提交的程序不得進行的操作包括:", "試圖訪問網絡、使用 fork 或其它線程/進程生成函數、打開或創建題目規定的輸入/輸出文件之外的其它文件、運行其它程序"},
{"以修改過的程序或答案為依據的申訴是否會被受理:", "否"},
{"沒有自行復測結果(包括結果正確性、所用時間、所用空間等)支持的申訴是否會被受理", "否"},
{"超過申訴時間的申訴是否會被受理:", "否"},
{"對評測結果中的超時有異議,且復測結果的運行時間與題目時間限制之差小於題目時間限制5%的申訴是否會被受理:", "否"},
{"遇到下列哪些情況可以向工作人員申請加時補償:", "計算機硬件故障、操作系統死機"},
{"考試時若遇到計算機硬件故障或操作系統死機,應如何處理?", "舉手向工作人員求助"},
{"選手進入考場可以攜帶的物品是:", "筆、手表"},
{"選手進入考場不可以攜帶的物品是:", "紙、U 盤、手機"},
{"競賽組織者將在競賽場地為選手提供的物品是:", "草稿紙、飲用水、食品"},
{"一個完整的計算機系統應包括:", "硬件系統和軟件系統"},
{"目前微型計算機中采用的邏輯組件是:", "大規模和超大規模集成電路"},
{"軟件與程序的區別是:", "軟件是程序以及開發、使用和維護所需要的所有文檔的總稱,而程序是軟件的一部分"},
{"IT 表示:", "信息技術"},
{"計算機中央處理器簡稱為:", "CPU"},
{"計算機內存儲器的作用是用來存放", "當前 CPU 正在使用的程序和數據"},
{"用來全面管理計算機硬件和軟件資源的軟件叫", "操作系統"},
{"LAN 是指:", "局域網"},
{"在微機中,bit 的中文含義是:", "二進制位"},
{"計算機所能辨認的最小信息單位是:", "位"},
{"ASCII 的含義是:", "美國信息交換標准代碼"},
{"在計算機術語中經常用 RAM 表示:", "隨機存取存儲器"},
{"RAM 存儲器在斷電后,其中的數據會變化嗎?", "會"},
{"ROM 存儲器在斷電后,其中的數據會變化嗎?", "不會"},
{"現代計算機所應用的存儲程序原理是誰提出的?", "馮·諾依曼"},
{"計算機內所有的信息都是以什么形式表示的?", "二進制數碼"},
{"計算機直接識別和執行的語言是:", "機器語言"},
{"Linux 是一個____的操作系統:", "開源"},
{"NOI 的中文含義是:", "全國信息學奧林匹克競賽"},
{"字長為 32bit 的計算機,表示它能作為一個整體進行傳送的數據長度可為 _ 個字節:", "4"},
{"一個字節由相鄰的 _ 個二進制位組成:", "8"},
{"二進制數“10”化為十進制數是:", "2"},
{"將十六進制數 0xAB 表示成二進制數是:", "10101011"},
{"在 Linux 下建立目錄使用的命令是:", "mkdir"},
{"NOI 比賽中提供的 C++ IDE 環境除了 GUIDE 之外,還有:", "Anjuta"},
{"在 NOI 比賽中,編輯源代碼除了可以用 GUIDE、Lazarus、Anjuta 等集成開發環境(IDE)之外,還可以使用:", "vi、gedit"},
{"NOI 比賽每場上機考試的比賽時間是 _ 小時:", "5"},
{"首屆 NOI 是 ____ 年舉辦的:", "1984"},
{"今年是第幾屆NOI?", "38"},
{"今年是第幾屆IOI?", "33"},
{"第12屆IOI是 ____ 年在北京舉辦的:", "2000"}
};
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
int x[50], scr;
char S[1000];
int main(){
ios::sync_with_stdio(false);
for(int i = 0;i < 50;++ i) x[i] = rng() % 73;
sort(x, x + 50);
for(int i = 0;i < 50;++ i) x[i] += i;
shuffle(x, x + 50, rng);
for(int i = 0;i < 50;++ i){
cout << "這是你今天的第 " << i+1 << " 次機會,本題答對可獲得 1 個啥幣,請聽題:" << endl << str[x[i]][0] << endl;
cin.getline(S, 1000);
if(strcmp(S, str[x[i]][1])) cout << "草你嗎 沒答對 扣你 1 啥幣" << endl << "正確答案是:" << str[x[i]][1] << endl;
else {++scr; cout << "答對了!!送你 1 個啥幣!!!" << endl;}
cout << "------------------------------" << endl;
} cout << "草你嗎 50 次機會用光了 你獲得了 " << 2*scr << " 個啥幣!!!!" << endl;
}