Linux環(huán)境下C語言編程課程設(shè)計_第1頁
Linux環(huán)境下C語言編程課程設(shè)計_第2頁
Linux環(huán)境下C語言編程課程設(shè)計_第3頁
Linux環(huán)境下C語言編程課程設(shè)計_第4頁
Linux環(huán)境下C語言編程課程設(shè)計_第5頁
已閱讀5頁,還剩9頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、Linux操作系統(tǒng)教程課程設(shè)計題 目: 算術(shù)測試系統(tǒng) 學(xué) 號: 22041240120 姓 名: 嚴(yán) 濤 專 業(yè): 信息工程 目錄一、課程設(shè)計目的3二、課程設(shè)計所需知識與開發(fā)工具32.1、課程設(shè)計所需知識32.2、開發(fā)工具簡介6三、課程設(shè)計主要內(nèi)容63.1、系統(tǒng)結(jié)構(gòu)簡介63.2、系統(tǒng)功能模塊的劃分63.3、makefile介紹.73.4、makefile規(guī)則.7四、設(shè)計步驟84.1、題量輸入模塊的實現(xiàn)與相關(guān)代碼84.2、出題模塊的實現(xiàn)與相關(guān)代碼84.3、答題模塊的實現(xiàn)與相關(guān)代碼94.4、檢查計分模塊的實現(xiàn)與相關(guān)代碼104.5、評分模塊的實現(xiàn)與相關(guān)代碼10五、測試與調(diào)試11六、總結(jié)136.1、成

2、員分工136.2、心得于體會13七、參考文獻14一、課程設(shè)計目的1.熟悉linux基本操作命令;2.掌握linux環(huán)境下c語言編程;3.提高學(xué)生搜集資料的能力,以此解決遇到的各種問題。二、課程設(shè)計所需知識與開發(fā)工具2.1、課程設(shè)計所需知識1.linux基本操作命令:date 顯示系統(tǒng)日期;cal 2007 顯示2007年的日歷表;date 041217002007.00 設(shè)置日期和時間 - 月日時分年.秒;clock -w 將時間修改保存到 BIOS;shutdown -h now 關(guān)閉系統(tǒng)(1);init 0 關(guān)閉系統(tǒng)(2);telinit 0 關(guān)閉系統(tǒng)(3);shutdown -h hou

3、rs:minutes & 按預(yù)定時間關(guān)閉系統(tǒng);shutdown -c 取消按預(yù)定時間關(guān)閉系統(tǒng);shutdown -r now 重啟(1);reboot 重啟(2);logout 注銷;cd /home 進入 '/ home' 目錄';cd . 返回上一級目錄;cd ./. 返回上兩級目錄;cd 進入個人的主目錄;cd user1 進入個人的主目錄;cd - 返回上次所在的目錄;pwd 顯示工作路徑;ls 查看目錄中的文件;ls -F 查看目錄中的文件;ls -l 顯示文件和目錄的詳細(xì)資料;ls -a 顯示隱藏文件;ls *0-9* 顯示包含數(shù)字的文件名和目錄名;

4、tree 顯示文件和目錄由根目錄開始的樹形結(jié)構(gòu)(1);lstree 顯示文件和目錄由根目錄開始的樹形結(jié)構(gòu)(2);mkdir dir1 創(chuàng)建一個叫做 'dir1' 的目錄';mkdir dir1 dir2 同時創(chuàng)建兩個目錄;mkdir -p /tmp/dir1/dir2 創(chuàng)建一個目錄樹;rm -f file1 刪除一個叫做 'file1' 的文件';rmdir dir1 刪除一個叫做 'dir1' 的目錄';rm -rf dir1 刪除一個叫做 'dir1' 的目錄并同時刪除其內(nèi)容;rm -rf dir1 d

