版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、-. z.Linu*程序設計實驗報告1操作系統(tǒng)根本命令使用一、實驗目的1通過對Emacs、vi、vim、gedit文本編輯器的使用,掌握在Linu*環(huán)境下文本文件的編輯方法;2通過對常用命令mkdir、cp、cd、ls、mv、chmod、rm等文件命令的操作,掌握Linu*操作系統(tǒng)中文件命令的用法。二、實驗任務與要求1emacs的使用,要求能新建、編輯、保存一個文本文件2vi或vim的使用,要求能新建、編輯、保存一個文本文件3gedit的使用,要求能新建、編輯、保存一個文本文件4掌握mkdir、cd命令的操作,要求能建立目錄、進入與退出目錄5掌握cp、ls、mv、chmod、rm命令的操作,要
2、求能拷貝文件、新建文件、查看文件、文件重命名、刪除文件等操作。三、實驗工具與準備計算機PC機,Linu* Redhat Fedora Core6操作系統(tǒng)四、實驗步驟與操作指導任務1學習emacs的使用,要求能新建、編輯、保存一個文本文件1啟動emacs2輸入以下C程序3保存文件為kk.c4用emacs翻開文件kk.c5修改程序6另存為文件aa.t*t并退出。任務2vi或vim的使用,要求能新建、編輯、保存一個文本文件1點擊應用程序 附件終端,翻開終端,在終端輸入命令:rootlocalhost root#vi kk.c按i鍵,進入插入狀態(tài)。2輸入以下C程序 #include int main(
3、 ) printf(Hello world!n); return 0;此時可以用Backspace、鍵編輯文本。3保存文件為kk.c 按Esc鍵,進入最后行狀態(tài),在最后行狀態(tài)輸入:wq保存文件,退出vi。4用vi翻開文件kk.c,輸入命令:rootlocalhost root#vi kk.c5修改程序為:#includeint main( ) printf( Hello world!n); printf(*n); return 0;6 按Esc鍵,進入最后行狀態(tài),在最后行狀態(tài)輸入:wq aa.t*t保存文件,如圖1所示,另存為文件aa.t*t并退出vi。圖1 程序編輯環(huán)境任務3gedit的使用
4、,要求能新建、編輯、保存一個文本文件1啟動gedit,點擊應用程序 附件文本編輯器,翻開文本編輯器,如下圖。2輸入以下C程序3保存文件為kk.c4用gedit翻開文件kk.c5修改程序6另存為文件aa.t*t并退出。任務4掌握mkdir、cd命令的操作,要求能建立目錄、進入與退出目錄1翻開終端應用程序 附件終端,在終端用命令新建目錄kkk rootlocalhost root#mkdir kkk2進入目錄kkk,并在kkk目錄下新建目錄kkka,進入kkka目錄 rootlocalhost root#cd kkkrootlocalhost kkk#mkdir kkkarootlocalhost
5、 kkk#cd kkkarootlocalhost kkka#3執(zhí)行命令cd . 命令,然后再進入kkka目錄,輸入命令cd 、cd /etc,觀察其結果。rootlocalhost kkka#cd .rootlocalhost kkk#cd kkkarootlocalhost kkka#cdrootlocalhost root#cd /etcrootlocalhost etc#任務5掌握cp、ls、mv、chmod、rm命令的根本操作,要求能拷貝文件、新建文件、查看文件的權限、修改文件以及刪除文件。1在kkka目錄下建立文件kk.crootlocalhost root#cd /root/kk
6、k/kkkarootlocalhost kkka#vi kk.c2查看文件kk.c的屬性rootlocalhost kkka#ls kk.c -l編輯kk.c文本,并用:wq存盤。3把kk.c更名為aa.c rootlocalhost kkka#mv kk.c aa.c4把文件夾/root/kkk/kkka下的文件aa.c拷貝到/root/kkk目錄下,文件取名為kk.crootlocalhost kkka#cp aa.c /root/kkk/kk.c5修改文件kk.c的權限,使得文件所有者為可讀、可寫、可執(zhí)行,對組內(nèi)人及其他人可讀、不可寫、不可執(zhí)行。rootlocalhost kkka#cd
7、 .rootlocalhost kkk#chmod u=rw*,go=r kk.c此時可用命令ls查看rootlocalhost kkk#ls -l6刪除文件與文件夾刪除kkka文件夾下的文件aa.crootlocalhost kkk#rm kkka/aa.c查看文件夾kkka下否刪除了文件aa.crootlocalhost kkkls kkka/aa.c -l刪除kkka文件夾下rootlocalhost kkk#rmdir kkka查看是否刪除了文件夾rootlocalhost kkkls kkka -l7 新建一個linu*_d目錄,并設置它的權限為666。8在指定的目錄中搜索文件,利用
8、find命令搜索含有通配符的文件*.c。9練習命令:pingnetstatmountifconfig 10在根目錄下用find查找.c文件。11練習檢查磁盤命令fdisk的使用。列出結果中有關/dev/sd的磁盤信息。/sbin/fdisk -l |grep /dev/sd 12設置當前的時間為2013年10月01日10點23分。13在后臺運行命令gedit,并用命令kill殺死gedit的進程。14檢查磁盤,列出目錄/dev/sd的磁盤信息。15查找/usr/sbin及/usr/bin/兩個目錄中所有的C語言程序。16統(tǒng)計當前目錄下t*t文件的總字節(jié)數(shù)。17把ps命令的標準輸出結果輸入給so
9、rt,經(jīng)過排序后結果被保存到pssort.out中。五、實驗結果記錄任務2vi或vim的使用1、輸入vi kk.c創(chuàng)立kk.c文件并用vi編輯,在最后行輸入wq保存退出2、輸入vi kk.c翻開該文件,修改文件,在最后行輸入wq! aa.t*t另存為aa.t*t文件并退出任務3gedit的使用輸入gedit命令翻開gedit編輯器,輸入以下文字,保存為kk.c在保存目錄下輸入gedit kk.c翻開,使用ctrl+h替換,另存為aa.t*t任務4掌握mkdir、cd命令的操作輸入mkdir kkk新建目錄kkkcd kkk進入kkk文件夾mkdir kkka新建目錄kkkacd kkka進入k
10、kka文件夾,結果如圖輸入cd .返回上級目錄,cd kkka再進入kkka文件夾輸入cd進入用戶主目錄,即root文件夾,可使用pwd命令查看當前路徑輸入cd/etc進入etc文件夾任務5掌握cp、ls、mv、chmod、rm命令的根本操作輸入cd/home/brs/work/kkk/kkka 即絕對路徑,可直接進入指定文件夾,vi kk.c建立文件編輯保存后,輸入ls kk.c l查看指定文件詳細屬性輸入mv kk.c aa.c將文件kk.c重命名為aa.c此時mv命令源文件和目標文件在同一文件夾下,故起到重命名作用輸入cp aa.c /home/brs/work/kkk/kk.c將aa.
11、c文件拷貝到kkk下并命名為aa.c輸入chmod u=rw*,go=r kk.c修改文件權限,所有者讀寫運行,組內(nèi)可讀,查看輸入rm kkka/aa.c刪除kkka文件夾下aa.c文件,使用ls命令查看是否刪除輸入rmdir kkka刪除kkka文件夾,再次查看是否刪除新建一個linu*_d目錄,設置權限為使用chmod 666 linu*_d設置其權限為可讀可寫可執(zhí)行輸入find /home/brs/work/kkk -name *.c 在指定目錄搜索.c文件輸入find -name *.c 在根目錄下搜索.c文件輸入ping .baidu.查看與百度連接情況,使用ctrl+c中斷輸入ne
12、tstat顯示各種網(wǎng)絡相關信息,如網(wǎng)絡連接,路由表,接口狀態(tài)輸入ifconfig查看網(wǎng)絡配置信息,如IP地址mount /dev/sda1 /mnt/usb將設備名為sda1的U盤掛載至/mnt/usb使用umount /mnt/usb卸載U盤輸入/sbin/fdisk l|grep /dev/sd列出有關/dev/sd的磁盤信息,此處使用管道命令|將fdisk的輸出作為grep的參數(shù)輸入輸入date -s 20131001 10:23:00 設置系統(tǒng)時間輸入gedit& 在后臺運行gedit,此時輸入ps查看gedit進程PID號為100963,再輸入kill -9 100963完畢進程。輸
13、入find /usr -name *.c 查找usr目錄下所有.c文件10、輸入wc c *.t*t統(tǒng)計當前目錄下t*t文件的總字節(jié)數(shù)輸入ps sort result 把ps命令的標準輸出結果輸入給sort,經(jīng)過排序后結果被保存到result中六、實驗結果分析通過使用shell命令可直接完成文件命令操作,文本文件的編輯,并更改簡單的系統(tǒng)設置七、實驗心得(思考和意見)Linu*的shell命令讓用戶可以使用功能強大的命令,完成一些windows上無法完成或繁瑣的操作,為以后程序的編寫,系統(tǒng)管理提供了便利,我們應熟練掌握這些根底知識。 在學習過程中遇到了不少問題,通過網(wǎng)絡得到了解決。sodu ap
14、t-get命令在使用vi編輯器時,上下左右按鍵變成了ABCD,這是由于vi版本號不同所造成的,此時需要使用sudo apt-get remove vim卸載原版vim,再輸入sodu apt-get install vim安裝最新版本,便可解決問題。此外sudo apt-get upgrade 用于更新已安裝的軟件。su命令以常規(guī)用戶登錄時權限缺乏,在修改系統(tǒng)文件時會遭到拒絕,此時輸入su及root密碼可臨時切換至root用戶,獲取最高命令。rmdir命令只能刪除空文件夾,假設要刪除非空文件夾,應使用rmr開機登陸界面輸入密碼后無法進入桌面,此時按下ctrl+alt+F1可進入tty命令行,實
15、際上F1-F6對應6個本地命令臺,而F7對應圖形界面,修改完成后按下ctrl+alt+F7即可返回圖形界面。Linu*程序設計實驗報告2SHELL程序設計1一、實驗目的1Shell程序設計中變量的使用;2理解通道的概念并初步掌握它的使用方法;3掌握算術操作、字符串操作、邏輯操作、文件操作;4掌握if then fi、if then elif fi、case、while、for等控制語句;5在shell腳本中使用函數(shù); 二、實驗任務與要求1.觀察變量$#,$0,$1,$2,$3,$的含義2.SHELL程序設計中文件與文件夾的判斷3.順序、分支、循環(huán)程序的設計4.菜單程序的編寫三、實驗工具與準備計
16、算機PC機,Linu* Redhat Fedora Core6操作系統(tǒng)四、實驗步驟與操作指導任務1調(diào)試以下shell程序,寫出變量$#,$0,$1,$2,$3,$的含義。#! /bin/bashecho 程序名:$0echo 所有參數(shù): $echo 前三個參數(shù):$1 $2 $3shiftecho 程序名:$0echo 所有參數(shù): $echo 前三個參數(shù):$1 $2 $3shift 3echo 程序名:$0echo 所有參數(shù): $echo 前三個參數(shù):$1 $2 $3e*it 0修改程序,使用變量$#,程序運行時從鍵盤輸入文件名,判斷文件是否存在,如果存在,顯示文件內(nèi)容。提示:read DORF
17、if -d $DORF then ls $DORF elif -f $DORF任務2編寫一個shell程序,此程序的功能是:顯示root下的文件信息,然后建立一個kk的文件夾,在此文件夾下新建一個文件aa,修改此文件的權限為可執(zhí)行。提示:進入root目錄:cd /root顯示root目錄下的文件信息:ls l新建文件夾kk:mkdir kk進入root/kk目錄:cd kk新建一個文件aa:vi aa #編輯完成后需手工保存修改aa文件的權限為可執(zhí)行:chmod +* aa回到root目錄:cd /root請修改程序,所建立的目錄名從鍵盤輸入,把/root下的所有文件信息保存在aa文件中。任務
18、3調(diào)試以下shell程序,此程序的功能是:利用內(nèi)部變量和位置參數(shù)編寫一個名為test2的簡單刪除程序,如刪除的文件名為a,則在終端輸入的命令為 test a。提示:除命令外至少還有一個位置參數(shù),即$#不能為0,刪除的文件為$1。(1)用vi編輯程序rootlocalhost bin#vi test2#!/bin/sh if test $# -eq 0 then echo Please specify a file! else gzip $1 /先對文件進展壓縮 mv $1.gz $HOME/dustbin /移動到回收站 echo File $1 is deleted !fi(2)請修改程序,
19、查看回收站中的文件,從鍵盤輸入回收站中的*一文件,把此文件恢復到/home目錄下。3刪除垃圾箱中的所有文件。任務4調(diào)試以下程序,程序的主要思想是用while循環(huán)求1到100的和。 (1)用gedit編輯腳本程序test12rootlocalhost bin#gedit test12 total=0num=0 while(num替換-復原IFSBAK=$IFS (備份原來的值)- IFS=,(替換) - IFS=$IFSBAK 復原7、使用bc計算器時,用scale=n來準確到n位小數(shù) 在shell程序中使用a=echoscale=n;*+y|bc來進展運算七、實驗心得(思考和意見)1、內(nèi)部參數(shù)
20、在shell編程中十分有用,應熟練掌握$0 :程序所在的路徑$# :傳遞給程序的總的參數(shù)數(shù)目$ :shell程序在shell中退出的情況,正常退出返回0,反之為非0值$* :傳遞給程序的所有參數(shù)組成的字符串賦值時等號左右無空格使用$(mand)格式進展命令替換,如echo $(date)將輸出Thu Jul 23 17:10:38 CST 2015Linu*程序設計實驗報告3SHELL程序設計2一、實驗目的1提高Shell程序編程的技巧;2提升綜合shell編程能力。二、實驗任務與要求1.菜單的實現(xiàn)2.遍歷所有以該目錄為祖先的文件3.分支與循環(huán)、隨機數(shù)在游戲程序中的應用4.定時檢查存儲空間文件
21、的變化5.消息框程序設計6.菜單界面程序設計三、實驗工具與準備計算機PC機,Linu* Redhat Fedora Core6操作系統(tǒng)實驗步驟與操作指導任務1.編寫以下程序。程序的功能是要實現(xiàn)如下菜單所表示的功能。 請輸入您要清空的文件類型 1文件夾 2其他文件 3所有文件 0沒想好,先退出任務2.調(diào)試以下shell程序。補充完整以下Shell程序,要求輸入一個目錄名,函數(shù)list的功能是遍歷所有以該目錄為祖先的文件,大致實現(xiàn)命令ls -R的功能。#!/bin/shlist()cd $1ls -lfor i in $(ls $1)do if -d $i then directory=$1/$i
22、 echo The directory $directory is a subdirectory of $1, which includes: list $directory cd $1 fi done 任務3.調(diào)試以下shell程序,這是一個小游戲,閱讀程序,寫出這個游戲的玩法。#!/bin/bashfor i in $( seq 1 54 ) #初始化牌do ok$i=1donema*=0 #初始化贏家for i in $(seq 1 4 ) #游戲開場do echo Player $i #玩家i 的回合 a=$(RANDOM%53+1) #抽牌 while $ok$a -eq 0 ; d
23、o a=$(RANDOM%53+1) done ok$a=0 if $a -gt $ma* ; thenma*=$a num=$i fi HuaSe=$(a%4) #生成花色case $HuaSe in 0)HS=C; #草花 1)HS=D; #方塊 2)HS=H; #紅心 3)HS=S; #黑心 esac Da*iao=$(a/4+1) #生成牌值case $Da*iao in 2|3|4|5|6|7|8|9|10) echo $HS $Da*iao;11)echo $HS J; 12)echo $HS Q; 13)echo $HS K; 1 )echo $HS A; 14)echo sma
24、ll JOKE ; #小王 15)echo big JOKE ; #大王esac read lldoneecho Player $num win ! #游戲結果任務4.編寫以下shell程序。編寫一個程序,每隔5分鐘檢查一下當前用戶假設用戶名為liujh是否有新的,假設有則提示用戶。提示題目的關鍵問題是獲取5分鐘前后此文件夾的存儲容量,如果箱中存儲容量發(fā)生變化,則可判斷有新到達。提示關鍵語句: count1=ls -l /var/mail/liujh|awk print $5 echo $count1 sleep 300 #隔5分鐘檢測一次 count2=ls -l /var/mail/liu
25、jh|awk print $5 echo $count2 if $count1 -eq $count2 任務5.調(diào)試以下程序,程序調(diào)試后把此程序改寫為游戲菜單控制程序。#! /bin/shdialog -title Start -msgbo*dialog -title Wele to the Start Menu.dialog -title Confirm -yesno Do you want to enter the Menu 9 18if $ != 0; then dialog -infobo* Wele! sleep 2 dialog -clear e*it 0fidialog -men
26、u MENU 12 24 3 1 CO Player 2 Radio 3 Sound Control 2_1.t*tM_O = $(cat _1.t*t)if $M_O = 1 ; then !gnome-cdelif $M_O = 2 ; then !gnome-sound-recorderelse !gnome-volume-controlfie*it 0任務6.調(diào)試以下程序。程序功能是設計了一個簡單的調(diào)查問卷菜單界面,調(diào)查學生一些個人信息。此程序運用了GUI圖形化界面、使用了條件語句,case語句,使用戶可以對菜單進展選擇,并將選擇結果保存在臨時文件中,便于進一步操作計算。程序的源代碼為
27、:#!/bin/shgdialog -title Questionnaire -yesno Will you participate in this survey 9 18if( $ != 0 ); then gdialog -infobo* Thank you sleep 1 gdialog -clear e*it 0figdialog -title Questionnaire -msgbo* This is a survey about your personal information 9 18gdialog -title Questionnaire -inputbo* Enter yo
28、ur name 9 18 2name.t*t_name=$(cat name.t*t)gdialog -menu $_name, what is your major 9 18 3 1 Liberal Art 2 Science3 puter Science 2choice.t*t_choice=$(cat choice.t*t)case $_choice in 1) gdialog -title Questionnaire -msgbo* Good choice 9 18 ; 2) gdialog -title Questionnaire -msgbo* E*cellent 9 18 ; *
29、) gdialog -title Questionnaire -checklist Choose the lanuage you learned 9 18 5 1 C off 2 C+ off 3 Java off 4 Ruby off 5 Delpi off;esacsleep 1gdialog -cleare*it 0問題1分析整個程序的功能層次圖;2在程序中提取5條新語句,或您認為有用的語句,分析它所對應的功能;3仿照程序,請編寫類似功能屬于自己開發(fā)的小程序。實驗結果記錄實驗結果分析七、實驗心得(思考和意見)Linu*程序設計實驗報告4Linu*系統(tǒng)C開發(fā)工具一、實驗目的1掌握linu*
30、環(huán)境下C程序的編輯、編譯、運行等操作;2掌握多文件系統(tǒng)的編譯及連接庫存的生成、應用;3初步掌握gdb調(diào)度方法;4初步掌握makefile工程文件的編寫與使用;5掌握系統(tǒng)函數(shù)的應用。二、實驗任務與要求1.函數(shù)庫的創(chuàng)立;2.makefile工程文件的編寫;3.應用gdb調(diào)試程序;4.使用GCC編譯時連接庫的使用。三、實驗工具與準備計算機PC機,Linu* Redhat Fedora Core6操作系統(tǒng)四、實驗步驟與操作指導任務1.調(diào)試以下程序。程序通過創(chuàng)立一個小型函數(shù)庫,它包含兩個函數(shù),然后在一個例如程序中調(diào)用其中一個函數(shù)。這兩個函數(shù)分別是pro1和pro2。按下面步驟生成函數(shù)庫及測試函數(shù)庫。步驟
31、1 為兩個函數(shù)分別創(chuàng)立各自的源文件將它們分別命名為pro1.c和pro2.c。rootlocalhost root# cat pro1.c#include void pro1(int arg)printf(hello:%dn,arg) ;rootlocalhost root# cat pro2.c#include void pro2(char *arg)printf(您好:%sn,arg) ;步驟2 分別編譯這兩個函數(shù),產(chǎn)生要包含在庫文件中的目標文件。這通過調(diào)用帶有-c選項的gcc編譯器來實現(xiàn),-c選項的作用是阻止編譯器創(chuàng)立一個完整的程序,gcc將把源程序編譯成目標程序,文件名為以.o結尾。如
32、果此時試圖創(chuàng)立一個完整的程序?qū)⒉粫晒?,因為還未定義main函數(shù)。rootlocalhost root# gcc -c pro1.c pro2.crootlocalhost root# ls *.opro1.o pro2.o步驟3 現(xiàn)在編寫一個調(diào)用pro2函數(shù)的程序。首先,為庫文件創(chuàng)立一個頭文件lib.h。這個頭文件將聲明庫文件中的函數(shù),它應該被所有希望使用庫文件的應用程序所包含。rootlocalhost root# cat lib.h/*lib.h:pro1.c,pro2.c*/void pro1(int);void pro2(char *);步驟4主程序program.c非常簡單。它包含
33、庫的頭文件并且調(diào)用庫中的一個函數(shù)。rootlocalhost root# cat program.c#include lib.hint main()pro2(Linu* world);e*it(0);步驟5 現(xiàn)在,來編譯并測試這個程序。暫時為編譯器顯式指定目標文件,然后要求編譯器編譯的文件并將其與預先編譯好的目標模塊pro2.o。rootlocalhost root# gcc -c program.crootlocalhost root# gcc -o program program.o pro2.orootlocalhost root# ./program您好:Linu* world步驟6
34、現(xiàn)在,創(chuàng)立并使用一個庫文件。用ar程序創(chuàng)立一個歸檔文件并將目標文件添加進去。這個程序之所以稱為ar,是因為它將假設干單獨的文件歸并到一個大的文件中以創(chuàng)立歸檔文件。注意,也可以用ar程序來創(chuàng)立任何類型文件的歸檔文件。rootlocalhost root# ar crv libfoo.a pro1.o pro2.o函數(shù)庫現(xiàn)在即可使用了。可以在編譯器命令行的文件列表中添加該庫文件以創(chuàng)立程序,如下所示:rootlocalhost root# gcc -o program program.o libfoo.arootlocalhost root# ./program您好:Linu* world也可以用-
35、l選項來訪問函數(shù)庫,但是因為其未保存在標準位置,所以必須用-L選項來指示gcc在何處可以找到它,如下所示:rootlocalhost root#gcc -o program program.o -L. -lfoo-L.選項指示編譯器在當前目錄.中查找函數(shù)庫。-lfoo選項指示編譯器使用名為libfoo.a的函數(shù)庫或者名為libfoo.so的共享庫,如果它存在的話。要查看目標文件、函數(shù)庫或可執(zhí)行文件里包含的函數(shù), 可使用nm命令。如果查看program和libfoo.a,就會看到函數(shù)庫libfoo.a中包含pro1和pro2兩個函數(shù),而 program里只包含函數(shù)pro2。創(chuàng)立程序時,它只包含函
36、數(shù)庫中它實際需要的函數(shù)。雖然程序中的頭文件包含函數(shù)庫中所有函數(shù)的聲明,但這并不將整個函數(shù)庫包含在最終的程序中。問題:1按照給出的步驟1-6調(diào)試程序;2編寫兩個函數(shù),其中一個求數(shù)組中的最大值與最小值,另一函數(shù)求*一數(shù)的個數(shù)及main函數(shù),建立一個庫,對程序進展調(diào)試;3試寫出問題2中的makefile工程文件。任務2.調(diào)試以下程序。#includeint main()char passwd13;char *key;char slat2;key= getpass(Input First Password:);slat0=key0;slat1=key1;strcpy(passwd,crypt(key
37、slat);key=getpass(Input Second Password:);slat0=passwd0;slat1=passwd1;printf(After crypt(),1st passwd :%sn,passwd);printf(After crypt(),2nd passwd:%s n,crypt(key slat);請寫出調(diào)試命令。任務3.程序設計題。在home/kk目錄下編寫一個a.h庫文件,在root目錄下編寫一個含main函數(shù)的主程序,在main函數(shù)中調(diào)用在a.h中的一個函數(shù)。任務4. 調(diào)試以下程序。調(diào)試目的是實現(xiàn)多文件編譯。文件構造是: 1bubble.h 存放函數(shù)b
38、ubble的聲明。 2bubble.c 存放函數(shù)bubble的實現(xiàn)。 3main.c 存放main函數(shù)實現(xiàn),其中調(diào)用了bubble函數(shù)。 4補充完整makefile文件其中各文件中的代碼如下:bubble.h#ifndef _BUBBLE_H_#define _BUBBLE_H_void bubble(int* a, int n);#endif / _BUBBLE_H_bubble.c#include bubble.hvoid bubble(int* a, int n)int i, j, t;for(i = 1; i n; i+)for(j = 0; j aj + 1)t = aj;aj =
39、aj + 1;aj + 1 = t;main.c#include #include bubble.h#define COUNT 10int main(void)int i;int aCOUNT = 3, 5, 4, 8, 9, 6, 2, 1, 7, 0;bubble(a, COUNT);for(i = 0; i COUNT; i+)printf(%d , ai);printf(n);return 0;MakefileCC = gccFLAGS = -Wall -O2main: main.o bubble.o請補充完整makefile文件任務5. 程序調(diào)試。程序的功能是輸入兩個整數(shù),輸出兩個整
40、數(shù)間的所有自然數(shù)。步驟1 設計編輯源程序代碼。rootlocalhost root#vim 4-3.c程序代碼如下:#include int num(int *, int y); int main() int a1,a2,min_int; printf(請輸入第一個整數(shù):);scanf(%d,&a1); printf(請輸入第二個整數(shù):);scanf(%d,&a2); num(a1,a2); int num(int *, int y) int temp,i; if (*y)temp=*;*=y;y=temp;for(i=*;i=y;i+) printf(%5d,i);printf(n);ret
41、urn 0;步驟2 用gcc編譯程序。在編譯的時候要加上選項-g。這樣編譯出的可執(zhí)行代碼中才包含調(diào)試信息,否則之后gdb無法載入該可執(zhí)行文件,請寫出編譯命令。rootlocalhost root#步驟3 進入gdb調(diào)試環(huán)境。gdb進展調(diào)試的是可執(zhí)行文件,因此要調(diào)試的是4-3而不是4-3.c,輸入如下,請輸入gdb的調(diào)試命令:rootlocalhost root#回車后就進入了gdb調(diào)試模式。GNU gdb Red Hat Linu* (5.3post-0.20021129.18rh)Copyright 2003 Free Software Foundation, Inc.GDB is free
42、 software, covered by the GNU General Public License, and you arewele to change it and/or distribute copies of it under certain conditions.Type show copying to see the conditions.There is absolutely no warranty for GDB. Type show warranty for details.This GDB was configured as i386-redhat-linu*-gnu.
43、(gdb)圖4.1 進入gdb調(diào)試環(huán)境可以看到,在gdb的啟動畫面中有gdb的版本號、使用的庫文件等信息,在gdb的調(diào)試環(huán)境中,提示符是(gdb)。步驟4 用gdb調(diào)試程序。1查看源文件在gdb中輸入l(list)就可以查看程序源代碼,一次顯示10行??梢钥闯?,gdb列出的源代碼中明確地給出了對應的行號,這樣可以大大方便代碼的定位。2設置斷點設置斷點在調(diào)試程序時是一個非常重要的手段,它可以使程序到一定位置暫停運行。軟件工程師可以在斷點處查看變量的值、堆棧情況等,從而找出代碼的問題所在。在gdb中設置斷點命令是b(break),后面跟行號或者函數(shù)名。不指定具體行號的斷點設置在b(break)后面
44、跟函數(shù)名。本例可以輸入break num。3查看斷點信息設置完斷點后,可以用命令info b(info break)查看斷點信息。4運行程序接下來可以運行程序,可以輸入r(run)開場運行程序。5查看與設置變量值調(diào)試程序重要手段就是查看斷點處的變量值。程序運行到斷點處會自動暫停,此時輸入p變量名可查看指定變量的值。調(diào)試程序時,假設需要修改變量值,可程序運行到斷點處時,輸入set 變量=設定值,例如,給變量a2 賦值100,輸入set a2=100。gdb在顯示變量值時都會在對應值前加$n標記,它是當前變量值的引用標記,以后想再引用此變量,可以直接使用$n,提高了調(diào)試效率。6單步運行很多情況下,
45、調(diào)試的時候要單步運行程序。在斷點處輸入 n(ne*t)或者s(step)可單步運行。它們之間的區(qū)別在于:假設有函數(shù),調(diào)用時,s會進入該函數(shù),而n不會進入該函數(shù)。7繼續(xù)運行程序在查看完變量或堆棧情況后可以輸入c(continue)命令恢復程序的正常運行,把剩余的程序執(zhí)行完,并顯示執(zhí)行結果。8退出gdb環(huán)境退出gdb環(huán)境只要輸入q(quit)命令,回車后退出gdb環(huán)境。五、實驗結果記錄六、實驗結果分析七、實驗心得(思考和意見)Linu*程序設計實驗報告5Linu*環(huán)境系統(tǒng)函數(shù)的應用一、實驗目的1掌握隨機數(shù)函數(shù)的使用方法;2掌握構造體struct timeval的成員tv_sec與tv_usec的應
46、用;3掌握時間函數(shù)time、localtime、gettimeofday的使用;4. 掌握系統(tǒng)函數(shù)system、tcgetattr等的應用。二、實驗任務與要求1. 隨機數(shù)函數(shù)的使用;2. 猜數(shù)游戲的程序;3. 構造體struct timeval的成員tv_sec與tv_usec的應用;4. 時間函數(shù)在簡單記事本程序中的應用;5. 時間函數(shù)在計時器,有暫停、查看、重置程序設計設計中的應用。三、實驗工具與準備計算機PC機,Linu* Redhat Fedora Core6操作系統(tǒng)。四、實驗步驟與操作指導任務1.調(diào)試以下程序。產(chǎn)生10個介于1到10之間的隨機數(shù)值。提示函數(shù)rand( )會返回一個0
47、RAND_MA*其值為2147483647之間的隨機值。產(chǎn)生一個大于等于0、小于1的數(shù),此數(shù)可表示為:rand()/(RAND_MA*+1.0)。rootlocalhost root#vim 5-1.c程序代碼如下:#include #include stdio.hint main() int i,j; srand(int)time(0); for(i=0;i10;i+) j=1+(int)(10.0*rand()/(RAND_MA*+1.0);printf( %d ,j); printf(n);問題論述語句srand(int)time(0);的功能;修改程序,產(chǎn)生50個100-1000之間的
48、隨機整數(shù);任務2程序設計。編寫一個猜數(shù)游戲的程序,先產(chǎn)生一個隨機數(shù),要求被試輸入一個數(shù),計算時機提示猜大了,猜小了或恭喜您猜中了,直到猜中,退出程序。修改程序,限定猜數(shù)的次數(shù)作為難度系數(shù),除了提示猜大了,猜小了或恭喜您猜中了外,還有次數(shù)已到,猜數(shù)失敗。任務3調(diào)試以下程序。應用構造體struct timeval的成員tv_sec與tv_usec顯示系統(tǒng)時間的秒與微秒,并測試輸出成員tv_sec與tv_usec這段程序所用時間。提示程序設計的步驟為用函數(shù)gettimeofday讀取系統(tǒng)時間,顯示系統(tǒng)中的秒與微妙,顯示Greenwich的時間差,測試系統(tǒng)時間tvz,計算時間差。操作步驟步驟1 編輯源
49、程序代碼。rootlocalhost root#vim 5-2.c程序代碼如下: #include#includeint main()struct timeval tv1,tv2;struct timezone tz;gettimeofday(&tv1,&tz);printf(tv_sec; %dn, tv1.tv_sec) ;printf(tv_usec; %dn,tv1.tv_usec);gettimeofday(&tv2,&tz);printf(tv2_usec-tv1_usec; %dn,tv2.tv_usec-tv1.tv_usec);return 0;問題1修改以上程序,分別編寫一
50、個有參數(shù)的函數(shù)及宏定義,研究它們的調(diào)用效率問題;2 編寫一個程序,如查找或排序效率問題,查找算法有順序、二分查找等等。任務4.編寫程序。編寫一個簡單的記事本,其功能是實現(xiàn)輸入任務及任務截止時間,通過系統(tǒng)時間和日期函數(shù)的使用,可計算輸出任務的剩余時間。提示:printf(請輸入任務截止時間,分別輸入日期131,小時023、分、秒對應的數(shù)字n);scanf(%d%d%d%d, &i,&j,&k,&l);為對應的輸入時間,即余下時間可以從以下語句中得到。time (&timep);p=localtime(&timep);a=(i-p-tm_mday)*24*3600+( j-p-tm_hour)*3
51、600+ (k-p-tm_min)*60+ l-p-tm_sec;在余下時間為0時可以考慮響鈴及顯示任務。任務5調(diào)試以下程序。#include#include#include#include#includeint mygetch() /實時返回鍵盤被按下的值struct termios oldt, newt;int ch;tcgetattr(STDIN_FILENO,&oldt);newt = oldt;newt.c_lflag &= (ICANON|ECHO);tcsetattr(STDIN_FILENO,TCSANOW,&newt);ch = getchar();tcsetattr(STD
52、IN_FILENO,TCSANOW,&oldt);return ch;int main()char c, v;int i, rn = 0, n;struct timeval tv1, tv2;struct timezone tz;double sum = 0, prob = 0;srand(unsigned)time(NULL);printf(Please input the number of tests:);scanf(%d,&n);getchar();while(n) for(i = 0; i n; i+) c = (char)(1.0+(int)(25.0*rand()/RAND_MA
53、*)+65.0); printf(0335;5H%c,c); sleep(0.5); gettimeofday(&tv1,&tz); system(clear); v = mygetch(); gettimeofday(&tv2,&tz); if(v = c) rn+;sum+=(tv2.tv_sec-tv1.tv_sec)+(tv2.tv_usec-tv1.tv_usec)/1000000.0; prob = rn / n;system(clear); if(prob = 0)/全都按錯時鼓勵下并提醒是不是忘記翻開大寫開關 printf(sorry, you score 0, please
54、try again, maybe you forgot to switch the Caps Lock onn);else printf(the accuracy is %lf, and the average time of response is %lf secsn,prob,sum/rn);printf(Please input the number of tests(input 0 to quit):);scanf(%d,&n);getchar();rn = 0;sum = 0; /把rn和sum清零問題1調(diào)試程序,分析并畫出程序執(zhí)行的流程圖;2 修改程序,編寫界面更為優(yōu)美的測試程序。
55、任務6.調(diào)試以下程序。程序的功能是計時器,有暫停、查看、重置等功能#include#include#include#includeint main()long int begin,sec,stop;struct timeval tv1, tv2;struct timezone tz;char tmp;begin=0;stop=0;sec=0;system(clear);printf(計時器程序單位sn);printf(輸入b(begin)計時器開場計時n);printf(輸入w(watch)查看已經(jīng)累計時間n);printf(輸入r(rest)重新開場計時n);printf(輸入s(stop)
56、暫停計時器n);printf(輸入e(end)完畢計時器n);while(1)scanf(%c,&tmp);if(tmp=b)if(begin=1&stop=0) printf(計時器已經(jīng)啟動!n);if(begin=0&stop=0) printf(計時器啟動n);gettimeofday(&tv1,&tz);sec=0;begin=1;if(stop=1)gettimeofday(&tv1,&tz);stop=0;printf(暫停完畢!n);if(tmp=w)if(stop=0)gettimeofday(&tv2,&tz);printf(已經(jīng)計時%ld秒n,sec+tv2.tv_sec-
57、tv1.tv_sec);if(stop=1) printf(已經(jīng)計時%ld秒n,sec);if(tmp=s)if(stop=1)printf(計時已經(jīng)暫停!n);if(stop=0)gettimeofday(&tv2,&tz);sec=sec+tv2.tv_sec-tv1.tv_sec;printf(計時暫停,已經(jīng)計時%ld秒n,sec);stop=1;if(tmp=r)gettimeofday(&tv2,&tz);printf(已經(jīng)計時%ld秒n,sec+tv2.tv_sec-tv1.tv_sec);printf(計時器在5秒后被重置!n);sleep(5);begin=0;sec=0;st
58、op=0;system(clear);printf(計時器程序單位sn);printf(輸入b(begin)計時器開場計時n);printf(輸入w(watch)查看已經(jīng)累計時間n);printf(輸入r(rest)重新開場計時n);printf(輸入s(stop)暫停計時器n);printf(輸入e(end)完畢計時器n);if(tmp=e) break;return 0;五、實驗結果記錄六、實驗結果分析七、實驗心得(思考和意見)Linu*程序設計實驗報告6Linu*文件I/O操作1一、實驗目的1掌握函數(shù)stat中文件屬性的應用。2掌握系統(tǒng)函數(shù)system、opendir、scandir的使
59、用。3初步掌握struct dirent 的構造體變量的使用方法。4掌握文件阻塞與非阻塞I/O的操作。5. 掌握文件屬性的判斷。二、實驗任務與要求1.測試文件S_IRUSR、S_IWUSR、S_IRGRP、S_IROTH屬性。2.應用system函數(shù)對的網(wǎng)絡連通情況進展測試。3.應用readdir函數(shù)顯示文件和子目錄。4.文件屬性的判斷。5.阻塞I/O文件操作的程序設計。三、實驗工具與準備計算機PC機,Linu* Redhat Fedora Core6操作系統(tǒng)四、實驗步驟與操作指導任務1.程序設計。設計程序應用system函數(shù)建立/home/liu文件,應用chmod函數(shù)使文件liu具有S_I
60、RUSR、S_IWUSR、S_IRGRP、S_IROTH屬性,最后應用函數(shù)stat獲取文件的大小與建立的時間。 任務2.程序設計。編寫程序在程序中能夠?qū)Φ木W(wǎng)絡連通情況進展測試。任務3.調(diào)試以下程序。程序的功能是要求打印系統(tǒng)目錄/etc/rc.d下所有的文件和子目錄的名字。程序代碼如下: #include#include#include#includeint main()DIR * dir;struct dirent * ptr;dir=opendir(/etc/rc.d);printf(/etc/rc.d目錄中文件或子目錄有:n);while(ptr = readdir(dir)!=NULL)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度物聯(lián)網(wǎng)信息咨詢服務合同范本(年度)3篇
- 南京旅游職業(yè)學院《高等代數(shù)三節(jié)連上》2023-2024學年第一學期期末試卷
- 2024版工程項目合作委托合同典范版B版
- 2025年度網(wǎng)約車司機與平臺合作租車合同模板3篇
- 二零二五年度特種配電房土建安裝與電氣試驗合同3篇
- 2024年消防宣傳總結(33篇)
- 實戰(zhàn)彩寶培訓
- 家庭財務知識培訓
- 太空艙美甲護理教學
- 工程部培訓課件
- 中藥灌腸方法
- 醫(yī)保統(tǒng)計信息管理制度
- 山東師范大學《計算機網(wǎng)絡》期末考試復習題及參考答案
- 2024湖南湘電集團有限公司招聘筆試參考題庫附帶答案詳解
- 運籌學講義-運籌學完整講義
- 5.40.49火災自動報警系統(tǒng)火災顯示盤調(diào)試、檢測質(zhì)量標準和檢驗方法(完)
- 代理商工作總結
- 戰(zhàn)略管理徐飛版
- 2023浙江省杭州市中考語文真題試卷和答案
- 銀行防詐騙知識宣傳
- 【實戰(zhàn)篇】華為IPD流程的應用案例
評論
0/150
提交評論