



版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
實驗ーVC的使用ー、實驗?zāi)康牧私獠⒄莆粘绦蛟O(shè)計所必須的計算機基本操作技能了解并熟悉VC開發(fā)環(huán)境了解并掌握VC開發(fā)環(huán)境下的C程序的編譯、連接與運行方法了解并掌握查找與排除程序編譯錯誤的方法了解不同類型的程序錯誤二、實驗環(huán)境個人計算機一臺,PHI500(或同等性能)以上CPU,128MB以上內(nèi)存,500MB以上硬盤剩余空間,SVGA彩色顯卡。WindowsXP操作系統(tǒng)MicrosoftVisualC++6.0(中文/英文)版三、實驗內(nèi)容VisualC++開發(fā)環(huán)境介紹VisualC++是ー個功能強大的可視化軟件開發(fā)工具。自從1993年,微軟公司(Microsoft)推出VisualC++1.0后,隨著其新版本的不斷問世,VisualC++已成為專業(yè)程序員進行軟件開發(fā)的首選工具。雖然微軟公司推出了VisualC++.NET(VisualC++7.0),但它的應(yīng)用的很大的局限性,只適用于Windows200〇、WindowsXP和WindowsNT4.0。所以實際中,更多的是以VisualC++6.0為平臺。VisualC++6.0不僅是ー個C\C++編譯器,而且是ー個基于Windows操作系統(tǒng)的可視化集成開發(fā)環(huán)境(integrateddevelopmentenvironment,IDE)〇VisualC++6.0由許多組件組成,包括編輯器、調(diào)試器以及程序向?qū)ppWizard、類向?qū)lassWizard等開發(fā)工具。這些組件通過ー個名為DeveloperStudio的組件集成為和諧的開發(fā)環(huán)境。VisualC++為用戶開發(fā)C程序提供了一個集成環(huán)境,這個集成環(huán)境包括:源程序的輸入和
編輯,源程序的編譯和連接,程序運行時的調(diào)試和跟蹤,項目的自動管理,為程序的開發(fā)提供各種工具,并具有窗ロ管理和聯(lián)機幫助等功能。VisualC++6.0開發(fā)環(huán)境的界面如圖1所示。標題欄程序編輯區(qū) 1標題欄程序編輯區(qū) 1 圖1VC開發(fā)環(huán)境VC環(huán)境下的C程序開發(fā)盡管VC的功能很強大,但二級考試只是將其作為ー個可視化的C編譯器來使用,因此要求考生掌握的操作很簡單。啟動VC在計算機安裝VC開發(fā)環(huán)境后,桌面都會出現(xiàn)ー個VC的圖標,如圖2所示,雙擊該圖標就可以啟動VC。有的計算機上顯示的名稱是“VisualC++6.0”或“Micros。代VisualC++”等,但圖標都是ー樣的。也可以在“開始”菜單的“所有程序”子菜單中,找到相應(yīng)的啟動啟動項。圖2VC圖標
創(chuàng)建一個C源程序文件啟動VC后,單擊“菜單欄”上的“文件菜單”,彈出ー個下拉菜單,單擊其中的‘‘新建”選項,如圖3所示。祠新建?Ctrl+NII0¢祠新建?Ctrl+NII0¢打開@)..關(guān)閉?Ctrl+0打開工作空間里)…保存工作空間國)HfflT作お后(V>居口圍杏聃▼蛇廖ゴ ニ!’く,」二文件電)編輯重)查看9插入Q)工程9組建⑥工具建)窗口也)幫助也)圖3創(chuàng)建C源程序單擊“新建”選項后‘會彈出''新建”對話框,如圖4所示。選擇上方的"文件”選項卡,選中"C++SourceFile"選項。然后再右方的“文件名れ)”ー欄中為程序起個名字,可以是任意字母和數(shù)字的組合,但其中不能有空格,并且最后一定要以“.c”結(jié)尾。然后在“位置(0”ー欄中為程序選擇ー個合適的位置存放,也可以單擊圖4中劃圈的按鈕,會彈出ー個對話框,讓用戶選擇存放的位置。我們現(xiàn)在把這個程序命名為“example-l.c”,放在D盤下的program文件夾中。圖4“新建”對話框編寫程序在單擊圖4中的“確定”按鈕后,VC就會在D盤program文件夾下創(chuàng)建一個名為"example-l.c"的C源程序,并在“程序編輯區(qū)”中打開它,用戶可以在其中輸入程序,如
圖5所示。圖5中是ー個很簡單的小程序,只有一條printfO函數(shù)調(diào)用語句,其功能是向屏幕上輸出一行信息“Helloworld!"〇圖5編寫程序C源程序的編譯、連接與運行C源程序文件是不能直接被計算機所執(zhí)行的,它需要通過編譯(Compile)和連接(Link)兩個步驟,才能生成能被計算機直接執(zhí)行的“可執(zhí)行文件”。整個過程如圖6所示,請牢記這張圖。圖6C程序的編譯連接過程C源程序文件是文本文件,它的后綴名為“.c”,它不能被計算機直接執(zhí)行;經(jīng)過編譯后,生成目標文件,它是二進制文件,后綴名為"Qbj”,它也不能被計算機直接執(zhí)行;再經(jīng)過連接(有的書籍稱為鏈接),生成可執(zhí)行文件,它是二進制文件,后綴名為“.exe”,它可以被計算機直接執(zhí)行。注意:C程序的編譯連接過程一定要熟記,包括每種文件的類型、后綴名、能否被計算機直接執(zhí)行,筆試常會考查該知識點。因此,在編寫完C源程序后,首先要做的就是編譯。編譯實際上就是進行語法檢查,以保證C源程序完全符合C語言的語法,沒有語法錯誤。在VC開發(fā)環(huán)境下,編譯C源程序的方法是單擊“菜單欄”的“組建”選項,彈出一個下拉菜單,單擊其中的“編譯”選項,如圖7所示?;蛘咭部梢詥螕魣D7中劃圈的按鈕,那是“編譯”的快捷鍵。
圖7C程序的編譯隨后,圖7C程序的編譯隨后,VC會彈出ー個小對話框,如圖8所示,不用去理會它的具體含義,直接單擊“是”。圖8C程序的編譯注意:如果在VC的使用過程中遇到類似的彈出小對話框,都不用去理會它的具體含義,直接單擊“是”即可。VC隨即開始對C源程序進行語法檢查,其結(jié)果在VC底部的“編譯結(jié)果輸出區(qū)”中顯示,如圖9所示。example-1.obj如圖9所示。example-1.obj-0error(s),0warning(s),;ClassV...|s]FileView-Tk組建ス調(diào)試、在文件1中查找、在文件2中查找ス結(jié)果スSQLDebugging/行6,列2圖9編譯結(jié)果其中,“error(s)”代表語法錯誤,"waming(s)”代表警告。圖9中的結(jié)果顯示,語法錯誤(erroKs))與警告(warning(s))的數(shù)量都為0,也就意味著程序編譯成功。在實際編程當中,語法錯誤(error(s))是絕対不允許存在,哪怕存在一—個語法錯誤(error(s)),程序都無法進入下一步的連接和運行,也就是編譯失敗。因此“error(s)”前面的錯誤必須是“〇”,才能進入下一步的連接和運行,否則就要改成程序中的錯誤,并重新進行編譯,直到編譯成功。而對于警告(waming(s)),則可以不必理會,因為造成警告(warning(s))的原因比較復(fù)雜,并
不一定是因為語法錯誤。需要特別指出的是,編譯成功只能保證程序在語法上是正確的,并不能保證程序是無錯的。例如,“奧巴馬是德國總理”,這句話在語法上是正確的,但在邏輯上卻是錯誤。編譯器無法檢査出程序在邏輯上的錯誤。由圖6可知,編譯結(jié)束后需要進行連接,然后才能運行。但在VC當中,這兩部可以合并一步。在編譯成功后,“組建”菜單中的“執(zhí)行”選項就會出現(xiàn),直接單擊,VC就會連續(xù)進行連接和執(zhí)行兩步操作,如圖10所示?;蛘咭部梢詥螕魣D10中劃圈的按鈕(紅色驚嘆號),那是“執(zhí)行”的快捷鍵。文件つ編輯包)査看出插入晝)工程?組建?工具①窗那是“執(zhí)行”的快捷鍵。文件つ編輯包)査看出插入晝)工程?組建?工具①窗口d)幫助⑩?編譯[c]Ctrl+F7娼建[?x<]FT田全部重建批姐建港除圖け。0 電亀つ▼(Globals) globalmemi移除工程配置國)配置配置文件開始調(diào)試Q)遠程連接調(diào)試程序I執(zhí)行【exaaple-1exe]Ctrl+F5コ’,I二]大,一學(xué)aソ①可圖ioc程序的執(zhí)行程序在運行后,VC會彈出ー個黑色的DOS界面,來顯示程序的運行結(jié)果,如圖1I所示。圖11圖11程序的運行結(jié)果我們看到,運行界面上出現(xiàn)了兩行信息,其中第一行是‘'Hell。world!”,這是由程序中的printfO語句輸出的,正是“example-l.c”這個程序的運行結(jié)果。而第二行"Pressanykeytocontinue”,它是由VC自動輸出的提示信息,不屬于程序的運行結(jié)果。事實上,任何程序在運行結(jié)束后,VC都會在最后加上這樣一行提示信息。我們可以把它作為程序運行結(jié)束的標志,只有當最后一行出現(xiàn)了“Pressanykeytocontinue"i才能證明程序正常運行結(jié)束了。否則,程序可能在等待用戶輸入數(shù)據(jù),或者陷入了死循環(huán)。關(guān)用工作空間在完成一個程序的編寫、編譯、連接和運行后,如果要編寫和運行另ー個程序,那么要把前?個程序的編輯區(qū)及其工作空間關(guān)閉。最簡單的方法就是直接將整個VC關(guān)閉,然后重新啟
動。也可以單擊“菜單欄”上的“文件菜單”,彈出一個下拉菜單,單擊其中的“關(guān)閉工作空間”選項,如圖動。也可以單擊“菜單欄”上的“文件菜單”,彈出一個下拉菜單,單擊其中的“關(guān)閉工作空間”選項,如圖12所示。這樣程序的編輯區(qū)和工作空間就一起關(guān)閉了。圖12關(guān)閉工作空間注意:在編寫和運行另ー個程序前,一定要關(guān)閉工作空間,而不能只是簡單的把程序的編輯區(qū)關(guān)閉,這樣會造成下一個程序無法運行。打開開巳存在的C源程序文件要打開ー個已存在的C源程序文件,首先要知道該文件的位置。例如,前面的那個“example-l.c"文件,我們知道它是放在D盤的program文件夾下的。下面,我們來用VC打開它。單擊“菜單欄”上的“文件菜單”,彈出ー個下拉菜單,單擊其中的“打開”選項,如圖13所示?!纾琫xaaple-1-MicrosoftVisualC++文件也)編輯也)查看9插入d)工程也)組建⑥工具復(fù))窗口也)幫助?D新建國)…CtrltN樋關(guān)閉。打開C源程序文件Altglobalmember<寸關(guān)閉。打開C源程序文件Altglobalmember<寸.mam打開工作空間(X)...保存工作空間(V)關(guān)閉工作空間量)圖!3隨后,會彈出ー個“打開”對話框,如圖14所示。單擊圖14中劃圈的按鈕,就可以在彈出的下拉界面中選擇要到達的位置?,F(xiàn)在選中D盤,然后雙擊D盤中的program文件夾,就可以進入該文件夾了,如圖15所示。
圖14圖14“打開”對話框默認情況下,“打開”對話框只會顯示C\C++程序或工程文件。但用VC也可以打開其它類型的文件(在程序設(shè)計題的解題技巧中會用到該操作),只要單擊圖15中劃圈的按鈕,然后再彈出的下拉菜單中選中“所有文件(*.*)”即可顯示所有類型的文件。用鼠標單擊選中要打開的文件"example-l.c"然后單擊右方的“打開”按鈕,即可打開該文件。圖!5打開文件3C程序編譯錯誤的查找與排除在實際的程序編寫過程中,語法錯誤時難免的,尤其是對初學(xué)者而言。編寫的程序中出現(xiàn)語法錯誤是很正常的事情,沒有必要感到急躁或灰心。平時的練習(xí)中犯些錯誤,是有助于提高程序設(shè)計水平的。VC為我們提供了一個輔助功能,幫助我們查找和排除程序中的編譯錯誤。以前面的那個簡単程序為例,故意將“printグHelloworld!\n");”語句最后的那個分號(;)去掉,這樣很明顯就出現(xiàn)了一個語法錯誤。事實上,初學(xué)者也常犯這樣的錯誤?,F(xiàn)在,再次編譯這個源程序,編譯結(jié)果顯示,出現(xiàn)了一個語法錯誤,編譯失敗,如圖編譯結(jié)果顯示,出現(xiàn)了一個語法錯誤,編譯失敗,如圖16所示。圖16程序的編譯結(jié)果任意位置匕并雙擊,該行錯誤提示信息變?yōu)樘m色,如圖17所示。"5ClassV...[j]FileView任意位置匕并雙擊,該行錯誤提示信息變?yōu)樘m色,如圖17所示。"5ClassV...[j]FileView■c(6):errorC2143:syntaxerror:nissing*;*before,}*Compiling...example-1,c圖17錯誤提示信息此時,在回到“程序編輯區(qū)",觀察它的變化,如圖18所示。圖18程序編輯區(qū)在編譯失敗的情況下,“執(zhí)行”按鈕是灰色,不可點擊。下面要做的就是要找出這個語法錯誤。將圖16中劃圈的滾動條向上拖動,會看到一行信息"D:\program\example-1.c(6):errorC2143:syntaxerror:missingbefore,如圖17所示。這是一行錯誤提示信息,辨認的標志在"errorC2143"上,"error”意味著該行是語法錯誤的提示信息(如果是"warning”則意味著該行警告錯誤的提示信息,不用去管它),“C2143"是錯誤代碼。把鼠標移到該行的\progrF\組建ス調(diào)試ス在文件1中查找エ在文件2中查找ス結(jié)果スSQLDebugging/rntaxerror:missing,;*before*]注意到程序編輯區(qū)的做左端多了一個蘭色的小箭頭(圖中劃圈部分),該箭頭所指向的行就是該語法錯出現(xiàn)的大概位置,可能在箭頭所指行,也可能在前一行或后一行。實際上,盡管錯誤提示信息時英文的,但其中多數(shù)的單詞都很簡單常見,大致上是可以讀懂的。例如圖!7屮的語法錯誤提示"D:\program\example-l.c(6):errorC2143:syntaxerror:missingbefore,后半句的意思就是:在“}"前丟了“;"。而蘭色箭頭又指出了該錯誤的大概位置,所以應(yīng)該是能夠比較容易的排除該錯誤的。附錄1中列出了常見的編譯錯誤,可供需要時查閱。需要提醒的是,如果出了多個“erroKs)”,那么一定要從第一個錯誤信息提示行開始查錯。并且每排除ー個錯誤,就要重新編譯ー次,因為后面的錯誤可能是由于前面的錯誤產(chǎn)生的。4C程序的錯誤類型諾法措誤語法錯誤是指不符合C語言的語法規(guī)定,例如左右括號數(shù)量不匹配、語句最后漏了分號等等,這些錯誤會在編譯時被發(fā)現(xiàn)并指出。這些錯誤都屬于“致命錯誤”,不改正是無法通過編譯的。對ー些在語法上有輕微毛病但不影響程序運行的問題(如定義了某個變量但始終未使用),編譯時會發(fā)出“警告”。但“警告”不屬于“致命錯誤”,程序可以通過編譯。但是在程序的運行過程中,這些“警告”可能造成一些運行時錯誤。退輯錯謨程序沒有語法錯誤,可以正常運行,但結(jié)果不對。例如,要求a和b的和,可是卻寫成了“a-b;”。語法上沒有錯,但求出的卻是a和b的差。這類錯誤可能是由于設(shè)計算法時的錯誤,也可能是由于在編寫程序時出現(xiàn)的疏忽所致。這類錯誤計算機是無法檢查出來的。運行錯誤有時程序既無語法錯誤,又無邏輯錯誤,但程序不能正常運行或結(jié)果不對。多數(shù)情況下,是由于數(shù)據(jù)不正確,或數(shù)據(jù)類型不合適造成的。例如:要求a/b,如果b的值為非0程序不會有問題,而如果b的值為0就為造成溢出(over-flow)錯誤。四、總結(jié)與思考VC的使用是整個上機考試的基石,如果不能熟練地使用VC,那么編程能力根本無從提高,也會嚴重影響考試的發(fā)揮。因此,應(yīng)該要反復(fù)練習(xí)“實驗內(nèi)容”中所講到的操作,并且用ー些課本上的其它程序來進行實驗。尤其是“C編譯錯誤的查找與排除”以及附錄1中常見的編譯錯誤,如果能夠熟悉并掌握,能夠?qū)Τ绦蛟O(shè)計水平的提升起到很大的促進作用。實驗二數(shù)據(jù)處理ー、實驗?zāi)康氖煜げ⒄莆諗?shù)據(jù)輸入函數(shù)的格式與應(yīng)用熟悉并熟悉數(shù)據(jù)輸出函數(shù)的格式與應(yīng)用進ー步熟悉VC的使用學(xué)習(xí)獨立排除程序中的編譯錯誤二、實驗環(huán)境個人計算機一臺,PIH500(或同等性能)以上CPU,128MB以上內(nèi)存,500MB以上硬盤剩余空間,SVGA彩色顯卡。WindowsXP操作系統(tǒng)MicrosoftVisualC++6.0(中文/英文)版三、實驗內(nèi)容1程序閱讀與分析注意:以下在書寫時,用“”代表空格,用“/”代表回車換行。printf()0數(shù)閱讀以下程序,并分析預(yù)測程序的運行結(jié)果,然后上機驗證。/*example-l.c*/#include<stdio.h>main()(inta=5,b=7;floatx=67.8564,y=-789.124;charc='A,;longn=1234567;printf("%d%d\n",a,b);printf("%3d%3d\nn,a,b);printf("%f,%f\nM,x,y);printf(M%8.2f,%8.2f,%.4f,%.4f,%3f,%3f\nw,x,y,x,y,x,y);printf("%e,%10.2e\nMrx,y);printf(M%c,%d,%o,%x\n",crcrcrc);printf(**%ld,%lo,%x\nM,n,n,n);)分析預(yù)測的運行結(jié)果:上機驗證的運行結(jié)果:scan*)函數(shù)以下程序中的scanf語句用于輸入數(shù)據(jù),目標是使得a的值為3,b的值為7,m的值為5,n的值為9,x的值為8.5,y的值為フ1.82,cl的值為ム1c2的值為爾,即屏幕上應(yīng)出現(xiàn)以下的輸出結(jié)果:a=3b=7m=5n=9x=8.500000y=71.820000cl=Ac2=a那么應(yīng)該從鍵盤上怎樣輸入數(shù)據(jù)?請上機驗證,并把正確的結(jié)果寫下來。程序中的primf語句會把各個變量的值輸出。/*example-2.c*/#include<stdio.h>main()(inta,b,m,n;floatx,y;charcl,c2;/*以下scanf語句用于輸入數(shù)據(jù)*/scanf("a=%db=%d",&a,&b);scanf("%d,%dw,&m,&n);scanf("%f%e",&x,&y);scanf("%c%c",&cl,&c2);/,以下printf語句用于輸出各變量數(shù)據(jù),驗證結(jié)果?/printf(”\n以下是輸出結(jié)果:\n");printf(Ma=%db=%d\n",a,b);printf(Mm=%dn=%d\nM,m,n);printf("x=%fy=%f\n",x,y);printf("cl=%cc2=%c\n",cl,c2);1正確的輸入格式是:putchar。與getchar()函數(shù)觀察分析以下程序,選出對應(yīng)的輸入與輸出,并上機驗證。/*example-3.c*/#include<stdio.h>intmain()charcl,c2,c3;cl=getchar();c2=getchar();c3=getchar();printf("ヽn以下是輸出:\n");putchar(cl);putchar(c2);putchar(c3);printf(M\nw);)輸入:A)abc/ B)aDbncZ C)aZbZ輸出:A)aZ B)abcZ C)aDbZbZ在三組輸入與輸出中:輸入( )與輸出( )對應(yīng)輸入( )與輸出( )對應(yīng)輸入( )與輸出( )對應(yīng)2程序編寫按要求編’弓程序或?qū)⒊绦蛱畛渫暾o@示圖形在花括號({})之間填入適當?shù)恼Z句,并運行,使其能夠顯示圖1所示的圖形。/*example-4.c*/#include<stdio.h>main【解題提示】可以使用prin氓)語句按行直接輸出O圖1cxamplc-4.c程序的輸出結(jié)果溫度轉(zhuǎn)換在花括號({})之間劃線的部分填空,將程序補充完整實現(xiàn)下述功能,并上機運行驗證。該程序的功能是從鍵盤上輸入ー個實數(shù)F,代表華氏溫度。將華氏溫度轉(zhuǎn)換為攝氏溫度C(實數(shù))并輸出,攝氏溫度保留兩位小數(shù)。華氏溫度與攝氏溫度的關(guān)系式:C=二(尸-32)例如,輸入:17.2輸出:Thetempratureis-8.22/*example-5.c*/#include<stdio.h>main()scanf &f);printf(MThetempratureis\nMrc);)【解題提示】(1)變量要先定義后使用。(2)控制輸出的實數(shù)的小數(shù)位的方法是“%nl.n2f",nl和n2是兩個整數(shù),nl表示輸出的實數(shù)占的總位數(shù),n2表示輸出實數(shù)的小數(shù)位的位數(shù)。數(shù)據(jù)交換在花括號({})之間劃線的部分填空,將程序補充完整實現(xiàn)下述功能,并上機運行驗證。該程序的功能是從鍵盤上輸入兩個整數(shù),分別存放在變量a和b中,然后將a與b中的數(shù)據(jù)交換。例如,輸入:1020輸出:beforeswap:a=10,b=20afterswap:a=20,a=10/*example-6.c*/#include<stdio.h>main()(/?定義變量?//*輸入兩個整數(shù)?/printf("Inputaandb:");scanf("%d%d",&a,&b);/?輸出數(shù)據(jù)交換前,ヨ與b的值?/printf("beforeswap:");printf("a=%d,b=%d\n",a,b);/,數(shù)據(jù)交換?//?輸出數(shù)據(jù)交換后,a與b的值?/printf("Afterswap:;printf("a=%d,b=%d\n",a,b);)【解題提示】兩個整數(shù)的交換是十分重要的,一定要掌握四、總結(jié)與思考數(shù)據(jù)的輸入和輸出,以及數(shù)據(jù)的基本數(shù)學(xué)運算時整個程序設(shè)計的根基,因為程序設(shè)計的本質(zhì)就是數(shù)據(jù)的獲取以及數(shù)學(xué)運算。因此,一定要熟練掌握兒個數(shù)據(jù)輸入輸出函數(shù)的格式與應(yīng)用方法,以及基本數(shù)學(xué)運算符的運算法則。在完成以上實驗的基礎(chǔ)上,有興趣的同學(xué)可以在課后思考以ド問題:思考題:數(shù)字加密在花括號({})之間劃線的部分填空,將程序補充完整實現(xiàn)下述功能,并上機運行驗證輸入1個四位數(shù),將其加密后輸出。方法是將該數(shù)每一位上的數(shù)字加9,然后除以!0取余,做為該位上的新數(shù)字,最后將第1位和第3位上的數(shù)字互換,第2位和第4位上的數(shù)字互換,組成加密后的新數(shù)。例如,輸入:1257輸出:Theencryptednumberis4601/*think-l.c*/#include<stdio.h>main()(/*n用來存放輸入的4位數(shù),n!存放4位數(shù)的第1位數(shù)字?//*n2存放4位數(shù)的第2位數(shù)字,n3存放4位數(shù)的第3位數(shù)字?/ハn4存放4位數(shù)的第4位數(shù)字?/intn,nl,n2,n3,n4;scanf("%d", ; /?獲取第1位數(shù)?/ /?獲取第2位數(shù)*/ /?獲取第3位數(shù)*/ /?獲取第4位數(shù)*/ /?第1位數(shù)加9對10取余?/ /?第2位數(shù)加9對10取余?//?第3位數(shù)加9對10取余?/ /?第4位數(shù)加9對10取余?/パ第1位和第3位上的數(shù)字互換,第2位和第4位上的數(shù)字互換?/printf("Theencryptednumberis%d\nM,n);)【解題提示】對于ー個整數(shù)n而言,如果要獲取個位數(shù),那么直接對10取余就可以了:n%10o如果要獲得十位數(shù),那么首先要把個位數(shù)抹去:nハ0,然后原來的十位數(shù)就變成了個位數(shù)。如果要獲得百位數(shù),那么首先要把十位數(shù)和個位數(shù)抹去:n/100,然后原來的百位數(shù)就變成了個位數(shù)。根據(jù)以上的分析,我們可以發(fā)現(xiàn),要獲得一個整數(shù)的個位數(shù),就將n對10取余(n%10);要抹去?個整數(shù)的最末x位,就將n除以10,(n/l(r)。實驗三選擇結(jié)構(gòu)程序設(shè)計ー、實驗?zāi)康牧私獠⒄莆誄語言表示邏輯值的方法(以〇代表"假",以非〇代表"真")了解并掌握邏輯運算符的運算法則熟悉并掌握邏輯表達式的使用熟練掌握if語句及其嵌套形式的使用熟練掌握if-ese語句及其嵌套形式的使用熟練掌握switch語句的使用二、實驗環(huán)境個人計算機一臺,PHI5OO(或同等性能)以上CPU,128MB以上內(nèi)存,500MB以上硬盤剩余空間,SVGA彩色顯卡。WindowsXP操作系統(tǒng)MicrosoftVisualC++6.0(中文/英文)版三、實驗內(nèi)容注意:以下在書寫時,用“二”代表空格,用“/”代表回車換行。1程序閱讀與分析閱讀以下程序,并分析預(yù)測程序的運行結(jié)果,然后上機驗證。(在書寫時,用“□”代表空格,用“/”代表回車換行)1.1switch句閱讀以下程序,并分析預(yù)測程序的運行結(jié)果,然后上機驗證。/*exampleーフ,c*/#include<stdio.h>main()intn;printf("Inputn:");scanf&n);switch(n)(printf("Iamcase1.\n");default:printf("Iamdefault.\n");printf("Iamcase2.\n");break;case4:switch(n)(case4:printf("Iamcase4\n");break;case5:printf("Iamcase5\n");}case3:printf("Iamcase3.\n");}分析預(yù)測的運行結(jié)果:當輸入1時,輸出:當輸入2時,輸出:當輸入3時,輸出:當輸入4時,輸出:當輸入5時,輸出:
上機驗證的運行結(jié)果:當輸入1時,輸出:當輸入2時,輸出:當輸入3時,輸出:當輸入4時,輸出:當輸入5時,輸出:2程序編寫按要求編寫程序或?qū)⒊绦蛱畛渫暾?.1求分段出數(shù)值在花括號({})的scanf與printf語句之間填寫適當?shù)恼Z句,將程序補充完整實現(xiàn)下述功能,并上機運行驗證程序的功能是從求以下分段函數(shù)的值:—X (x<0)>-="2x+l(0<x<10)3x-l (x>10)X的值從鍵盤上輸入,根據(jù)x的值求y的值。例如,輸入:11輸出:y=32//example-8.c*/#include<stdio.h>main()(intx,y;scanf("%dn,&x);//可根據(jù)需要填寫多條語句//printf("y=%d\nn,y);}【解答提示】使用if語句或if-else語句皆可。2.2判斷國年在花括號(仆)之間填寫適當?shù)恼Z句,將程序補充完整實現(xiàn)下述功能,并上機運行驗證。程序的功能是從鍵盤上輸入ー個正整數(shù),代表年份,然后判斷這個正整數(shù)所代表的年份是否是閏年。閏年滿足以下兩個條件中的任意ー個:(1)能被4整除但不能被!00整除。(2)能被100整除又能被400整除。例如,輸入:2008輸出:2008是閏年!輸入:3000輸出:3000不是閏年!/*example-9.c*/#include<stdio.h>main(){/*year用來存儲年份?//?當yeaエ是閏年,將leap賦值為1;當yeaエ不是閏年,將leap賦值為0?/intyear,leap;scanf(w%d",&year);/?判斷year是否是閏年。如果是,將leap賦值為1:否則賦值為0?//?可以根據(jù)需要填入任意多條語句?//?填寫條件表達式,根據(jù)ユeap的值,輸出year是否是閏年?/if()printf("宅d年是閏年!\n",year);elseprintfじ%d年不是閏年!\n”,year);}【解答提示】ー個整數(shù)x,如果能夠被整數(shù)y整除,那么x對y取余的余數(shù)為0(x%尸〇),反之余數(shù)則不為〇(x%y!=O)〇2.3計算個人所得稅在花括號({})之間填寫適當?shù)恼Z句,將程序補充完整實現(xiàn)下述功能,并上機運行驗證。程序的功能是從鍵盤上輸入ー個正整數(shù)(salary),代表エ資,然后計算應(yīng)該繳納的個人所得稅(tax)是多少(結(jié)果保留兩位小數(shù))。個人所得稅是以850元為起點征收,超過850元的部分要按以下稅率(rate)征收個人所得稅:當salary<=850時,rate=0;當850<salary<=1350時,rate=0.05;當1350〈salary<=2850時,rate=0.1;當2850<salary<=5850時,rate=0.15;例如,輸入;1010.87輸出;tax=8.04/*example-10.c*/#include<stdio.h>main()(floatsalary,rate,tax;printf("Inputsalary:");scanf("%f",&salary);/?確定個人所得稅的稅率,根據(jù)需要可填入任意多條語句?/rate=0.2;/?計算個人所得稅?/printf(Mtax= \n”,tax);}【解答提示】首先根據(jù)salary的值確定個人所得稅的稅率rate,然后按以下公式計算個人所得稅:tax=(salary-850)*rate;四、總結(jié)與思考選擇結(jié)構(gòu),又稱為分支結(jié)構(gòu),是程序設(shè)計的三大基本控制結(jié)構(gòu)之一,C語言中用于實現(xiàn)選擇結(jié)構(gòu)的語句有:if語句if-else語句switch語句難點在于if-else語句的嵌套,以及在switch語句中,break語句的用法,同學(xué)們一定要多加練習(xí)。在完成以上實驗的基礎(chǔ)上,有興趣的同學(xué)可以在課后思考以下問題:思考題:計算提院在花括號({})之間填寫適當?shù)恼Z句,將程序補充完整實現(xiàn)下述功能,并上機運行驗證。程序的功能是計算企業(yè)的提成。企業(yè)的提成(P)是根據(jù)利潤(I)來計算的:(1)當IW100000(10萬元),提成是利潤的10%(2)當100000<1<200000,低于或等于10萬元的部分按10%提成,高于10萬元的部分可提成?.5%(3)當200000<10400000,低于或等于20萬元的部分仍按上述方法提成(下同),高于20萬元的部分可提成5%(4)當400000<IW60000〇,高于40萬元的部分可提成3%(5)當600000<1010000000,高于60萬元的部分可提成1.5%(6)當I>1000000,高于100萬元的部分可提成1%例如,如果利潤I是65萬元,提成由以下幾個部分構(gòu)成:(1)其中的10萬元,可提成10%,就是1萬元10萬元到20萬元的部分(共計10萬元),可提成7.5%,就是0.75萬元20萬元到40元的部分(共計20萬元),可提成5%,就是1萬元40萬元到60元的部分(共計20萬元),可提成3%,就是0.6萬元60萬元到65萬元的部分(共計5萬元),可提成1.5%,就是0.075萬元以上部分相加,提成共計3.425萬元(34250元)。因此,輸入:650000,應(yīng)輸出:P=34250.00元。/*think-2.c*/#include<stdio.h>main()用來存放利潤,p用來存放提成?/floatエ,P;printf("InputI:n);scanf&I);/?計算提成,可根據(jù)需要填入任意多條語句//printf(MP=%f\n",P);)【解答提示】可使用if語句、i&else語句或者switch語句。實驗四循環(huán)結(jié)構(gòu)程序設(shè)計ー、實驗?zāi)康氖炀氄莆誻hile語句及其嵌套形式的使用熟練掌握do-while語句及其嵌套形式的使用熟練掌握for語句及其嵌套形式的使用了解并掌握continue與break語句在循環(huán)結(jié)構(gòu)中的作用熟悉循環(huán)結(jié)構(gòu)程序段中語句的的執(zhí)行過程二、實驗環(huán)境個人計算機一臺,PHI500(或同等性能)以上CPU,128MB以上內(nèi)存,500MB以上硬盤剩余空間,SVGA彩色顯卡。WindowsXP操作系統(tǒng)MicrosoftVisualC++6.0(中文/英文)版三、實驗內(nèi)容1,數(shù)列求和在花括號({})之間填寫適當?shù)恼Z句,將程序補充完整實現(xiàn)下述功能,并上機運行驗證。程序的功能從鍵盤上輸入ー個整數(shù)n,并計算以下數(shù)列的前n項和:1111x33x55x7 (2xn-l)x(2xn +l)例如,輸入:10輸出:s=14.266510/*example-ll.c*/#include<stdio.h>main()intn,i;floats;scanf("%dn,&n);/?求前n項和,結(jié)果存放在s當屮*//?可根據(jù)需要填入任意多條語句?/printf(Ms=%f\nn,s);)【解題提示】使用for語句或while語句皆可。注意運算対象的類型,“1/2"的值是〇而不是0.5。.素數(shù)在花括號(仆)之間的橫線中填寫適當?shù)恼Z句,將程序補充完整實現(xiàn)下述功能,并上機運行驗證。程序的功能是從鍵盤上輸入ー個整數(shù)n,就n(包括n)以內(nèi)的素數(shù)。素數(shù)是指:只能被1和它本身整除的數(shù)(除了1以外,1不是素數(shù))。例如,輸入:50輸出:23571113171923293137414347/*example-12.c*/#include<stdio.h>main()intn,i,j;printf("Inputn:");scanf("%d",&n);printf("以下是小于もd的素數(shù):\n",n);/?列舉2?n之間的所有數(shù)?/for(i=2; ;i++)/?下面這個循環(huán)判斷i是否是素數(shù)?/;j++)for(j=;j++)/?如果i能夠被j整除,就意味著i不是素數(shù),循環(huán)可以提前終止?/if(i%j==0) )//滿足括號中的條件意味著n是素數(shù),則輸出?/if( )printf(n%d",i);}printf("\n");)【解題提示】我們可以有以下思路用于判斷某ー個整數(shù)是否為素數(shù):給定一個整數(shù)n,我們可以從2開始至n-1逐一檢查在這范圍之內(nèi)的整數(shù)是否可以被n整除。如果可以,則說明整數(shù)n不是素數(shù)。如果從2開始至n-1范圍之內(nèi)的所有整數(shù)都不可以被n整除,那說明整數(shù)n符合素數(shù)的定義,所以整數(shù)n是ー個素數(shù)。判斷整數(shù)n能否被整數(shù)m整除的方法是:n%m=0o如果n對m取余等于0,那么n能夠被m整除:反之,n不能被m整除。3?水仙花數(shù)在花括號({})之間填寫適當?shù)恼Z句,將程序補充完整實現(xiàn)下述功能,并上機運行驗證。程序的功能是求出所有的“水仙花數(shù)”。所謂的“水仙花數(shù)”是指這樣的一個三位數(shù):其各位數(shù)字的立方和等于該數(shù)本身。例如:153是ー個水仙花數(shù),因為153=13+53+33。/*example-13.c*/#include<stdio.h>main()【解題提示】(1)“水仙花數(shù)”是三位數(shù),因此只能是100?999之間的數(shù)。(2)列舉100到999之間的每個數(shù)字,判斷它是否是水仙花數(shù),如果是就輸出,不是就不輸出?!八苫〝?shù)”各位數(shù)字的立方和等于該數(shù)本身,因此判斷ー個數(shù)n是不是“水仙花數(shù)”,要獲得它各個位上的數(shù)字,然后求立方和,看立方和是否等于n。四、總結(jié)與思考循環(huán)結(jié)構(gòu)是程序設(shè)計的三大基本控制結(jié)構(gòu)之一,C語言中用于實現(xiàn)選擇結(jié)構(gòu)的語句有:while語句do-while語句fbr語句此外,還要注意continue語句和break語句在循環(huán)結(jié)構(gòu)中的作用。編程時,可以不使用continue語句和break語句,但筆試中一定會考査到。在完成以上實驗的基礎(chǔ)上,有興趣的同學(xué)可以在課后思考以下問題:思考題:打印等牌三角形在花括號({})之間填寫適當?shù)恼Z句,將程序補充完整實現(xiàn)下述功能,并上機運行驗證。程序的功能是從鍵盤上輸入ー個整數(shù)n,然后打印出n層有高的等腰三角形(由“*”組成)。例如,當n為5時,如圖1所示。圖15層高的等邊三角形/*think-3.c*/#include<stdio.h>main())【解題提示】實際上,這個等腰三角形是由"*”和空格兩種符號構(gòu)成。我們要做的,就是判斷出每層要輸出多少個“ザ’和空格。無論多高的等腰三角形,第一層都是1個“*”,第二層是3個‘”,第三層是5個“*" 最后ー層都是“*”。很明顯,這是ー個公差為2的等差數(shù)列。等差數(shù)列的第n項是:Sn=SI+(n-l)*d(d為公差)因此,n層高的等腰三角形,在第n層就要打印出l+(n-l)*2個“*”,這是打印“*”號最多的ー層。那么,在第x層(x<n),就要打印出l+(x-l)*2個“*”,剩下的部分就用空格填充。因此在第x層,共要打印(l+(n-l)*2)-(l+(x-l)*2)個空格,其中一半的空格在最前方,另一半空格在最后端。因此,我們可以按如下步驟打印等腰三角形的第x層進行:求出該成要打印的星號數(shù)量:l+(x-l)*2求出該成要打印的空格數(shù)量:y=l+(n-l)*2)-(l+(x-l)*2先打印出一半(y/2個)的空格接著打印出l+(x-l)*2個星號最后再打印出另ー個(y/2個)的空格最后再打印ー個回車換行符(\n)由于第(5)步打印出的空格不可見,所以可以省略。實驗五函數(shù)(選做實驗)ー、實驗?zāi)康牧私獠⒄莆蘸瘮?shù)的定義方法了解并掌握函數(shù)的調(diào)用方法了解并掌握函數(shù)參數(shù)的單向傳遞了解并掌握函數(shù)的遞歸調(diào)用二、實驗環(huán)境個人計算機一臺,PIH500(或同等性能)以上CPU,128MB以上內(nèi)存,500MB以上硬盤剩余空間,SVGA彩色顯卡。WindowsXP操作系統(tǒng)MicrosoftVisualC++6.0(中文/英文)版三、實驗內(nèi)容.求階乗將fim()函數(shù)填充完整,使其以遞歸調(diào)用的形式求參數(shù)n(n<=10)的階乘。例如,輸入:6輸出:6!=720注意:由于階乘的遞增速度很快,所以存放階乘結(jié)果的變量請使用!ong型,并且不要計算超過10的階乘,否則可能會造成數(shù)據(jù)溢出。/*exampel-14*/#include<stdio.h>longfun(intn)實驗五函數(shù)實驗五函數(shù)main()intm;longs;printf("Inputm:n);scanf("%dn,&m);s=fun(m);printf(n%d!=%ld\n"zm,s【解題提示】使用直接遞歸調(diào)用。.年齡謎題有5個人坐在ー起,問第5個人多少歲?他說比第4個大2歲。問第4個人多少歲?他說比第3個大2歲。問第3個人多少歲?他說比第2個大1歲。問第2個人多少歲?他說比第1個大2歲。最后問第一個人,他說是10歲。請問第5個人有多大?寫ー函數(shù)fun來用遞歸調(diào)用來計算第5個人的歲數(shù),并在main函數(shù)中調(diào)用它。/*example-15.c*/【解題提示】使用直接遞歸可以很容易地求出。四、總結(jié)與思考一般而言,程序都是有多個函數(shù)組成的,因為ー個函數(shù)中實現(xiàn)的功能會造成邏輯混亂以及閱讀上的困難。模塊化的思想要求每個函數(shù)都只實現(xiàn)單ー的功能,這也是實際的程序設(shè)計中,程序員所共同遵守的。因此,了解和掌握函數(shù)調(diào)用方法及函數(shù)之間的數(shù)據(jù)傳遞方法是非常重要的。只有掌握好了這些,才能讓多個函數(shù)完美融合成一個整體。函數(shù)調(diào)用的難點是遞歸調(diào)用,關(guān)鍵在于在某個時刻,遞歸要能夠結(jié)束,否則程序就會陷入無窮的遞歸。由于上機考試對程序的遞歸調(diào)用不做要求,因此本實驗可選做或降低要求。但掌握好本實驗有助于理解函數(shù)之間的數(shù)據(jù)傳遞。實驗人數(shù)組與指針ー、實驗?zāi)康牧私獠⒄莆诈`維數(shù)組與二維數(shù)組的定義方法了解并掌握ー維數(shù)組與二維數(shù)組的初始化方法及元素的引用方法了解并掌握字符串、字符串數(shù)組以及字符串函數(shù)的使用方法了解并掌握指針變量的定義和使用方法了解并掌握函數(shù)的傳值調(diào)用和傳址調(diào)用二、實驗環(huán)境個人計算機一臺,PHI500(或同等性能)以上CPU,128MB以上內(nèi)存,500MB以上硬盤剩余空間,SVGA彩色顯卡。WindowsXP操作系統(tǒng)MicrosoftVisualC++6.0(中文/英文)版三、實驗內(nèi)容.求最大值及下標在以下程序的橫線中填上適當?shù)恼Z句或表達式,并上機運行。輸入ー個正整數(shù)n(l<n<=10),再輸入n個整數(shù),輸出最大值極其下標(設(shè)最大值惟ー,下標從〇開始)。/*example-l6.c*/#include<stdio.h>main()(/?數(shù)組ヨ用來存放n個整數(shù)?//*max用來存放最大的數(shù),index用來存放最大數(shù)的ド標?/intn,i,max,index,a[100];printf(*'Inputn:w);scanf(n%dn,&n);/?輸入n個整數(shù)?/printf("Input%dnumbers:\nn,n);for(i=0;i<n;i++)/*首先假設(shè)第0個數(shù)是最大的?/index=0;for(i=0;i<n;i++)(if() /?如果第i個數(shù)比max*/)}printf("max=%dindex=%d\nn,max,index);).矩陣在以下程序的橫線中填上適當?shù)恼Z句或表達式,并上機運行。下列程序定義了NXN的二維數(shù)組,并已在主函數(shù)中復(fù)制,如ド所示。請求出該二維數(shù)組周邊元素的平均值。TOC\o"1-5"\h\z0 12 7 99 7 4 53 8 3 15 6 8 29 14 1該矩陣的周邊元素是第〇行、第4行、第0列和第4列上的所有元素。其平均值為3.375。/*example-17.c*/#include<stdio.h>#defineN5main()(/?二維數(shù)組賦初值?/inta[N][N]={{0,1,2,フ,9},{1,9,7,4,5},{2,3,8,3,1),{4,5,6,8,2},{5,9,1,4,1}};inti,j;/*sum存放累加和,ave存放平均值*/floatsum,ave;/?清零?/實驗六數(shù)組與指針實驗六數(shù)組與指針/?累加第。行的元素?/for(i=0;i<N;i++)/?累加第N-1行的元素?/for(i=0;i<N;i++)/?累加第。列的元素?/for(i=1;i<N-1;i++)/*累加第N-1列的元素?/for(i=1;i<N-1;i++)/?求平均值?/printf("Theaverageis:%f\n",ave);}【解題提示】注意四個角上元素,a[0]⑼既屬于第0行又屬于第0歹り,a[0][N-l]既屬于第〇行又屬于第N-1歹リ,a[N-l][0]既屬于第N-1行又屬于第0列,既屬于第N-1行又屬于第N-1列,不要累加兩次。3.兩數(shù)交換編寫swap函數(shù),功能是交換兩個整數(shù),然后在main()數(shù)調(diào)用它。例如,輸入:35輸出:53/*example-18.c*/#include<stdio.h>【解題提示】兩個數(shù)的交換在實驗ニ中就已經(jīng)遇到過了,但是這里要求是以函數(shù)調(diào)用的方式來實現(xiàn)兩個數(shù)的交換,因此要使用傳址調(diào)用。4.大小寫轉(zhuǎn)換在以下程序的橫線中填上適當?shù)恼Z句或表達式,并上機運行。輸入一個字符串,將其中的所有大寫字母轉(zhuǎn)換為小寫字母。例如,輸入:dadBdcEFGaBd輸出:dadbdcefgabd/*example-19.c*/#include<stdio.h>main(){charstr[100];inti;printf("Inputstring:");/?輸入不帶空格的字符串,存放在數(shù)組str中//i=0;/?判斷當前字符是否為字符串結(jié)束標志ハ0-/while()(/?判斷當前字符是否是大寫字母?/if()(/?將大寫字符轉(zhuǎn)換成小寫字母?//?向后移動ー個字符*/printf("%s\n",str);四、總結(jié)與思考數(shù)組是程序設(shè)計當中最常用到的數(shù)組結(jié)構(gòu),它可以模擬各種線性結(jié)構(gòu)以及矩陣。掌握數(shù)組,可以大大地提高程序設(shè)計能力,解決許多實踐當中的問題。指針是C語言當中最抽象的部分,同時也是C語言的精華所在。雖然關(guān)于指針的安全性還存在著爭議,但毫無疑問指針大大地增強了C語言的靈活性。對于指針,一定要細究其細節(jié),否則可能會產(chǎn)生一些意想不到的錯誤。字符串是文本處理問題當中經(jīng)常要用到的,對于字符串的問題一定要把握好字符數(shù)據(jù)的本實驗六數(shù)組與指針實驗六數(shù)組與指針質(zhì)以及字符串的結(jié)束標記。在完成以上實驗的基礎(chǔ)上,有興趣的同學(xué)可以在課后思考以下問題:思考題:字符串移動在以下程序的橫線中填上適當?shù)恼Z句或表達式,并上機運行。在main函數(shù)中從鍵盤上輸入ー個字符串str以及ー個整數(shù)n,將它們作為參數(shù)傳遞給函數(shù)ftin。fun函數(shù)的功能是將字符串str的第O~m-1個字符移到字符串的最后,第m個字符到最后ー個字符移動字符串的頭部。例如,輸入:3ABCDEFGHIJK輸出:DEFGHIJKABC/*think-4?c*/#include<stdio.h>voidfun(char*w,intn)(int1,j;/*str數(shù)組用來存放移動后的字符串?/charstr[100];/?指向首字符?/i=0;j=0;/?指向第n個字符//while(i<=n-1)i++;/*首先把第n個字符一直到最后ー個字符放到str數(shù)組的頭部?/while()(パ向后移動一個字符*/}/?把第0個字符到第n-l個字符放到str數(shù)組的尾部?/for(i=0;i<=n-l;i++)/?向后移動ー個字符?/j++;}/?放上字符串結(jié)束標志*/i=0;/*str數(shù)組中是移動后的字符串,把它復(fù)制到w數(shù)組中去//while()(/*向后移動ー個字符?/main()(chars[100];intm;printf("Inputstring:");scanf("%s",s);printf("Inputm:");scanf("%dn,&m);fun(s,m);printf("Aftermove:%s\n",s);實驗七結(jié)構(gòu)體ー、實驗?zāi)康牧私獠⒄莆战Y(jié)構(gòu)體類型的說明了解并掌握結(jié)構(gòu)體類型變量的定義和使用了解并掌握結(jié)構(gòu)體數(shù)組的概念和使用二、實驗環(huán)境個人計算機一臺,PIH500(或同等性能)以上CPU,128MB以上內(nèi)存,500MB以上硬盤剩余空間,SVGA彩色顯卡。WindowsXP操作系統(tǒng)MicrosoftVisualC++6.0(中文/英文)版三、實驗內(nèi)容.結(jié)構(gòu)體類型說明與變量定義在以下程序的橫線中填上適當?shù)恼Z句或表達式,并上機運行。請說明一個結(jié)構(gòu)體類型,它包含以下成員變量:ー個字符串(name)ー個整型變量(age)ー個字符變量(sex)兩個實型變量(weight和high)然后在main函數(shù)中定義ー個該結(jié)構(gòu)體類型的變量并初始化,最后輸出各個成員變量的值。輸出結(jié)果應(yīng)如圖1所示。圖1example-20.c的輸出結(jié)果/*example-20.c*/#include<stdio.h>structst);main(){structstn={"Jim”,20,1m*,65.5,175.5};printf("Name:%s\n",);printf("Age:%d\n",);printf("Sex:%c\n",;printf("Weight:%f\n",);printf("High:%f\n",;).結(jié)構(gòu)體數(shù)組在以下程序的橫線中填上適當?shù)恼Z句或表達式,并上機運行。已知學(xué)生的記錄由學(xué)號和學(xué)習(xí)成績構(gòu)成,N名學(xué)生的數(shù)據(jù)已經(jīng)存入結(jié)構(gòu)體數(shù)組a當中。請編寫函數(shù)fim,該函數(shù)的功能是求出找出所有學(xué)生的平均成績,并輸出;再找出成績最低的學(xué)生記錄,并通過形參返回主函數(shù)。輸出結(jié)果應(yīng)如圖2所示。圖2example_2l.c輸出結(jié)果實驗七結(jié)構(gòu)體實驗七結(jié)構(gòu)體/*example-21.c*/#include<stdio.h>#include<string.h>#defineN10typedefstructss(charnum[10];ints;}STU;voidfun(STUa[],STU*s){/*sum用于存放累加和,ave用于存放平均值★//*min用于存放最低分數(shù)*/floatsum,ave,min;inti;/?清零///?求累加和?/for(i=0;i<N;i++)(/?求平均值?/printf("Theaverageis:%f\n",ave);/?假設(shè)a【〇]是最低分的學(xué)生記錄?//?把a[0]的記錄復(fù)制到形參s中?/for(i=0;i<N;i++)(/*如果記錄a[i]中的分數(shù)比min還低*//?則將aは]的記錄復(fù)制到形參s中,并更新min中的值?/if()main()(STUa[N]=(TOC\o"1-5"\h\z{"0901", 81}, {"0902", 89}, {"0903", 66},{"0904", 87}, {"0905", 77}, {"0906", 90},{"0907", 79}, {"0908", 61}, {"0909", 80},{“0910", 71}};STUm;fun(a,&m);printf("Thelowestis:%s,%d\n",m.num,m.s);四、總結(jié)與思考結(jié)構(gòu)體是ー種復(fù)合數(shù)據(jù)類型,它能夠?qū)⒉煌愋偷臄?shù)據(jù)組合在ー起成為一種新的數(shù)據(jù)類型,這是同為復(fù)合數(shù)據(jù)類型的數(shù)組所做不到的。在實際的應(yīng)用當中,由不同類型數(shù)據(jù)組成的整體隨處可見:學(xué)籍信息、戶籍信息、考生記錄等等。掌握好結(jié)構(gòu)體,能夠使程序員描述現(xiàn)實世界的能力大大增強。事實上,在實際的工程項目中,結(jié)構(gòu)體類型的數(shù)據(jù)幾乎是必不可少。實驗人上機考試指導(dǎo)ー、實驗?zāi)康氖煜げ⒄莆丈蠙C考試的流程與步驟熟悉并掌握上機考試填空題的解題方法熟悉并掌握上機考試改錯題的解題方法熟悉并掌握上機考試編程題的解題方法二、實驗環(huán)境個人計算機一臺,PIH500(或同等性能)以上CPU,128MB以上內(nèi)存,500MB以上硬盤剩余空間,SVGA彩色顯卡。WindowsXP操作系統(tǒng)MicrosoftVisualC++6.0(中文/英文)版上機考試模擬系統(tǒng)三、實驗內(nèi)容1上機考試介紹全國計算機等級考試二級C語言的上機考試時間為90分鐘,考試時間從考生點擊“開始考試并倒計時”按鈕考試,由考試系統(tǒng)自動倒計時。倒計時結(jié)束前5分鐘,考試系統(tǒng)會自動報警題型考生考試即將結(jié)束并注意存盤。當?shù)褂嫊r結(jié)束,考試系統(tǒng)將自動鎖定計算機,考生將不能再進行任何操作。當考生點擊‘’交卷”按鈕后,考試系統(tǒng)也會自動鎖定計算機。注意:無論由于什么原因,考試系統(tǒng)在鎖定計算機后,考生都要舉手報告監(jiān)考老師,由監(jiān)考老師輸入密碼后,方可離開考場。上機考試的滿分為100分,由一道填空題(30分)、一道改錯題(30分)以及一道編程題(40分)組成。90分(含90分)以上為“優(yōu)秀”,80分(含80分)以上為良好,60分(含60分)以上為及格。上機考試的題目由計算機隨機從題庫中抽取,因此每個考生的題目與其附近考生的題目都不一樣??荚囅到y(tǒng)只能夠正常登錄一次,在考生第一次正常登錄后,無論是由于什么原因?qū)е驴荚囅到y(tǒng)退出,考生都不能再次登錄,除非山監(jiān)考老師輸入二次登錄密碼。因此,在考試過程中,如果出現(xiàn)計算機死機、顯示器斷電、鼠標鍵盤失靈等意外情況,考生切勿自行處理,而應(yīng)立即舉手報告監(jiān)考老師,由監(jiān)考老師進行處理。注意:考生只能抽取一次試題,不要試圖通過重新登錄考試系統(tǒng)、重啟計算機等非常手段來重新抽取試題。2解題要求各題型的解題要求如下:(1)填空題:填空題的源程序文件名為“blankl.c",要求根據(jù)題意在程序中挖出的空中填上正確答案即可,不要求運行。但一定要注意保存,否則不得分。(2)改錯題:改錯題的源程序文件名為“modil.c”,要求根據(jù)題意在指定的若干行程序中找岀錯誤并改正,不要求運行。但一定要注意保存,否則不得分。(3)編程題:編程題的源程序文件名為“progl.c",要求將程序中ftm()函數(shù)的函數(shù)體補充完成,實現(xiàn)題目中所要求的功能。需要注意的是,編程題一定要運行,必須要有運行結(jié)果。因為編程題的評分不是根據(jù)考生填寫的程序,而是根據(jù)程序的運行結(jié)果給分。3上機考試流程及各題型解題方法下面以完全仿真的上機考試模擬演示系統(tǒng)為平臺,演示上機考試的流程及填空題、改錯題和編程題的解題方法。上機考試的整個過程可以分為:登錄、答題和交卷三個階段。請讀者一定要注意每個細節(jié),并反復(fù)進行練習(xí),不要出現(xiàn)錯漏。登錄(1)雙擊桌面上的上機考試系統(tǒng)的圖標后,彈出圖1所示的界面。fNExaminationvI年覦爲覇息?《廬@F班^^頌!喀頷鹹版本5.2.6教育部考試中心圖1登錄界面(2)單擊“開始登錄”按鈕后,轉(zhuǎn)入考試登錄界面。如圖2所示。模擬系統(tǒng)す機廠余巡陰咐時終倒麻師懶歸i撼準考證號:考生姓名: 一身份證號:イ…ノ+ペ?安ノ圖2準考證號輸入與驗證界面(3)在“準考證號”ー欄輸入考生的準考證號碼,然后單擊“考號驗證”按鈕(或按Enter鍵)。如果準考證號碼輸入正確,考試系統(tǒng)隨即會彈出ー個提示框,顯示考生的準考證號碼、姓名和身份證號碼三種信息,如圖3所示;如過準考證號碼輸入錯誤,考試系統(tǒng)也會彈岀ー個提示框,顯示錯誤信息(如圖4所示),提醒考生重新輸入準考證號碼。圖3考生信息核對提示框圖4錯誤信息提示框(4)在核對“準考證號碼”、“姓名”和“身份證號碼”三種無誤后,單擊提示框上的“是(Y)”按鈕,考試系統(tǒng)開始隨機抽取試題。抽取試題結(jié)束后,彈出“考試須知”界面(如圖5所示),考生須注意閱讀。尤其要注意:全國計算機等級考試二級c上機考試 模擬考試須知 系薪1.程序填空 (本題30分)1.程序填空 (本題30分)2.程序修改(本題30分)圖5“考試須知”界面注意:到目前為止的所有操作所花的時間都不會計入考試時間,因此考生可以從容操作,仔細閱讀“考試須知”,切勿出錯。(5)在單擊“開始答案并倒計時”按鈕后,隨即彈出考試界面(如圖6所示),考試正式開始并倒計時。圖6考試界面答題(1)考試界面分成“狀態(tài)信息條”(圖7)和“試題內(nèi)容査閱窗口”(圖8)兩個部分?!盃顟B(tài)信息條”用于顯示考生的準考證號碼、考試科目、考試剩余時間等信息。單擊“隱藏窗口”按鈕可以將“試題內(nèi)容查閱窗口”最小化,再単擊一次則會恢復(fù)。注意,在確認已經(jīng)完成所有試題之前,切勿點擊“交卷”按鈕。&:隱藏窗口2428999999010001二級C?81:47'X交卷圖7狀態(tài)信息條
法!S選擇法!S選擇按鈕一用于責(zé)看各種題型試題因題菜単U考生文件夾圖8試題內(nèi)容查閱窗口(2)“試題內(nèi)容查詢窗口”用于顯示填空題、改錯題和編程題的題目內(nèi)容。單擊’‘程序填空題”按鈕,則下方的“內(nèi)容顯示窗口”就會顯示填空題的題目;単擊“程序改錯題”按鈕,則下方的“內(nèi)容顯示窗口”就會顯示填空題的題目;單擊“程序設(shè)計題”按鈕,則下方的‘‘內(nèi)容顯示窗口”就會顯示編程題的題目。當“試題內(nèi)容查詢窗口”中顯示上下或左右滾動條時,表示該窗口中的試題尚未完全顯示,此時考生可用鼠標操作顯示余下的試題內(nèi)容,防止因漏做試題二影響考試成績?!翱忌募A”下面的路徑即屬于該考生的文件夾,考生可以根據(jù)該路徑從“我的電腦”中找到自己的考生文件夾(如圖9所示)。該文件中有4個文件,分別是“blankl.c”(填空題的程序)、“modil.c”(改錯題的程序)、“progl.c”(編程題的程序)和“in.dat”。需要說明的是,有些計算機不會顯示文件的后綴名。圖9考生文件夾注意:考生一定要在屬于自己的考生文件夾下的程序中作答,否則將不會得分。為了不找錯文件夾,考生也可以使用“試題內(nèi)容查詢窗口”中的“答題”菜單欄。單擊'‘答題”菜單欄,會彈出一個下拉菜單(如圖!0)所示。單擊“Blank1.C”,考試系統(tǒng)就會自動調(diào)用VC打開考生文件下的程序“blankl.c”;單擊“Modil.c”,考試系統(tǒng)就會自動調(diào)用VC打開考生文件下的程序“modil.c”;單擊“Progl.c”,考試系統(tǒng)就會自動調(diào)用VC打開考生文件下的程序“progl.c"。使用這種方法,就不會找錯考生文件夾。(単機版)第28次NCRE―ニ靈J後擬一考試系統(tǒng)姓名:二級C,碓考證號:2428999999U100CM答題(5)幫助(由Bianki,cModil.cProgl.c考生文件夾EXA1X24010001Bianki,cModil.cProgl.c考生文件夾EXA1X24010001;程序填空題程序修改題程序設(shè)計題 第二套探擬試題給定程序中,函數(shù)fun的功能是:本算岀帶有頭結(jié)點的單向鏈表中各結(jié)點數(shù)據(jù)域之和作為函數(shù)值返回。圖!0“答題”下拉菜單注意:有的考試系統(tǒng)中,單擊“答題”菜單欄彈出的下拉菜單顯示的是“填空題”、“改錯題”和“編程題”,這不會有影響。(3)做程序填空題時,首先単擊“程序填空題”按鈕,閱讀題目,理解題意。程序填空題的題目如圖!1所丞。(単機版)第28次NCREーニ錘J模擦一考試系統(tǒng)ー姓名:二,C,椎考證號:2428999999010001答題(5)幫助(由[程序填空題:程序修改題 程序設(shè)計題給定程序中,函數(shù)fun的功能是:計算出帶有頭結(jié)點的單向鏈表中各結(jié)點數(shù)據(jù)域之和作為函數(shù)值返回。請在程序的下劃線處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)注意:源程序存放在考生文件考下的BLANK1.C中。不得增若或刪行,也不痔更改程序的結(jié)構(gòu)!圖11程序填空題題目然后使用VC打開考生文件下的程序“blankl.c",該題的程序如下所示:#include<stdio.h>#include<stdlib.h>#define N8typedefstructlist(intdata;structlist*next;}SLIST;SLIST*creatlist(int*);voidoutlist(SLIST*);intfun(SLIST*h)(SLIST*p;ints=0;p=h->next;while(p)(/**********found**********/s+= 1 /★★★★★★★★★★^Qyj-j^**********/p= 2 }returns;}main()(SLIST*head;inta[N]={12,87,45,32,91,16,20,48);head=creatlist(a);outlist(head);/**********found**********/printf("\nsum=%d\n",fun( 3 ));}SLIST*creatlist(inta[])(SLIST*h,*p,*q; inti;h=p=(SLIST*)malloc(sizeof(SLIST));for(i=0;i<N;i++){q=(SLIST*)malloc(sizeof(SLIST));q->data=a[i];p->next=q;p=q;}p->next=0;returnh;)voidoutlist(SLIST*h)(SLIST*p;p=h->next;if(p==NULL)printf("ThelistisNULL!\n");else{printf("\nHead");do{printf("->%d",p->data);p=p->next;}while(p!=NULL);printf("->End\n");})在每ー個注釋行?/********fbund********/w的下方,都有一個形如“x”(X代表數(shù)字1、2或3)的空。考生要做的就是將“—x—”刪去,然后填上正確的答案,如下所示:intfun(SLIST*h)(SLIST*p;ints=0;p=h->next;while(p)(/**********found**********/s+=p->data;/*★********found**********/p=p->next;}returns;}main(){SLIST*head;inta[N]={12,8フ,45,32,91,16,20,48);head=creatlist(a);outlist(head);/★★★★★★★★★★found**********/printf("\nsum=%d\n",fun(head));注意:程序填空題不要求運行,但一定要保存。出于保險考慮,考生可以運行程序查看結(jié)果。程序填空題是否被運行,不影響考生的得分。(4)做程序改錯時,首先單擊“程序修改題”按鈕,閱讀題目,理解題意。程序修改題的題目如圖12所示。(單機版)第28次NCREーニ級J筏按.考試系統(tǒng)ー姓名:二,C,睢考證號:2428999999010001答題(S)幫助(ゆ考生文件夾
C:\VEXAI\24010001程序填空題;程序修改題:考生文件夾
C:\VEXAI\24010001程序填空題;程序修改題:程序設(shè)計題第一套模擬試題1=1+ 2ID給定程序M0DI1.C中fun函數(shù)的功能是:根據(jù)形參1=1+ 2ID例如,若植入5,則應(yīng)勤出2.283333。請改正程年中的錯誤或走橫線處填上適當?shù)膬?nèi)容并把橫線刪除,使它能計算出正確的結(jié)果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!圖12程序修改題題目然后使用VC打開考生文件下的程序“modil.c”,該題的程序如下所示:#include<stdio.h>doublefun(intm)(doublet=1.0;inti;for(i=2;i<=m;i++)/**********found**********/t+=1.0/k;/★★★★★★★★★★^Qyj-j^**********I}main(){intm;printf(n\nPleaseenter1integernumber:n);scanf(n%d",&m);printf(n\nTheresultis%lf\n"zfun(m));)在每ー個注釋行“/********fbund********/”的下方,都有一行或幾行程序,其中有一個(類)錯誤,考生須找出這個錯誤并改正,例如第一個注釋行“/********found********/”的下方只有一行程序“t+=1.0/k”,應(yīng)將其改為“t+=1.0/in?有的注釋行“/********found********/”下方會出現(xiàn)這樣的行“",這實際上就是ー個填空題,考生要做的就是把“”刪去,然后填上正確答案。例如第二個注釋行“/********found********/"的下方就有一個“”,將其刪去,然后填上“returnビ’,改正后的程序如下所示:#include<stdio.h>doublefun(intm){doublet=1.0;inti;for(i=2;i<=m;i++)/**********found**********/t+=1.0/i;/**********found**********/returnt;}main(){intm;printf(n\nPleaseenter1integernumber:n);scanf("%d",&m);printf(n\nTheresultis%lf\n”,fun(m));}程序中有多少行“/********fbund********/”,就說明程序中有多少個(類)錯誤,因為每個“/********佑und********/”下方的程序中都有一個(類)錯誤。ー類錯誤是指相同的錯誤,例如:/★★★★★★■★★found********/if(a>b)(t=aa=bb=a}上面的程序中,“/********fbund********/”下面的幾行程序中有三個地方少了分號(;),但都屬于同一類錯誤。任何ー個“/********found********/”下方的程序中都不會出現(xiàn)多類錯誤。注意:程序修改題同樣不要求運行,但一定要保存。出于保險考慮,考生可以運行程序查看結(jié)果。程序修改題是否被運行,不影響考生的得分。(5)做編程題時,首先單擊“程序設(shè)計題”按鈕,閱讀題目,理解題意。程序設(shè)計題的題H如圖13所示。(単機版)第28次NCREーニ疆J模按一考試系統(tǒng)ー姓名:二,C,睢考證號:2428999999010()()1答題(5)幫助(由務(wù)生文件夾
務(wù)生文件夾
C:\VEXAI\24010001程序填空題 程序修改題 程序設(shè)計題賓ー套模擬試題編寫函數(shù)fun,它的功能富計算:-71n(l)+ln(2)+ln(3)+ +In(加)s作為函數(shù)值塚回。在C語言中可御用log(n)函數(shù)求In(n).log函數(shù)的引用說明是:doublelog(doublex)。例如,若m的值為:20,fun函數(shù)值為:6.506583。注意:部分源程序在文隹PR0G1.C文件中。請勿改哥主函藪!nain^箕它函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。圖13程序設(shè)計題題冃然后使用VC打開考生文件下的程序“progl.c”,該題的程序如下所示:#include<math.h>#include<s
溫馨提示
- 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)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 產(chǎn)品試用服務(wù)合同范本
- 售后代運營合同范例
- 2024中國石油工程建設(shè)有限公司西南分公司招聘筆試參考題庫附帶答案詳解
- SLZ10型雙螺旋榨油機:結(jié)構(gòu)創(chuàng)新與壓榨理論的深度剖析
- 買車正規(guī)銷售合同范本
- 勞務(wù)外包外貿(mào)合同范本
- 回收餐飲油脂合同范本
- 2025至2031年中國醫(yī)用推拉自動門行業(yè)投資前景及策略咨詢研究報告
- 單位醫(yī)療合同范例
- 2025至2031年中國二氧化碳氣保焊機開關(guān)行業(yè)投資前景及策略咨詢研究報告
- 2025年哈爾濱幼兒師范高等??茖W(xué)校單招職業(yè)技能測試題庫1套
- 2025年湖南城建職業(yè)技術(shù)學(xué)院單招職業(yè)傾向性測試題庫及答案一套
- 2025年佳木斯職業(yè)學(xué)院單招職業(yè)傾向性測試題庫完整
- 2025廣東省安全員A證考試題庫
- 《酒店服務(wù)禮儀細節(jié)》課件
- 《建筑工程混凝土施工質(zhì)量控制課件》
- 2025-2030年中國煤炭行業(yè)發(fā)展動態(tài)及前景趨勢分析報告
- 2025年人工智能(AI)訓(xùn)練師職業(yè)技能鑒定考試題(附答案)
- 《稀土冶金技術(shù)史》課件-中國的稀土資源與分布
- 醫(yī)學(xué)影像檢查技術(shù)復(fù)習(xí)題(含參考答案)
- 意外保險理賠申請書
評論
0/150
提交評論