5、ir2 同時刪除兩個目錄及它們的內(nèi)容;mv dir1 new_dir 重命名/移動 一個目錄;cp file1 file2 復(fù)制一個文件;cp dir/* . 復(fù)制一個目錄下的所有文件到當(dāng)前工作目錄;cp -a /tmp/dir1 . 復(fù)制一個目錄到當(dāng)前工作目錄;cp -a dir1 dir2 復(fù)制一個目錄;bunzip2 file1.bz2 解壓一個叫做 'file1.bz2'的文件;bzip2 file1 壓縮一個叫做 'file1' 的文件;gunzip file1.gz 解壓一個叫做 'file1.gz'的文件;gzip file1 壓縮

6、一個叫做 'file1'的文件;gzip -9 file1 最大程度壓縮;rar a file1.rar test_file 創(chuàng)建一個叫做 'file1.rar' 的包;rar a file1.rar file1 file2 dir1 同時壓縮 'file1', 'file2' 以及目錄 'dir1';rar x file1.rar 解壓rar包 ;unrar x file1.rar 解壓rar包;tar -cvf archive.tar file1 創(chuàng)建一個非壓縮的 tarball;tar -cvf a

7、rchive.tar file1 file2 dir1 創(chuàng)建一個包含了 'file1', 'file2' 以及 'dir1'的檔案文件;tar -tf archive.tar 顯示一個包中的內(nèi)容;tar -xvf archive.tar 釋放一個包;tar -xvf archive.tar -C /tmp 將壓縮包釋放到 /tmp目錄下;tar -cvfj archive.tar.bz2 dir1 創(chuàng)建一個bzip2格式的壓縮包;tar -xvfj archive.tar.bz2 解壓一個bzip2格式的壓縮包;tar -cvfz archive

8、.tar.gz dir1 創(chuàng)建一個gzip格式的壓縮包;tar -xvfz archive.tar.gz 解壓一個gzip格式的壓縮包;zip file1.zip file1 創(chuàng)建一個zip格式的壓縮包;zip -r file1.zip file1 file2 dir1 將幾個文件和目錄同時壓縮成一個zip格式的壓縮包;unzip file1.zip 解壓一個zip格式壓縮包;2.c語言程序開發(fā)相關(guān)知識;3.linux vi編輯器的使用:進入vi的命令:vi filename :打開或新建文件,并將光標(biāo)置于第一行首;vi +n filename :打開文件,并將光標(biāo)置于第n行首;vi + fi

9、lename :打開文件,并將光標(biāo)置于最后一行首;vi +/pattern filename:打開文件,并將光標(biāo)置于第一個與pattern匹配的串處;vi -r filename :在上次正用vi編輯時發(fā)生系統(tǒng)崩潰,恢復(fù)filename;vi filename.filename :打開多個文件,依次進行編輯;移動光標(biāo)類命令:h :光標(biāo)左移一個字符;l :光標(biāo)右移一個字符;space:光標(biāo)右移一個字符;Backspace:光標(biāo)左移一個字符;k或Ctrl+p:光標(biāo)上移一行;j或Ctrl+n :光標(biāo)下移一行;Enter :光標(biāo)下移一行;w或W :光標(biāo)右移一個字至字首;b或B :光標(biāo)左移一個字至字首;

10、e或E :光標(biāo)右移一個字至字尾;) :光標(biāo)移至句尾;( :光標(biāo)移至句首;:光標(biāo)移至段落最后一個字母;:光標(biāo)移至段落第一個字母;nG:光標(biāo)移至第n行首;n+:光標(biāo)下移n行;n-:光標(biāo)上移n行;n$:光標(biāo)移至第n行尾;H :光標(biāo)移至屏幕頂行;M :光標(biāo)移至屏幕中間行;L :光標(biāo)移至屏幕最后行;0:(注意是數(shù)字零)光標(biāo)移至當(dāng)前行首;$:光標(biāo)移至當(dāng)前行尾;屏幕翻滾類命令:Ctrl+u:向文件首翻半屏;Ctrl+d:向文件尾翻半屏;Ctrl+f:向文件尾翻一屏;Ctrl+b;向文件首翻一屏;nz:將第n行滾至屏幕頂部,不指定n時將當(dāng)前行滾至屏幕頂部;插入文本類命令:i :在光標(biāo)前;I :在當(dāng)前行首;a:

11、光標(biāo)后;A:在當(dāng)前行尾;o:在當(dāng)前行之下新開一行;O:在當(dāng)前行之上新開一行;r:替換當(dāng)前字符;R:替換當(dāng)前字符及其后的字符,直至按ESC鍵;s:從當(dāng)前光標(biāo)位置處開始,以輸入的文本替代指定數(shù)目的字符;S:刪除指定數(shù)目的行,并以所輸入文本代替之;ncw或nCW:修改指定數(shù)目的字;nCC:修改指定數(shù)目的行;刪除命令:ndw或ndW:刪除光標(biāo)處開始及其后的n-1個字;d0:刪至行首;d$:刪至行尾;ndd:刪除當(dāng)前行及其后n-1行;x或X:刪除一個字符,x刪除光標(biāo)后的,而X刪除光標(biāo)前的;Ctrl+u:刪除輸入方式下所輸入的文本;搜索及替換命令:/pattern:從光標(biāo)開始處向文件尾搜索pattern;

12、?pattern:從光標(biāo)開始處向文件首搜索pattern; n:在同一方向重復(fù)上一次搜索命令;N:在反方向上重復(fù)上一次搜索命令;:s/p1/p2/g:將當(dāng)前行中所有p1均用p2替代;:n1,n2s/p1/p2/g:將第n1至n2行中所有p1均用p2替代;:g/p1/s/p2/g:將文件中所有p1均用p2替換;選項設(shè)置:all:列出所有選項設(shè)置情況;term:設(shè)置終端類型;ignorance:在搜索中忽略大小寫;list:顯示制表位(Ctrl+I)和行尾標(biāo)志($);number:顯示行號;report:顯示由面向行的命令修改過的數(shù)目;terse:顯示簡短的警告信息;warn:在轉(zhuǎn)到別的文件時若沒

13、保存當(dāng)前文件則顯示NO write信息;nomagic:允許在搜索模式中,使用前面不帶“”的特殊字符;nowrapscan:禁止vi在搜索到達文件兩端時,又從另一端開始;mesg:允許vi顯示其他用戶用write寫到自己終端上的信息;最后行方式命令:n1,n2 co n3:將n1行到n2行之間的內(nèi)容拷貝到第n3行下;:n1,n2 m n3:將n1行到n2行之間的內(nèi)容移至到第n3行下;:n1,n2 d :將n1行到n2行之間的內(nèi)容刪除;:w :保存當(dāng)前文件;:e filename:打開文件filename進行編輯;:x:保存當(dāng)前文件并退出;:q:退出vi;:q!:不保存文件并退出vi;:!com

14、mand:執(zhí)行shell命令command;:n1,n2 w!command:將文件中n1行至n2行的內(nèi)容作為command的輸入并執(zhí)行之,若不指定n1,n2,則表示將整個文件內(nèi)容作為command的輸入;:r!command:將命令command的輸出結(jié)果放到當(dāng)前行;4.gcc的基本規(guī)則:gcc所遵循的部分約定規(guī)則:.c為后綴的文件,C語言源代碼文件;.a為后綴的文件,是由目標(biāo)文件構(gòu)成的檔案庫文件;.C,.cc或.cxx 為后綴的文件,是C+源代碼文件且必須要經(jīng)過預(yù)處理;.h為后綴的文件,是程序所包含的頭文件;.i 為后綴的文件,是C源代碼文件且不應(yīng)該對其執(zhí)行預(yù)處理;.ii為后綴的文件,是C

15、+源代碼文件且不應(yīng)該對其執(zhí)行預(yù)處理;.m為后綴的文件,是Objective-C源代碼文件;.mm為后綴的文件是Objective-C+源代碼文件;.o為后綴的文件,是編譯后的目標(biāo)文件;.s為后綴的文件,是匯編語言源代碼文件;.S為后綴的文件,是經(jīng)過預(yù)編譯的匯編語言源代碼文件。5.gcc的基本用法GCC最基本的用法是gcc options filenames其中options就是編譯器所需要的參數(shù),filenames給出相關(guān)的文件名稱。-c,只編譯,不鏈接成為可執(zhí)行文件,編譯器只是由輸入的.c等源代碼文件生成.o為后綴的目標(biāo)文件,通常用于編譯不包含主程序的子程序文件。-o output_file

16、name,確定輸出文件的名稱為output_filename,同時這個名稱不能和源文件同名。如果不給出這個選項,gcc就給出預(yù)設(shè)的可執(zhí)行文件a.out。-g,產(chǎn)生符號調(diào)試工具(GNU的gdb)所必要的符號資訊,要想對源代碼進行調(diào)試,我們就必須加入這個選項。-O,對程序進行優(yōu)化編譯、鏈接,采用這個選項,整個源代碼會在編譯、鏈接過程中進行優(yōu)化處理,這樣產(chǎn)生的可執(zhí)行文件的執(zhí)行效率可以提高,但是,編譯、鏈接的速度就相應(yīng)地要慢一些。-O2,比-O更好的優(yōu)化編譯、鏈接,當(dāng)然整個編譯、鏈接過程會更慢。-Idirname,將dirname所指出的目錄加入到程序頭文件目錄列表中,是在預(yù)編譯過程中使用的參數(shù)。C程

17、序中的頭文件包含兩種情況A)#include <myinc.h>B)#include “myinc.h”其中,A類使用尖括號(< >),B類使用雙引號(“ ”)。對于A類,預(yù)處理程序cpp在系統(tǒng)預(yù)設(shè)包含文件目錄(如/usr/include)中搜尋相應(yīng)的文件,而B類,預(yù)處理程序在目標(biāo)文件的文件夾內(nèi)搜索相應(yīng)文件。2.2、開發(fā)工具簡介1:linux ubantu操作系統(tǒng)Ubuntu(烏班圖)是一個以桌面應(yīng)用為主的Linux操作系統(tǒng),其名稱來自非洲南部祖魯語或豪薩語的“ubuntu”一詞,意思是“人性”、“我的存在是因為大家的存在”,是非洲傳統(tǒng)的一種價值觀,類似華人社會的“仁愛

18、”思想。Ubuntu基于Debian發(fā)行版和GNOME桌面環(huán)境,而從11.04版起,Ubuntu發(fā)行版放棄了Gnome桌面環(huán)境,改為Unity,與Debian的不同在于它每6個月會發(fā)布一個新版本。Ubuntu的目標(biāo)在于為一般用戶提供一個最新的、同時又相當(dāng)穩(wěn)定的主要由自由軟件構(gòu)建而成的操作系統(tǒng)。Ubuntu具有龐大的社區(qū)力量,用戶可以方便地從社區(qū)獲得幫助。2013年1月3日,Ubuntu正式發(fā)布面向智能手機的移動操作系統(tǒng)。ubuntu基于linux的免費開源桌面PC操作系統(tǒng),十分契合英特爾的超極本定位,支持x86、64位和ppc架構(gòu)。2:gcc-GNU編譯器套件(GNU Compiler Col

19、lection)包括C、C+、Objective-C、Fortran、Java、Ada和Go語言的前端,也包括了這些語言的庫(如libstdc+、libgcj等等)。GCC的初衷是為GNU操作系統(tǒng)專門編寫的一款編譯器。GNU系統(tǒng)是徹底的自由軟件。此處,“自由”的含義是它尊重用戶的自由。三、課程設(shè)計主要內(nèi)容3.1、系統(tǒng)結(jié)構(gòu)簡介本系統(tǒng)包含了順序結(jié)構(gòu),選擇結(jié)構(gòu),循環(huán)結(jié)構(gòu)三種在c程序中的主要結(jié)構(gòu),其中穿插了數(shù)組,指針,函數(shù)調(diào)用等知識3.2、系統(tǒng)功能模塊的劃分本系統(tǒng)一共有五個模塊,分別是:輸入題量模塊,出題模塊,答題模塊,檢查計分模塊,評分模塊1.輸入題量模塊:本系統(tǒng)能由使用者指定出題數(shù)量,用scanf

20、語句來輸入題量,然后用return將題量值返回到出題模塊;2.出題模塊:一個考試系統(tǒng)首先就是要有題目且能夠根據(jù)條件出題,用一個for循環(huán)結(jié)構(gòu)來約束題量;3.答題模塊:出完題后就是從鍵盤上輸入答案,在本模塊中,提示輸入答案后,用scanf函數(shù)來實現(xiàn)使從鍵盤上輸入一個數(shù)賦給一個用來記錄答案的字符變量,用return語句將這個變量返回到出題模塊;4.檢查計分模塊:輸入答案后,就要判斷答案的正確性和計分了,在本模塊中,用for循環(huán)結(jié)構(gòu)嵌套if語句來控制輸入的答案是否正確,若正確就返回i+函數(shù)使正確數(shù)加1,否則continue終止此次循環(huán),循環(huán)完成后,用return語句將正確數(shù)返回到出題系統(tǒng)中;5.評分

21、模塊:用檢查計分模塊返回的值除以出題模塊返回的題數(shù)乘以100%以百分比保留兩位小數(shù)顯示正確率。3.3、makefile介紹1.makefile文件介紹makefile一個工程中的源文件不計數(shù),其按類型,功能,模塊分別放在若干個目錄中,makefile定義了一系列的規(guī)則來指定,哪些文件需要先編譯,哪些文件需要后編譯,哪些文件需要重新編譯,甚至于進行更復(fù)雜的功能操作,因為makefile就像一個shell腳本一樣,其中也可以執(zhí)行操作系統(tǒng)的命令。2.makefile主要功能make工具最主要也是最基本的功能就是通過makefile文件來描述源程序之間的相互關(guān)系并自動維護編譯工作。而makefile文

22、件需要按照某種語法進行編寫,文件中需要說明如何編譯各個源文件并連接生成可執(zhí)行文件,并要求定義源文件之間的依賴關(guān)系。makefile文件是許多編譯器包括windowsNT下的編譯器維護編譯信息的常用方法,只是在集成開發(fā)環(huán)境中,用戶通過友好的界面修改makefile文件而已。3.自動化編譯makefile帶來的好處就是自動化編譯,一旦寫好,只需要一個make命令,整個工程完全自動編譯,極大的提高了軟件開發(fā)的效率。make是一個命令工具,是一個解釋makefile中指令的命令工具,一般來說,大多數(shù)的IDE都有這個命令,比如:Delphi的make,VC+的nmake,Linux下GUN的make???/p>

23、見,makefile都成為了一種在工程方面的編譯方法。3.4、makefile規(guī)則makefile中的規(guī)則是這樣的:TAGET··· :DPENDENCIES···COMMAND···目標(biāo)(TARGET)程序產(chǎn)生的文件,如可執(zhí)行文件和目標(biāo)文件:目標(biāo)也可以是要執(zhí)行的動作,如“clean”。依賴(DEPENDENCIES)是用來產(chǎn)生目標(biāo)的輸入文件,一個目標(biāo)通常依賴于多個文件。命令(COMMAND)是make執(zhí)行的動作,一個可以有多個命令,每個占一行。注意:每個命令行的起始字符必須為TAB字符!有依賴

24、關(guān)系規(guī)則中的命令通常在依賴文件變化時負(fù)責(zé)產(chǎn)生target“clean”的規(guī)。規(guī)則解釋如何和何時執(zhí)行動作。有的規(guī)則看起來很復(fù)雜,但都符合上述模式。makefile中的規(guī)則描述如何生成特定的文件,即規(guī)則的目標(biāo)。規(guī)則列出了目標(biāo)依賴文件,指定生成或更新目標(biāo)的命令。規(guī)則的次序是不重要的,除非是確定缺省目標(biāo):缺省目標(biāo)是第一個makefile中的第一個規(guī)則:如果第一個規(guī)則有多個目標(biāo),第一個目標(biāo)是缺省的。有兩個例外:以.開頭的目標(biāo)不是缺省目標(biāo):模式規(guī)則對缺省目標(biāo)沒有影響。通常我們所寫的第一個規(guī)則是編譯整個或makefile中指定的所有程序。四、設(shè)計步驟4.1、輸入題量模塊的實現(xiàn)與代碼#include<s

25、tdlib.h>#include<stdio.h>int input(void)int j;while(1)printf("請輸入您需要的測試題題量: ");if(!scanf("%d",&j)printf("請輸入正確的數(shù)字,然后重啟該程序。n");exit(0);elsebreak;return j;4.2、出題模塊的實現(xiàn)與代碼#include<stdlib.h>#include<stdio.h>int question(int questionNum)int i;int k;in

26、t q1;int q2;int THE_TRUE_ANSWER_NUMBER=0;srand(unsigned)time(NULL);for(i=0;i<questionNum;i+)q1=rand()%100;q2=rand()%100;printf("%d+%d=",q1,q2);scanf("%d",&k);if(k=q1+q2)THE_TRUE_ANSWER_NUMBER+=1;return THE_TRUE_ANSWER_NUMBER;4.3、答題模塊和檢查計分模塊的實現(xiàn)與代碼#include<stdlib.h>#in

27、clude<stdio.h>static int THE_TRUE_ANSWER_NUMBER=0;int main(int argc,char *argv)int i;int j;int k;int q1;int q2;srand(unsigned)time(NULL);printf("請輸入測試題題量: ");scanf("%d",&j);for(i=0,i<j;i+)q1=rand()%100;q2=rand()%100;printf("%d+%d=",q1,q2);scanf("%d&quo

28、t;,&k);if(k=q1+q2)THE_TRUE_ANSWER_NUMBER+=1;float f=THE_TRUE_ANSWER_NUMBER/(j*1.0);printf("您的正確率為 %0.2f,繼續(xù)加油!n",f*100);exit(0);4.4、自定義頭文件myhead.h代碼#ifndef MYHEAD_H#define MYHEAD_Hextern int question(int);extern int input(void);#endif4.5、評分模塊的實現(xiàn)與代碼#include<stdio.h>#include<stdlib.h>#include<ctype.h>#include"myhead.h"int main(int argc,char *argv)int i;int k;in

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論