實(shí)驗(yàn)一 Visual C++ 6.0編譯系統(tǒng)入門_第1頁
實(shí)驗(yàn)一 Visual C++ 6.0編譯系統(tǒng)入門_第2頁
實(shí)驗(yàn)一 Visual C++ 6.0編譯系統(tǒng)入門_第3頁
實(shí)驗(yàn)一 Visual C++ 6.0編譯系統(tǒng)入門_第4頁
已閱讀5頁,還剩64頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

-ISJxJ5M$grt&0Rlook蜘-ISJxJ5M$grt&0Rlook蜘dowHet)第1部分實(shí)驗(yàn)篇實(shí)驗(yàn)一VisualC++6.0編譯系統(tǒng)入門實(shí)驗(yàn)?zāi)康氖炀氄莆誚isualC++6O編譯系統(tǒng)的常用功能。學(xué)會使用VisualC++6.0編譯系統(tǒng)創(chuàng)建、打開、編輯、保存、調(diào)試、運(yùn)行C程序。熟練掌握C程序結(jié)構(gòu)和語法規(guī)則。實(shí)驗(yàn)內(nèi)容.啟動VisualC++6.0并了解VisualC++6.0的環(huán)境。在Windows環(huán)境下,雙擊VisualC++6.0圖標(biāo),啟動VisualC++6.0進(jìn)入一個(gè)標(biāo)題為“TipoftheDay”窗口,如圖1.1所示。可以看到,在該窗口中顯示了一條幫助信息。單擊該窗口中的“NextTip”按鈕可以繼續(xù)得到更多的幫助信息。若單擊“Close”按鈕,則會關(guān)閉該窗口。進(jìn)入VisualC++6.0集成開發(fā)環(huán)境的主窗口,如圖1.2所示,表示VisualC++6.0已經(jīng)啟動成功。MkrosoftVHualJ.Bui1dxDebujXFindinFiles1\FindinFiles2\ResultsJ.]」Ready圖1」“TipoftheDay”窗口

圖1.2VisualC++6.0集成開發(fā)環(huán)境的主窗口VisualC++6O集成開發(fā)環(huán)境的主窗口由標(biāo)題欄、菜單欄、工具欄、工作區(qū)窗口、源代碼編輯窗口、輸出窗口和狀態(tài)欄組成。屏幕窗口最上方是標(biāo)題欄,顯示所打開的應(yīng)用程序名。標(biāo)題欄左端是控制菜單圖標(biāo),單擊后彈出窗口控制菜單。標(biāo)題欄右端從左至右有三個(gè)控制按鈕,分別為最小化、最大化和關(guān)閉按鈕,可以用它們快速設(shè)置窗口的大小。標(biāo)題欄下方是菜單欄,由9個(gè)菜單項(xiàng)組成。單擊菜單項(xiàng)彈出下拉式菜單,可使用這些菜單項(xiàng)實(shí)現(xiàn)集成開發(fā)環(huán)境的各種功能。菜單欄下方是工具欄,它由若干個(gè)功能按鈕組成,單擊按鈕可實(shí)現(xiàn)某種操作功能。該工具欄中共有15個(gè)工具項(xiàng)按鈕。如圖1.3所示。如圖13工具欄自左至右各按鈕的功能介紹如F:,NewTextFile創(chuàng)建新的文本文件Open打開已有文檔Save保存當(dāng)前文檔內(nèi)容SaveAll保存所有打開的文檔?Cut將選定的文檔內(nèi)容從文檔中刪除,并將之復(fù)制到剪貼板中Copy將選定的文檔內(nèi)容復(fù)制到剪貼板中Paste在當(dāng)前插入點(diǎn)處粘貼剪貼板中的內(nèi)容?Undo取消最近一次編輯操作Redo恢愛前一次取消的編輯操作,Workspace顯示或隱藏工作區(qū)窗口,Output顯示或隱藏輸出窗口Windowslist管理當(dāng)前打開的窗口FindinFile在多個(gè)文件中搜索字符串Find激活查找工具,Search搜索聯(lián)機(jī)文檔工具欄的下方有左右兩個(gè)窗口,左窗口是項(xiàng)目工作區(qū)窗口,右窗口是源代碼編輯窗口。在項(xiàng)目工作窗口和源代碼編輯窗口的下方有?個(gè)輸出窗口,在創(chuàng)建項(xiàng)目(Build)時(shí),用來顯示項(xiàng)目創(chuàng)建過程中的錯(cuò)誤信息。屏幕最底部是狀態(tài)欄,它可以給出當(dāng)前操作或所選命令的提示信息。.實(shí)驗(yàn)例題將下面改錯(cuò)題輸入到源代碼編輯窗口,調(diào)試,注意系統(tǒng)出現(xiàn)的信息。修改錯(cuò)誤,直到程序運(yùn)行成功。#include<stdio.h>main()/*mainfunction*/{printf("OK.\n"))操作步驟:1)在VisualC++6.0集成開發(fā)環(huán)境的主窗口,單擊File菜單,如圖14所示。

2)選擇New選項(xiàng),出現(xiàn)如圖15所示的New對話框。圖1.5New命令對話窗口3)在New對話框中單擊Files菜單,如圖1.6所示。4)選擇“C++SourceFile”項(xiàng),在File文本框中輸入源代碼文件的文件名(例如:aaa.c),并單擊Location項(xiàng)的按鈕,出現(xiàn)如圖L7所示的對話框。5)在Drives選項(xiàng)中找出要保存文件的盤符,例如:要將aaa.c文件保存在D:盤上,如圖L8所示。并單擊ChooseDirectory對話框中的“OK”按鈕。6)返回到New對話框,如圖1.9所示。繼續(xù)單擊New對話框中的“OK”按鈕。7)系統(tǒng)返回VisualC++6.0集成開發(fā)環(huán)境的主窗口,并顯示源代碼編輯窗口。如圖1.10所示。8)在源代碼編輯窗口輸入改錯(cuò)的程序。如圖1.11所示。9)單擊菜單欄的Build菜單,選擇“Build”項(xiàng)進(jìn)行編譯和鏈接。如圖1.12所示。10)因?yàn)椤皃rintf("OK.\n")”語句缺少“;”,所以編譯系統(tǒng)在項(xiàng)目工作窗口和源代碼編輯窗口的下方窗口顯示錯(cuò)誤信息。如圖1.13所示。11)根據(jù)錯(cuò)誤信息找到相應(yīng)的地方進(jìn)行修改,使之正確無誤。如圖L14所示。12)再選擇“Build”項(xiàng)進(jìn)行編譯和鏈接。如圖1.15所示。13)屏幕出現(xiàn)“詢問是否創(chuàng)建默認(rèn)項(xiàng)目工作區(qū)”對話框,如圖L16所示。14)單擊“Yes”按鈕,屏幕出現(xiàn)如圖1.17所示的“詢問是否保存文件”對話框。15)單擊“Yes”按鈕,系統(tǒng)開始對源程序文件進(jìn)行編譯,如果程序仍然有錯(cuò)必須再

次修改并重新對源程序進(jìn)行編譯,直到?jīng)]有錯(cuò)誤信息為止。如圖L18所示。IkrosoftVisualC++如圖1.6圖1.7單擊“Location”按鈕后的窗口16)執(zhí)行程序可以選擇“Build”菜單中的“執(zhí)行”命令,或者單擊主窗口工具欄中帶“!”的BuildExecute快捷鍵。屏幕出現(xiàn)如圖1.19所示的DOS形式的“輸入數(shù)據(jù)和輸出結(jié)果”窗口。如果程序要求鍵盤輸入數(shù)據(jù),則C++等待用戶操作,然后顯示程序的輸出結(jié)果。當(dāng)程序成功執(zhí)行并輸出結(jié)果后,VisualC++顯示提示

信息:"Pressanykeytocontinue";這時(shí)按鍵盤上任意鍵,系統(tǒng)返網(wǎng)主窗口。圖1.8選中D盤后的窗口圖1.9單擊“OK”按鈕后的窗口

圖1.10源代碼編輯窗口圖1.11輸入改錯(cuò)程序后的源代碼編輯窗口

圖1.12選擇“Build”項(xiàng)進(jìn)行編譯圖1.13編譯后給出錯(cuò)誤信息窗口

圖1.14程序修改后的窗口圖1.15Build窗口

圖1.16“詢問是否創(chuàng)建默認(rèn)項(xiàng)目工作區(qū)”時(shí)話框圖1.17 “詢問是否保存文件”對話框

圖L18無錯(cuò)誤信息的窗口圖1.19”輸入數(shù)據(jù)和輸出結(jié)果”窗口注意要點(diǎn):在編譯和鏈接時(shí),如果編譯器發(fā)現(xiàn)程序的語法錯(cuò)誤,則會在輸出窗口中顯示錯(cuò)誤信息,這些信息包括錯(cuò)誤的性質(zhì)、出現(xiàn)的位置和產(chǎn)生錯(cuò)誤的原因等。如果雙擊某條錯(cuò)誤信息,文件編輯區(qū)窗口的右邊出現(xiàn)一個(gè)箭頭,指向出現(xiàn)錯(cuò)誤的程序行,此時(shí)用戶可以根據(jù)錯(cuò)誤的性質(zhì)修改程序。修改后還需重新對■源程序再進(jìn)行編譯,直到?jīng)]有錯(cuò)誤信息為止。執(zhí)行程序是出現(xiàn)的錯(cuò)誤稱為運(yùn)行錯(cuò)誤。例如,負(fù)數(shù)求開平方、溢出和內(nèi)存不夠等。如果出現(xiàn)運(yùn)行錯(cuò)誤,用戶還要修改源程序并且重新編譯、鏈接和執(zhí)行。執(zhí)行結(jié)果顯示出來后,并不意味它一定是所求解問題的正確答案。因?yàn)槌绦蚩赡艽嬖谶壿嬪e(cuò)誤。例如,算法錯(cuò)誤、使用運(yùn)算符錯(cuò)誤等。這種錯(cuò)誤不能被編譯器發(fā)現(xiàn),必須通過人工測試、驗(yàn)證去查找和修正錯(cuò)誤。3.實(shí)驗(yàn)操作題讀程序?qū)懡Y(jié)果/*****s]—[ *****/main()(inta,b,c,d;a=b=c=5;c+=a+++b;d=c%a;printf(4ta=%d,b=%d,c=%d,d=%d\n,,,a,b,c,d);}上機(jī)前分析結(jié)果:實(shí)際上機(jī)結(jié)果:完善程序程序功能:下面的程序是求整數(shù)a/b的商和余數(shù),請用正確的表達(dá)式填空。/*****sl-2C*****/main(){inta,b,c,d;a=100;b=30;printf(4ta=%d,b=%d,c=%d,d=%d\n,\a,b,c,d);改錯(cuò)(1)將下面改錯(cuò)題輸入到c編輯窗口,調(diào)試,注意系統(tǒng)出現(xiàn)的信息。修改錯(cuò)誤,直到程序運(yùn)行成功。/*****s].3c*****/#includestdio.h;main();/*mainfunction*/floatr,s; /*/*risrtadius*/,/*sisareaofcircular*/*/r=5.0;s=3.14159*r*r;printf("%f/n”,s)提示:注意符號的要求。⑵/*****s]-4.C*****/#includestdio.hmainIfloata,b,c,v;a=2.0;b=3.0;c=3.0v=a*b*c;printf(<<%f\n,\v))程序設(shè)計(jì)(1)輸入半徑,計(jì)算圓面積。(sl-5.c)提不:.定義兩個(gè)變量存放半徑和圓面積的值;.給半徑賦值;.計(jì)算圓面積=半徑X半徑X3.14159;.輸出圓面積的值。(2)輸入出生年份和當(dāng)前年份計(jì)算年齡。(sl-6.c)提示:.定義兩個(gè)變量存放出生年份和當(dāng)前年份;.輸入變量:出生年份,當(dāng)前年份;.計(jì)算年齡=當(dāng)前年份-出生年份;.輸出年齡。(3)輸入3個(gè)變量的值,假設(shè)三個(gè)變量分別是1,2,3;將它們的值交換后輸出,要求a的值放入b,b的值放入c,c的值放入a中。(sl-7.c)提示:交換三個(gè)變量的值,需要借助另一個(gè)變量。即該程序應(yīng)定義4個(gè)變量。(4)把1050分鐘換算成用小時(shí)和分鐘表示,然后進(jìn)行輸出。(sl-8.c)提示:輸出語句為:printf("%d小時(shí)%d分鐘\n”,h,m);其中h,m為存放小時(shí)和分鐘的變量。實(shí)驗(yàn)二順序結(jié)構(gòu)實(shí)驗(yàn)?zāi)康?熟練掌握順序語句的使用。.理解并運(yùn)用各種表達(dá)式。.熟練掌握輸入輸出語句的使用及常用格式字符的使用。實(shí)驗(yàn)內(nèi)容程序?qū)懡Y(jié)果(1)/*****s2T.e*****/#include<stdio.h>main(){inti,j,m,n;i=8;j=10;m=++i;n=j++;printf("%d,%d,%d,%d\n”,i,j,m,n);}上機(jī)前分析結(jié)果:實(shí)際上機(jī)結(jié)果:/*****s2-2.C*****/#include<stdio.h>main()(inta,b,d=241;a=d/100%9;b=(-l)&&(-!);printf("%d,%d\n”,a,b);}上機(jī)前分析結(jié)果:實(shí)際上機(jī)結(jié)果:/*****s2-3.C*****/#include<stdio.h>main()inta=3,b=2,c=l,d;d=(a>b>c);printf("%d\n”,d);)上機(jī)前分析結(jié)果:實(shí)際上機(jī)結(jié)果:/*****s2-4.C*****/#include<stdio.h>main(){inti=16,j,x=6,y,z;j=i+++l;printf("l:%d\n”,j);x*=i=j;printf("2:%d'n",x);x=l;y=2;z=3;x+=y+=z;printf(,,3:%d\n,',z+=x>y?x++:y++);x=y=z=-1;++xll++y&&++z;printf(H5:%d,%d,%d\nM,x,y,z);}提示:關(guān)系運(yùn)算符分為兩個(gè)優(yōu)先級,和“<=”處于同一優(yōu)先級;“=”和"!=”處于同一優(yōu)先級,前者優(yōu)先級高于后者。邏輯運(yùn)算符優(yōu)先級為非(!)>與(&&)>或(II),“!”優(yōu)先級高于算術(shù)運(yùn)算符,“&&”和“II”優(yōu)先級低于算術(shù)運(yùn)算符和關(guān)系運(yùn)算符。上機(jī)前分析結(jié)果:實(shí)際上機(jī)結(jié)果:.完善程序下列給定程序的功能是:從鍵盤輸入圓柱體的半徑r和高度h,計(jì)算其底面積s和體積v并輸出。請完善程序并調(diào)試。(s2-5.c)/*****s2-5.C*****/#include<stdio.h>main(){floatpi=3.1415926;floatr,h,s,v;printf("Pleaseinputr,h:n);scanf(n%f,—1—",&r,_2_);s=_3;v=4;printf(narea= 5 ,volume= 6 \nH,s,v);).程序設(shè)計(jì)從鍵盤輸入變量x,y的值,交換它們的值并輸出。(s2-6.c)提示:.用scanf函數(shù)輸入x,y的值;.用第三個(gè)變量輔助交換x,y的值:.用printf函數(shù)將交換后的x,y輸出。(2)輸入一個(gè)十進(jìn)制數(shù),輸出八進(jìn)制,十六進(jìn)制。(s2-7.c)提示:應(yīng)用printf函數(shù)的格式控制。(3)編寫程序求出任一輸入字符的ASCH碼。(s2-8.C)提示:接收一個(gè)字符賦給變量,以整型輸出該變量。(4)從鍵盤輸入a,b,c三個(gè)變量的值,輸出其中最大的值。(s2-9.c)提示:用條件運(yùn)算符(?:)實(shí)現(xiàn)。(5)輸入一個(gè)華氏溫度,要求輸出攝氏溫度。公式為c=5("132)。精確到小數(shù)點(diǎn)后兩位數(shù)字。提示:應(yīng)用printf函數(shù)的格式控制中的長度限制。(s2-10.c)(6)從鍵盤輸入兩個(gè)二位數(shù)的正整數(shù)a和b,將它們合并形成一個(gè)新的整數(shù)c輸出。合并方式是:將a的十位和個(gè)位數(shù)依次放在c數(shù)的十位和千位上,b數(shù)的十位和個(gè)位數(shù)依次放在c數(shù)的百位和個(gè)位上。(如:a=35,b=42時(shí),c=5432)(s2-ll.c)提示:考慮如何我取二位數(shù)的個(gè)位、十位,分別存入相應(yīng)變量中,再組合輸出。(7)輸入一個(gè)雙精度數(shù),對小數(shù)點(diǎn)后第2位進(jìn)行四舍五入,即保留一位小數(shù),輸出四舍五入后的結(jié)果:(S2-12.C)提示:1.注意scanf函數(shù)和printf函數(shù)具有不同的格式字符;.注意數(shù)的真正精度與實(shí)際顯示寬度是不同的;.分清數(shù)的精度與顯示寬度;.四舍五入算法:x=(x+0,05)*10;x=(int)x;x=x/10;實(shí)驗(yàn)三選擇結(jié)構(gòu)實(shí)驗(yàn)?zāi)康?掌握C語言的關(guān)系運(yùn)算符、邏輯運(yùn)算符以及它們的表達(dá)式。.掌握各種if語句的使用方法。.掌握switch語句的使用.掌握嵌套的選擇結(jié)構(gòu)實(shí)驗(yàn)內(nèi)容.讀程序?qū)懡Y(jié)果/*****s3T.e*****/#include<stdio.h>main()(inta=10;if(a>10)primf("%d\n”,a>10);elseprintf(**%d\nM,a<=10);1上機(jī)前分析結(jié)果:實(shí)際上機(jī)結(jié)果:/*****s3-2.C*****/#include<stdio.h>main(){inta,b,c,d,x;a=c=O;b=l;d=20;if(a)d=d-10;elseif(!b)if(!c)x=15;elsex=25;printf("d=%d\n”,d);}提示:當(dāng)程序中存在嵌套的if…else…結(jié)構(gòu)時(shí),由后向前每一個(gè)else都與其前面的最靠近它的if配對。上機(jī)前分析結(jié)果:實(shí)際上機(jī)結(jié)果:(3)/*****s3-3.C*****/#include<stdio.h>main(){intx=l,y=O;switch(x){case1:switch(y)(caseO:printf("first\n'');break;case1:prinlf("second\rT);break;}case2:printf("third\n'');)}上機(jī)前分析結(jié)果:實(shí)際上機(jī)結(jié)果:2.完善程序(1)將用戶輸入的字母進(jìn)行大小寫換成。(s3-4.c)提示:小字字母a比大寫字母大32。接收一個(gè)字符,判斷是否大小寫,再進(jìn)行相應(yīng)轉(zhuǎn)換。/*****s3-4.C*****/#include<stdio.h>main(){chari;scanf("%c”,&i);if(—1—)2;elseif(3)4;printf(<t%c\n,,,i);3.程序設(shè)計(jì)(1)輸入一整數(shù),輸出它是奇數(shù)還是偶數(shù)。(s3-5.c)提示:若除2的余數(shù)為0則輸出偶數(shù),否則輸出奇數(shù)。(2)輸入3個(gè)數(shù),輸出其中的最大數(shù)。(s3-6.c)提示:用scanf函數(shù)輸入3個(gè)變量,用選擇語句比較后用printf將結(jié)果輸出。一函數(shù):(s3-7.c)-x(-5<x<0)y=]x—1 (x=0)x+1 (0<x<10)編寫程序:要求輸入x,輸出y。(4)輸入一個(gè)學(xué)生的生日(年,月,日:yl,ml,dl);并輸入當(dāng)前的日期(年,月,日:y2,m2,d2);輸出該生的實(shí)足年齡。(s3-8.c)提示:1.因?yàn)槊吭碌奶鞌?shù)不等,所以只要求精確到年月;.可設(shè)定實(shí)足年齡為y3歲零m3個(gè)月;.參考算法:y3=y2-yl;m3=m2-ml;if(m3<0){y3—;m3=12-abs(m3);}(5)輸入一個(gè)成績,要求輸出成績等級A、B、C、D、E,90分以上為“A”,80-90為“B”,70-79為“C”,60-69為“D”,其它為“E"。(s3-9.c)提示:用switch實(shí)現(xiàn)。實(shí)驗(yàn)四循環(huán)結(jié)構(gòu)實(shí)驗(yàn)?zāi)康?熟練掌握循環(huán)語句的使用方法。.重點(diǎn)掌握FOR循環(huán)語句的使用。.掌握各種循環(huán)的嵌套。.掌握break和continue語句在循環(huán)結(jié)構(gòu)中的應(yīng)用。實(shí)驗(yàn)內(nèi)容.讀程序?qū)懡Y(jié)果/*****s4-l.C*****/#include<stdio.h>main(){intx;x=-l;do{x=x*x;}while(!x);printf(44x=%d\n,\x);}上機(jī)前分析結(jié)果:實(shí)際上機(jī)結(jié)果:該循環(huán)執(zhí)行了次⑵/*****s4-2.C*****/#include<stdio.h>main(){inti;for(i=l;i<6;i++){if(i%2)printf(M#n);elsecontinue;printf(H*");)printfCt\nM);}上機(jī)前分析結(jié)果:實(shí)際上機(jī)結(jié)果:⑶/*****s4-3C*****/#include<stdio.h>main()inti,j,k;for(i=l;i<=6;i++)(for(j=1;j<=20-2*i;j++)printf(44");for(k=1;k<=i;k++)printf("%4d”,i);printf("\n'');})上機(jī)前分析結(jié)果:實(shí)際上機(jī)結(jié)果:.完善程序程序功能是:計(jì)算1-50之間7的倍數(shù)的數(shù)值之和。(s4-4.c)/*****s4?7C*****/#include<stdio.h>main()(TOC\o"1-5"\h\zinti,sum=1 ;fbr(i=l;2 ;i++)if(3 )sum+=i;printf(t4sum=%d\n,,,sum);.改錯(cuò)程序功能是:計(jì)算1-10之間的奇數(shù)和偶數(shù)之和。(s4-5.c)/*****s4-8C*****/#include<stdio.h>main()(inti,a,b,c;a=c=0;for(i=0,i<=10,i+2);{a+=i;/**********found***********/b=a+lc+=b;printf(44Thesumofeven=%d\n,\a);printf(44Thesumofodd=%d\n,,,c);.程序設(shè)計(jì)(1)求1-3+5—7+……-99+101的值。(s4-6.c)⑵求1!+2!+3!+4!+…+n!的和,n由鍵盤輸入。(s4-7.c)(3)1000以內(nèi)的水仙花數(shù):如:153=1*1*1+5*5*5+3*3*3。(s4-8.c)提示:循環(huán)100-999查找。(4)求200?300之間的數(shù),且滿足條件:它們?nèi)齻€(gè)數(shù)字之積為42,三個(gè)數(shù)字之和為12?(s4-9.c)(5)雞兔共有30只,腳90只,編程計(jì)算雞兔各有多少只。(s4-I0.c)提示:設(shè)有雞x只,則兔只有30-x只,循環(huán)0-15次,即可求得。(6)計(jì)算e=l+l〃!+l/2!+l/3!+……l/n!o精度為1E-6(即l/n!<!E-6就停止循環(huán)。)(s4-ll.c)提示:階乘的計(jì)算公式為:2!=1*2;3!=1*2*3;n!=l*2*3* *n(7)寫程序:輸出10以內(nèi)的加法表。(s4-12c)提示:用雙重循環(huán)實(shí)現(xiàn)。(8)求兩個(gè)非負(fù)整數(shù)u和v的最大公約數(shù)。(s4-13c)提示:.用輾轉(zhuǎn)相除法實(shí)現(xiàn);.算法為:將較大的數(shù)放在變量u中,較小的數(shù)放在v中。當(dāng)v不為。時(shí),用輾轉(zhuǎn)操作:temp=u%v;u=v;v=temp;當(dāng)v為0時(shí),u即為最大公約數(shù)。(9)寫程序,輸出以下圖形。(s4-14c)AAAAAAAAAAAAAAAA提示:圖形中的每行輸出的空格數(shù)和字符數(shù)隨著行的下移而減少和增加,故可通過兩個(gè)for循環(huán)控制每行輸出的空格數(shù)和字符數(shù)。用一個(gè)大循環(huán)(包含上面的兩個(gè)循環(huán))控制不同行的輸出。for( ) /*從第一行到最后一行*/{for()printf();/*輸出若干空格*/for(……)printf(……);/*輸出若干字符*/printf( );} /*換行*/實(shí)驗(yàn)五數(shù)組實(shí)驗(yàn)?zāi)康?掌握一維數(shù)組和二維數(shù)組的定義、數(shù)組元素的引用形式和數(shù)組的輸入輸出方法。.掌握字符數(shù)組和字符串函數(shù)的使用。.掌握與數(shù)組有關(guān)的算法(如:排序算法、矩陣運(yùn)算等)。實(shí)驗(yàn)內(nèi)容.讀程序?qū)懡Y(jié)果([)/*****§5-1C*****/#include<stdio.h>main()(inta[]={1,2,3,4},i,j,s=0;j=l;for(i=3;i>=0;i-)(s=s+a[i]*j;j=j*10;}printf("s=%d\n",s);}上機(jī)前分析結(jié)果:實(shí)際上機(jī)結(jié)果:⑵/*****s5-2C*****/#include<stdio.h>main()(chara[20]=nGood\t\\\0ChinaH;inti,j;i=sizeof(a);j=strlen(a);printf("%d,%d\n",ij);}上機(jī)前分析結(jié)果:實(shí)際上機(jī)結(jié)果:(3)/*****s5-3.C#include<stdio.h>main()(chars[]=Hagoodworld',;intij;for(i=j=O;s[i]!=*\O';i++)if(s[i]!=,d,)s[j++]=s[i];s|j]=、。';printf(H%sM,s);)上機(jī)前分析結(jié)果:實(shí)際上機(jī)結(jié)果:(4)/*****s5-4.C*****/#include<stdio.h>main()(intfib[12],i;fib[0]=0;fib[l]=l;for(i=2;i<12;i++)fib[i]=fib[i-l]+fib[i-2];for(i=0;i<12;i++)printf(M%6dM,fibli]);printf(n\nn);)上機(jī)前分析結(jié)果:實(shí)際上機(jī)結(jié)果:.完善程序(1)以下程序?qū)⒆x入的字符串si復(fù)制給s2,請完善程序并調(diào)試。/**********/#include<stdio.h>main()(inti;charsll20],s2[20];printf(Menterstring1:H);gets(sl);for(i=0;1;i++)2;printf(',string2:%s\n,',3);(2)以下程序的功能是:計(jì)算矩陣所有周邊元素的和。部分源程序如下:提示:先對矩陣上邊和下邊元素求和,再對矩陣左邊和右邊元素求和。/*****§5一6*****/#include<stdio.h>#defineM4#defineN3main(){inta[M][N]={{1,2,3},{4,5,6},{7,8,9},{10,11,12)};intsum=0,i,j;for(i=0;i<N;i++)sum+=a[0][i]+ 1 ;for(j=l;j<M-l;j++)sum+=a[j][01+_2_;printf("%d\n”,sum);1.改錯(cuò)下列給定程序的功能是:從字符串s中,刪除所有大寫字母'F\請改正程序中的錯(cuò)誤,使它能得到正確的結(jié)果。/*****§5-7C*****/#include<stdio.h>main()(intij;chars[80];printf("enterstring:");gets(s);/**********found**********/for(i=j=O;s[i]!='O';i++)if(s[i]!=F)/**********fouiid**********/s[j]=s[i];sm='o';printf("string2:%s\n",s);).程序設(shè)計(jì)(1)輸入10個(gè)整數(shù)存入一維數(shù)組,按逆序重新存放后再輸出。(s5-8.c)提示:重新存放就是數(shù)據(jù)交換的過程。(2)輸入10個(gè)整數(shù)存入一維數(shù)組,找出最小的數(shù),然后把它和數(shù)組中最前面的元素對換位置再輸出。(s5-9.c)提示:找最小值及最小值所在元素的下標(biāo),將其與最前面的元素交換。(3)將輸入字符串中所有下標(biāo)為偶數(shù)位置上的字母轉(zhuǎn)化為大寫字母。(S5-10.C)提示:大小寫字母相差32。對大寫字母和其它字符,則不進(jìn)行轉(zhuǎn)換。(4)將用戶輸入的十進(jìn)制整數(shù)轉(zhuǎn)換成二進(jìn)制(八進(jìn)制)的數(shù)。(S5-U.C)提示:接收一個(gè)十進(jìn)制數(shù)和要轉(zhuǎn)換的進(jìn)制,用輾轉(zhuǎn)相除法實(shí)現(xiàn)。(5)輸入兩個(gè)字符串(<40字節(jié)),連接后輸出(不許用系統(tǒng)函數(shù))。(S5-12.C)提示:字符串本身是一個(gè)字符型數(shù)組,注意字符串結(jié)束符。(6)從鍵盤上輸入15個(gè)整數(shù)存入一維數(shù)組中,對該數(shù)組進(jìn)行排序(降序),輸出排序后的結(jié)果。(s5-13.c)(7)_將100以內(nèi)的所有素?cái)?shù)存入一維數(shù)組中并輸出。(s5-14.c)提示:判斷數(shù)n是素?cái)?shù)的方法:該數(shù)不能被2到n-1之間的數(shù)除盡。實(shí)驗(yàn)六函數(shù)實(shí)驗(yàn)?zāi)康?熟練掌握函數(shù)的定義和使用方法。.熟練掌握調(diào)用函數(shù)與被調(diào)用函數(shù)之間的數(shù)據(jù)傳遞。.掌握函數(shù)的返回值和類型。.掌握的嵌套調(diào)用和遞歸調(diào)用。實(shí)驗(yàn)內(nèi)容.讀程序、寫結(jié)果⑴/*****s6J.c*****/#include<stdio.h>main()(inta=2,b=10;func(a,b);printf(4ta=%d,b=%d\n,\a,b);}func(inta,intb)(inttemp;temp=a;a=b;b=temp;}上機(jī)前分析結(jié)果:實(shí)際上機(jī)結(jié)果(分析原因):(2)/*****s6-2c*****/#include<stdio.h>inta=1,j=2;main(){inti=2;func();printfCta=%d,i=%d,j=%d\n,\a,ij);}func(){intn,i=5;printf(4€a=%d,i=%d\n,\a,-i);i++;a++;if(a<4)func();a--;j+=3;printf("a=%d,j=%d\n”,a,j);}提示:注意函數(shù)遞歸調(diào)用的過程。上機(jī)前分析結(jié)果:實(shí)際上機(jī)結(jié)果:(3)/*****s6-3c*****/qianl(intx,inty){intc,s,t;s=x+y;t=x-y;c=qian2(s,t);return(c);printf(,,c=%d\nM,c);}qian2(intx,inty){return(x+y);}main(){inta=l,b=2,c;c=2*qian1(a,b);printf(Hc=%d\nu,c);)上機(jī)前分析結(jié)果:實(shí)際上機(jī)結(jié)果:.完善程序(1)給定程序中,函數(shù)fun的功能是:計(jì)算F式前n項(xiàng)的和作為函數(shù)值返回。Ix3_3x5^5x7_ 1(2x?-l)x(2x?+l)22 42 62 1 (2x?)2例如:當(dāng)行參n的值為10時(shí),函數(shù)返回-0.204491。/*****s6-4c*****/#include<stdio.h>doublefun(intn)(inti,k;doubles,t;s=0;k=—1—;for(i=l;i<=n;i++)(t=2 :s=s+k*(2*i-l)*(2*i+l)/(t*t);k=k* 3 ;}returns;}main()(intn=-l;while(n<0)(printf("Pleaseinput(n>0):");scanf(u%d'\&n);}printf(n\nTheresultis:%f\n",fun(n));)⑵以下函數(shù)的功能是:求100(不包括100)以內(nèi)能被2或5整除,但不能同時(shí)被2或5整除的自然數(shù)。結(jié)果保存在數(shù)組bb中,函數(shù)fun()返回?cái)?shù)組bb元素的個(gè)數(shù)。/*****§6-5c*****#include<stdio.h>#defineN100intfun(intbb[])(inti,j;for(_1—;i<100;i++)if((i%2!=0&&i%5==0)ll(i%2==0&&i%5!=0))―2—;returnj;)main()(inti,n;intbb[N];clrscr();n=fun(bb);for(i=0;i<n;i++){if(i%10==0)printf(M%4d\bb[i]);})3.改錯(cuò)(1)以下fun函數(shù)用以判斷n是否為素?cái)?shù)。fun函數(shù)中有邏輯錯(cuò),main函數(shù)完成從鍵盤接收一個(gè)整數(shù),再以該數(shù)為參數(shù)調(diào)用fun函數(shù),修改fun中的錯(cuò)誤。/*****s6-6c*****#include<stdio.h>fun(intn){/*****砧und*****/intk,yes=0;for(k=2;k<=n/2;k++)/*****found*****/if(n%k==0)yes=1;/*****^)und*****/return;}main(){intx;printf(H\ninputanumber:");scanf(H%d'\&x);if(fun(x))printf(H%disshushu.\nn,x);elseprintf("%disn'tshushu.\n",x);)9a Q IQ 91(2)給定程序的功能是:求出以下分?jǐn)?shù)序列的前n項(xiàng)之和:,……。12 35 8 13和值通過函數(shù)值返回。(例如:若n=5,則應(yīng)輸出8.391667)/*****s6.7c*****#include<conio.h>#include<stdio.h>/********f^)und********/fun(intn)inta,b,c,k;doubles;s=0.0;a=2;/********found********/b=0;for(k=l;k<=n;k++){s=s+(double)a/b;c=a;a=b+c;b=c;)/********found********/returns}main()(intn=5;clrscr();printf("\nthevalueoffunctionis:%f\n",fun(n));}4.程序設(shè)計(jì)(1)判斷輸入年份是否為閏年。(s6-8.c)提示:.寫一個(gè)函數(shù):若參數(shù)Y為閏年,則返回1,否則返回0;.判斷年份是否為閏年的條件是:①公元年數(shù)如能被4整除而不能被100整除,則是閏年;②公元年數(shù)能被400整除也是閏年。(2)編寫程序,通過函數(shù)調(diào)用,求表達(dá)式/-5*1+4的值,x作為參數(shù)傳遞給函數(shù),假設(shè)x1=20.34,x2=3o(S6-9.C)調(diào)用此函數(shù)求:yl=22-5*2+4y2=(xl+15)2-5*(xl+15)+4y3=sin?x2-5*sinx2+4(3)寫函數(shù),根據(jù)整型形參m的值,計(jì)算如下公式的值。(S6-10.C),1 11t=\ 2*23*3 m^m(4)下面程序的功能是計(jì)算5=才依,請編寫求n!的函數(shù)fun。k—Q/*****s6~4c*****/longfun(intn)|main(){inti,n;longs;scanf(0%dM,&n);s=0;for(i=|;i<=n;i++);s=s+fun(i);printf("%ld\n",s)'}(5)請編寫函數(shù)countch,其功能是:分別統(tǒng)計(jì)字符串中英文字母、空格、數(shù)字和其它字符的個(gè)數(shù)。/*****s6?]2c*****#include<stdio.h>#include<string.h>intletters=0,space=0,digit=0,others=0;voidcountch(charstr[],intn)}voidmain(){inti;chars[30];printf(n\npleaseinputsomecharacters\nu);for(i=O;s[i]=getchar(),s[i]!='\n*;i++);countch(s,i);puts(s);printf(,'char=%dspace=%ddigit=%dothers=%d\nM,letters,space,digit,others);(6)請編寫函數(shù)fun,其功能是:判斷形參s所指字符串是否是“回文”(palindrome),若是,函數(shù)近回值為1;不是,函數(shù)近回值為0。“回文”是正讀和反讀都一樣的字符串。例如:LEVELTLEVEL是回文,而LEVLEV不是"回文”。/***** 11c*****#include<stdio.h>#include<string.h>intfun(charstr[])}main(){inti,f;chars[30];printf(,'\inputstrings:n);gets(s);f=fun(s);if(f)printf("\n%sisaPalindrome.\n'\s);elseprintf("\n%sisn*taPalindrome.\n'\s);}實(shí)驗(yàn)七存儲類型和編譯預(yù)處理實(shí)驗(yàn)?zāi)康?掌握全局變量和局部變量的含義及其使用方法。.掌握變量的各種存儲類型及其使用方法。.掌握內(nèi)部函數(shù)和外部函數(shù)的含義及其使用方法。.掌握靜態(tài)變量的作用域及使用。.掌握宏定義和文件包含的含義及其使用方法。實(shí)驗(yàn)內(nèi)容.讀程序、寫結(jié)果(])/*****s7.1c*****/#include<stdio.h>intx=-8,y=100;func(inta){inty;y=x+a;x++;a++;retum(x+y+a);}main(){intm=2;y=func(m);printfC4x=%d,y=%d,m=%d\n,\x,y,m);)上機(jī)前分析結(jié)果:實(shí)際上機(jī)結(jié)果:2)/*****s7-2.c*****/#include<stdio.h>main(){inta[]={3,8,4,2),i;intx=0;for(i=0;i<4;i++){func(a,x);printff4%d,\x);func(ints[],inty)staticintt=0;y=s[t];t++;)上機(jī)前分析結(jié)果:實(shí)際上機(jī)結(jié)果:⑶/*****s7-3c*****/#include<stdio.h>#defineN2#defineMN+l#defineNUM(M+l)*M/2main()(inti,n=O;for(i=l;i<=NUM;i++)printf("%d”,n);}printf(“\n”);)上機(jī)前分析結(jié)果:實(shí)際上機(jī)結(jié)果:(4)/*****s7-4c*****/#include<stdio.h>#defineS(x)x*xmain()(inta,k=3;a=++S(k+l);printf(M%d\nM,a);)上機(jī)前分析結(jié)果:實(shí)際上機(jī)結(jié)果:(5)/*****s7.5c*****/#defineT(x,y)(x)<(y)?(x):(y)main()inti=5,j=10,k;k=10*T(i,j);printf(,,%d\n',,k);}上機(jī)前分析結(jié)果:實(shí)際上機(jī)結(jié)果:/***?*s7-6.c*****/#defineDEBUG1main(){inta=10;#ifDEBUGprintf("thevalueis%d\n'\a);#elseprintf(,,nothing\n,');#endif)上機(jī)前分析結(jié)果:實(shí)際上機(jī)結(jié)果:(7)/*****s7-7c*****/#defineDEBUG0main(){inta=10;#ifndefDEBUGprintf("thevalueis%d\nM,a);#elseprintf(nnothing\nn);#endif}上機(jī)前分析結(jié)果:實(shí)際上機(jī)結(jié)果(8)按下列步驟完成指定的操作,理解文件嵌入并分析運(yùn)行結(jié)果。定義如下內(nèi)容的頭文件mycounL.h#definePI3.14159#definrR2.0定義如下內(nèi)容的程序文件calculate.cfloatcircum(x)floatx,y;y=2*PI*x;retum(y);)floatarea(x)(floatx,z;z=PI*x*x;retum(z);}③輸入主程序并運(yùn)行/*****s7-8c*****/#include<stdio.h>#include“mycount.h"#includecaiculate.cMmain()(floatl,s;1=circum(R);s=area(R);printf(44\nl=%fs=%f\l,s);return0)上機(jī)前分析結(jié)果:實(shí)際上機(jī)結(jié)果2.完善程序程序功能:將一個(gè)十六進(jìn)制數(shù)字的字符串轉(zhuǎn)換成與它等價(jià)的十進(jìn)制整數(shù)值。十六進(jìn)制允許的字符是從0-9和a-f(A-F)o主函數(shù)負(fù)責(zé)收集字符,并判別它們是否為十六進(jìn)制,htoi函數(shù)負(fù)責(zé)轉(zhuǎn)換工作。#include<stdio.h>#defineMAXLINE100#defineEOF-1#defineYES1#defineNO0inthtoi();main()(intc,i,isdigit;chartlMAXLINEJ;i=0;isdigit=1;while((c=_2)!=EOF&&i<MAXLINE-1){if(c>='0'&&c<二'9' a'&&c<=?rilc>='A'&&cv='F')(isdigit=YES;t[i++]=_3;}elseif(isdigil==YES)(isdigit=4;t[i]=5;printf("%d”,6);i=0;)))inthtoi(char7)(inti,n;n=0;for(i=O;s[i]!=,\O,;i++)|if(s[i]>=,0,&&s[i]<=,9,)n=n*16+s[i]--8;if(s[i]>=,a,&&s[i]<=,f,)n=n*16+s[i]-9;if(s[i]>=,A,&&s[i]<=,F)n=n*16+s[i]-10:retum(n);)實(shí)驗(yàn)八指針操作實(shí)驗(yàn)?zāi)康?212345掌握通過指針使用一-維數(shù)組。掌握指針參數(shù)在函數(shù)中傳遞地址值。掌握通過指針使用字符串。了解main函數(shù)中參數(shù)的使用。實(shí)驗(yàn)內(nèi)容.讀程序?qū)懡Y(jié)果(])/******s8-l.c******/#include<stdio.h>main()int叫={2,3,4};int*p,s,i;s-1;p=a;for(i=0;i<3;i++)s*=*(p+i);printf(,,s=%d\nH,s);}上機(jī)前分析結(jié)果:實(shí)際上機(jī)結(jié)果:(2)/******s8-2c******/#include<stdio.h>main()inta[]={l,3,5,7,9},*p=a;printf("%d\nH,(*p++));printf(n%d\nM,(*++p));printf("%d\nH,(*++p)++);printf("%d\nH,*p);}上機(jī)前分析結(jié)果:實(shí)際上機(jī)結(jié)果:(3)/******s8-3c******/#include<stdio.h>main()(charsl[]="TodayisFriday!"char*s2="Tomorrow",*p;p=sl;while(*s2!='\0')*p++=*s2++;printf(n%s\nu,sl);}上機(jī)前分析結(jié)果:實(shí)際匕機(jī)結(jié)果:(4)/******s84c******/#include<stdio.h>intfun(int*s)(staticintt=0;t=*s+t;returnt;)main()(inti,k;for(i=0;i<4;i++){k=fun(&i);printf(H%4dM,k);}printf("\n");}上機(jī)前分析結(jié)果:實(shí)際上機(jī)結(jié)果:.完善程序(1)程序功能:函數(shù)strcat(strl,st2)實(shí)現(xiàn)將字符串str2拼接到字符串strl后面的功能。/******s8=5c******/#include<stdio.h>char*strcat(char*strl,char*str2){char*t=strl;while(1)strl++;while(2);return(t);)main()(charsl[80],s2[80],*s3;gets(sl);gets(s2);s3=strcat(sl,s2);printf(H%s\n",s3);}(2)程序功能:依次取出字符串中所有小寫字母以形成新的字符串,并取代原字符串。/******s8-6c******/#include<stdio.h>voidfun(char*s){inti=0;char*p=s;while(1){if(*p>='a'&&*pv='z'){s[i]=*p;2;|P++;}s[i]=3;}main(){charstr[8O];gets(str);fun(str);printf(n\nthestringofchangingis:%s\n'\str);)(3)程序功能:通過指針作函數(shù)的參數(shù)實(shí)現(xiàn)三個(gè)數(shù)從小到大的排序。/******c******/#include<stdio.h>voidswap(1){inti;i=*ptl;*ptl=*pt2;*pt2=i;)voidexchange(int*ql,int*q2,int*q3)(if(2)swap(ql,q2);if(3)swap(ql,q3);if(4)swap(q2,q3);}main()(inta,b,c;int*pl,*p2,*p3;pl=&a;p2=&b;p3=&c;*pl=24;*p2=93;*p3=15;exchange(5);printf(ua=%d,b=%d,c=%d\nn,a,b,c);}(4)程序功能:以下程序統(tǒng)計(jì)命令行第一個(gè)參數(shù)中出現(xiàn)的字母個(gè)數(shù),請調(diào)試通過。/******§8-8.c******/#include<stdio.h>#include<ctype.h>main(intargc,1){char*str;intcount=0;if(argc<2)exit(l);str=2;while(*str)if(isalpha(3))count++;printf(u\nLetternumberis:%d\nH,count);}.改錯(cuò)程序功能:給定程序中函數(shù)fun的功能是:將在字符串s中下標(biāo)為奇數(shù)位置上的字符,緊隨其后重復(fù)出現(xiàn)一次,放在一個(gè)新串t中,t中字符按原字符串中字符的順序排列。(注意0為偶數(shù))例如:當(dāng)s中的字符串為:"ABCDEF"時(shí),則t中的字符串應(yīng)為:"BBDDFF"。請改正函數(shù)fun中的錯(cuò)誤,使它能得出正確的結(jié)果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!/******s8-9c******/#include<conio.h>#include<stdio.h>#include<string.h>voidfun(char*s,char*t)inti,j,si;si=strlen(s);/************lound************/for(i=0,j=0;i<sl;i+=2)t[2*j]=s[i];t[2*j+l]=s[i];/************found************/J-?}t[2*j]='O';}main(){chars[100],t[100];clrscr();printf("\nPleaseenterstrings:n);scanf(M%sn,s);fun(s,t);printf(nTheresultis:%s\n",t);}.程序設(shè)計(jì)(1)請編寫函數(shù),對傳送過來的三個(gè)數(shù)選出最大和最小數(shù),并通過形參傳回結(jié)果。部分源程序如下:(s8-10.c)/******sS-l0c******/#include<stdio.h>voidfun(ints[],int*pl,int*p2,intn)main()(inta[3],i,*max,*min,;for(i=0;i<3;i++)scanf(M%dM,&a[i]);fun(a,max,min,3)printf(nmax=%d,min=%d\nM,*max,*min);}(2)編寫函數(shù),其功能是對傳送過來的兩個(gè)浮點(diǎn)數(shù)求出和值和差值,并通過形參傳送回調(diào)用函數(shù)。(s8-ll.c)提示:利用指針傳送地址值。通過傳送地址值來改變實(shí)參。區(qū)分*變量和&變量的含義。參考:函數(shù)名(數(shù)1,數(shù)2,和變量地址,差變量地址)。(3)將s所指字符串中下標(biāo)為奇數(shù)的字符刪除,串中剩余字符形成的新串放在t所指數(shù)組中,部分源程序如下,請編寫相應(yīng)功能的函數(shù):(S8-12.C)/******s8-i2.c******/#include<stdio.h>#include<string.h>voidfun(char*s,char*t)main(){chars[80],t[80];printf("\npleaseenterstrings:n);gets(s);fun(s,t);printf(n\ntheresultis%s\nu,t);(4)用指針方法比較輸入的兩個(gè)字符串是否相等。(s8-13.c)提示:可用字符型指針指向字符串的開始,逐個(gè)移動指針進(jìn)行比較。(5)編寫一個(gè)程序,將用戶輸入的由數(shù)字字符和非數(shù)字字符組成的字符串中的數(shù)字字符提取出來,例如輸入“asdl23rt456,fg789”,則產(chǎn)生的數(shù)字分別是123456789?(s8-14.c)提示:用一個(gè)函數(shù)接收用戶輸入的字符串,然后逐一判斷每個(gè)字符是否數(shù)字,將其存入數(shù)組中。實(shí)驗(yàn)九結(jié)構(gòu)體和聯(lián)合體實(shí)驗(yàn)?zāi)康?結(jié)構(gòu)體變量與數(shù)組的定義及結(jié)構(gòu)變量和結(jié)構(gòu)成員的使用。.聯(lián)合體的含義及使用。.掌握鏈表的概念,學(xué)會鏈表的基本操作。實(shí)驗(yàn)內(nèi)容.讀程序?qū)懡Y(jié)果(1)/******s9?lc******/#include<stdio.h>structks{inta;char*b;}as[]={5,''abcd”,6;'efgh"};main()(structks*p;p=as;printf(<<%s\n,\as[1].b);printf(44%s\n,\p->b++);printf(<<%s\n,\p->b);printf("%s\n”,p++->b);printf(<4%s\nM,p->b);}上機(jī)前分析結(jié)果:實(shí)際上.機(jī)結(jié)果:⑵/******⑵/******s9?2c******/#include<stdio.h>structstru(charnum[10];;intscore[3];;};main()(structstrus[3]={{"20050190,95,85},{“2OO5O2”,95,80,75},{“2OO5O3”[00,95,90}},*—;inti;floatsum=0;for(i=0;i<3;i++)sum=sum4-p->score[i];printf(44%6.2f\nM,sum);上機(jī)前分析結(jié)果:實(shí)際上機(jī)結(jié)果:⑶/******s9-3c******/#include<stdio.h>unionw{intx;charch[2];}a;main()(a.ch[0]=13;a.ch[l]=0;printf(4t%d\n,,,a.x);)上機(jī)前分析結(jié)果:實(shí)際上機(jī)結(jié)果:.完善程序程序功能:以下程序用于在結(jié)構(gòu)體數(shù)組中查找分?jǐn)?shù)最高和最低的同學(xué)姓名和成績。(s9-4.c)/******s9-4c******/#include<stdio.h>main(){intmax,min,ij;staticstruct(charname[8];intscore;}stud[5]={fc4li,\90;,chen,,,100;,wang,\60,,,sun,\50;,qian,,,65);max=min=0;fbr(i=l;i<5;i++)if(stud[i].score>stud[maxj.score)1;elseif(stud[i].score<studfmin].score)2;printf(44THEMAXSCORE:%s,%d\n,\3);printf(44THEMINSCORE:%S.%d\nM.4 ):(2)學(xué)生的記錄由學(xué)號和成績組成,N名學(xué)生的數(shù)據(jù)已在主函數(shù)中放入結(jié)構(gòu)體數(shù)組s中,函數(shù)fun()的功能是:把低于平均分的學(xué)生數(shù)據(jù)放在b所指的數(shù)組中,低于平均分的學(xué)生人數(shù)通過形參n傳回并輸出,平均分通過函數(shù)值返回;最后升序輸出低于平均分的學(xué)生的成績。/******s9-5c******/#include<stdio.h>#defineN8typedefstruct{charnum[10];doubles;JSTRUC;doublefun(STRUC*a,STRUC*b,int*n)(inti,j=0;doubleav=0.0;for(i=0;ivN;i++)TOC\o"1-5"\h\zav=av+1 ;av=2 ;for(i=0;i<N;i++)if(a[i].s<av)b[—3—]=a[i];*n=j;return4 ;}main()(STRUCs[N]=({MGA05”,85},{“GA03”,76},{“GA02”,69},{MGA04H,85},{"GAO {MGA07,1,72},{MGA08';64},{“GA06”,87}};STRUCh[N],t;inti,j,n;doubleave;for(i=0;i<N;i++)printf(M%s%4.1f\n'\s[i].num,s[i].s);ave=fun(s,h,&n);printf("The%dstudentdatawhichislowerthan%7.3f:\n",n,ave);for(i=0;i<n;i++)printf(n%s%4.1AnM,h[i].num,h[i].s);printf(H\nH);for(i=0;i<n-l;i++)for(j=i+l;j<n;j++)if(h[i].s>h[j].s){t=h[i];h[i]=h|j];h[j]=t;}fbr(i=O;i<n;i++)printf(H%s%4.1f\n",h[i].num,h[i].s);}.改錯(cuò)給定程序是建立一個(gè)帶頭結(jié)點(diǎn)的單向鏈表,并用隨機(jī)函數(shù)為各結(jié)點(diǎn)賦值。函數(shù)fun的功能是將單向鏈表結(jié)點(diǎn)(不包括頭結(jié)點(diǎn))數(shù)據(jù)域?yàn)榕紨?shù)的值累加起來,并且作為函數(shù)值返回。請改正程序中的錯(cuò)誤,使其能得出正確的結(jié)果。(s9-6.c)/******s9-6c******/#include<stdio.h>#include<stdlib.h>typedefstructaa{intdata;structaa*next;}NODE;intfun(NODE*h)intsum=O;NODE*p;/***********found**********/p=h;while(p)if(p->data%2==0)sum+=p->data;p=h->next;)returnsum;}NODE*creatlink(intn){NODE*h,*p,*s,*q;inti,x;h=p=(NODE*)malloc(sizeof(NODE));for(i=l;i<=n;i++){s=(NODE*)malloc(sizeof(NODE));s->data=rand()%16;s->next=p->next;p->next=s;p=p->next;}p->next=NULL;returnh;}outlink(NODE*h){NODE*p;p=h->next;printf(MTHELIST:\nHEAD");while(p)|printf(n->%dH,p->data);p=p->next;main(){NODE*head;inteven;head=creatlink(12);head->data=9000;outlink(head);even=fun(head);printf(uTheresult%d:\n'\even);getch();).程序設(shè)計(jì)(1)用結(jié)構(gòu)數(shù)組建立含5個(gè)人的通訊錄,包括姓名、地址和電話號碼。能根據(jù)鍵盤輸入的姓名輸出該姓名及對應(yīng)的電話號碼。(s9-7.c)(2)用結(jié)構(gòu)數(shù)組實(shí)現(xiàn)輸入3個(gè)人的姓名和年齡,并輸出3個(gè)人中最年長者的姓名和年齡。(s9-8.c)(3)用結(jié)構(gòu)數(shù)組實(shí)現(xiàn)輸入10個(gè)人考試成績,包括姓名、數(shù)學(xué)、計(jì)算機(jī)、英語和總分。其中,總分由程序自動計(jì)算。主程序能輸出排序后的數(shù)組。按總分從高到低排序由子程序fsort()完成。(s9-9.c)(4)學(xué)生的記錄由學(xué)號和成績組成,N名學(xué)生的數(shù)據(jù)已在主函數(shù)中放入結(jié)構(gòu)體數(shù)組s中,請編寫函數(shù)fun,它的功能是:函數(shù)返回指定學(xué)號的學(xué)生數(shù)據(jù),指定的學(xué)號在主函數(shù)中輸入。若沒找到指定學(xué)號,在結(jié)構(gòu)體變量中給學(xué)號置空串,給成績置-1,作為函數(shù)值返回(用于字符串比較的函數(shù)是strcmp),/******s9-]0c******/#include<stdio.h>#include<string.h>#defineN16typedefstruct{charnum[10];ints;JSTREC;STRECfun(STREC*a,char*b)main(){STRECs[N]={{MGA005M,85},{MGA003M,76},{,,GA002,1,69},{MGA004,,,85},{MGA00r,,91},{“GA007”,72},{”GA008”,64},{HGA006n,87},{“GAO15”,85},{“GAO13”,91},{“GAO12”,64},{"GAO14”,91},{”GA0UM,77},{nGA017”,64},{“GAO18”,64},{“GAO16”,72}};STRECh;charm[10];inti;printf(HTheoriginaldata:\n");for(i=0;i<N;i++)if(i%4==0)printf(n\n0);printf("%s%3dH,s[i].num,s[i].s);}printf(u\n\nEnterthenumber:");gets(m);h=fun(s,m);printf('Thedata:");printf("\n%s%4d\nn,h.num,h.s);h=fun(s,,rGA013n);printf("%s%4d\n'\h.num,h.s);實(shí)驗(yàn)十文件操作實(shí)驗(yàn)?zāi)康?掌握文件與緩沖文件系統(tǒng)、文件指針的概念。.熟練運(yùn)用文件打開、關(guān)閉、讀、寫等操作函數(shù)。.掌握綜合運(yùn)用所學(xué)知識解決問題的方法。實(shí)驗(yàn)內(nèi)容.讀程序?qū)懡Y(jié)果⑴下列程序中文本文件myfile.txt的的內(nèi)容為:GoodChina!,分析程序運(yùn)行后的輸出結(jié)果。/******S10-[C******/#include<stdio.h>main(){HLE*fp;charstr[40];fp=fopenC4myfile.txf;Mr");fgets(str,5,fp);printf("%s\n”,str);fclose(fp);}上機(jī)前分析結(jié)果:實(shí)際上機(jī)結(jié)果:2)/******s]0-2c******/#include<stdio.h>main(){FILE*fp;charbuf[80];chara[]=Habcdefghi,\b[J=,,123456789uif((fp=fopen(timytxt.txt,\Hw+"))==NULL)return;fputs(a,fp);fputc(An\fp);fputs(b,fp);rewind(fp); /*文件指針返回文件開頭*./while(fgets(buf,80,fp)!=NULL)printfC%sM,buf);fclose(fp);}上機(jī)前分析結(jié)果:實(shí)際上機(jī)結(jié)果:2.完善程序(1)程序功能:把從鍵盤讀入的5個(gè)整數(shù)以二進(jìn)制方式寫到一個(gè)名為bit.dat的新文件中。/******s]0-3c******/#include<stdio.h>main()(HLE*fp;inti,num;if((fp=fopen(1Jwbn))==NULL)exit(O));for(i=0;i<5;i++)(scanf(”%d”,&num);fwrite(&num,sizeof(int),1, 2 );)fclose(fp);}(2)以下程序中,用戶從鍵盤輸入一個(gè)文件名,然后輸入一串字符(用#結(jié)束輸入)存放到此文件中,形成文本文件,并將字符的個(gè)數(shù)寫到文件尾部。/******§10-4c******/#include<stdio.h>main(){FILE*fp;charch,fname[32];intcount=0;printf(44inputthefilename:'';scanf("%s”,fname);if((fp=fopen(1—,"w+"))==NULL){printf("Can'topenfile:%s\nn,fname);Exit(O);)printf(MEnterdata:\nM);while((ch=getchar())!='#')(fputc(2-,fjp);3—;fprintf(fp,"\n%d\n",count); /*將輸入的字符個(gè)數(shù)添加到文件尾*/fclose(fp);}4.程序設(shè)計(jì)(1)將二進(jìn)制文件filel.dat內(nèi)容復(fù)制到file2.dat中。(sl0-5.c)提示:1.首先以讀方式打開filel,以寫的方式打開fi1e2。2.然后讀A,寫B(tài);注意判斷文件結(jié)束。(2)從鍵盤上輸入一個(gè)長度大于50的字符串放入一個(gè)文件中,再從該文件中讀出字符串,并顯示。(S10-6.C)(3)從鍵盤上輸入一個(gè)字符串,將其中的大寫字母全部轉(zhuǎn)換成小寫字母,然后存入文件myfile.txt中,輸入的字符以號結(jié)束。(slO-7.c)第2部分綜合測試測試1i.填空數(shù)組x[N]保存著?組3位數(shù)的無符號正整數(shù),該函數(shù)的功能是:從數(shù)組中找出個(gè)位和百位的數(shù)字相等的所有無符號整數(shù),結(jié)果保存在數(shù)組y中,其個(gè)數(shù)由函數(shù)fun()返回。部分源程序如下:/******c******/#include<stdio.h>intfun(intx[],inty[],intnum){inti,n=O;intg,b;for(i=0;i<num;i++)(g=一1一;b=x[i]/100;if(g==b)_2一;)returnn;}main(){intx[8]={135,787,232,222,424,333,141,541);intz[8];intnum=8,n=0,i=0;printf(4t***originaldata***\n,?);for(i=0;i<num;i++)printf("%uM,x[i]);printf(n\nn);n=fun(x,z,num);for(i=0;i<n;i++)printf(H%u}2.改錯(cuò)(2k)222 42 6(2k)222 42 62H33x5X5^7 (2k-1)(25+1)請改正函數(shù)fun中的錯(cuò)誤,使程序能輸出正確的結(jié)果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!/*****s11.2c*****/#include<conio.h>#include<stdio.h>#include<string.h>/************found************/fun(intk)intn;floats,w,p,q;n=1;s=1.0;while(n<=k){w=2.0*n;p=w-1.0;q=w+1.0;s=s*w*w/p/q;n++;|/************found************/returns}main()(clrscr();printf(',%f\nM,fun(10));|3.程序設(shè)計(jì)請編寫函數(shù),函數(shù)fun的功能是:把a(bǔ)數(shù)組中的n個(gè)數(shù)和b數(shù)組中逆序的n個(gè)數(shù)-一對應(yīng)相加,結(jié)果存在c數(shù)組中。例如:當(dāng)a數(shù)組中的值是:1、3、5,7、8b數(shù)組中的值是:2、3、4、5、8調(diào)用該函數(shù)后,c數(shù)組中存放的數(shù)據(jù)是9、8、9,10.10/******sU-3c******/#include<conio.h>#include<stdio.h>voidfun(inta[],intb[],intc[],intn)main()inti,a[100]={13,5,7,8),b[100]={2,3,4,5,8},c[100];clrscr();fun(a,b,c,5);printf(HTheresultis:");for(i=0;i<5;i++)printf(H%d”,c[i]);printf(',\nH);測試2i.填空函數(shù)fun()的功能是:把字符串str中的數(shù)字字符轉(zhuǎn)換成數(shù)字并存放到整數(shù)數(shù)組bb中,函數(shù)返回?cái)?shù)組bb的長度。/******s11-4c******/#include<stdio.h>#defineN80intfun(chars[],intbb[],intnum){inti,n=0;for(i=0;i<num;i++){if(一1—)|bb[n]=—2一;n++;})return 3 ;}main()|charstr[N];intnum=0,n,i;printf(nEnterastring:");gets(str);num=strlen(str);n=fun(str,bb,num);printf(n\nbb=M);for(i=0;i<n;i++)printf(n%dM,bb[i]);2.改錯(cuò)以下函數(shù)fun的功能是:從低位開始取出長整型變量s中偶數(shù)位上的數(shù),依次構(gòu)成一個(gè)新數(shù)放在t中。例如,當(dāng)s中的數(shù)為654321時(shí),t中的數(shù)為642。/******s][-5c******/#include<conio.h>#include<stdio.h>/********於und********/voidfun(longs,longt){longsl=10;s/=10;*t=s%10;/********found********/while(s<0){s=s/100;*t=s%10*sl+*t;sl=sl*10;}}main(){longs,t;clrscr();printf(u\nPleaseenters:n);scanf(M%ldn,&s);fun(s,&t);printf(HTheresultis:%ld\n*,t);}3.程序設(shè)計(jì)請編寫函數(shù),該函數(shù)的功能是:將低于平均分的分?jǐn)?shù)放在below所指的數(shù)組中,將低于平均分的人數(shù)作為函數(shù)返回值返回。部分源程序如下:/******s11-6c******/#include<stdio.h>#include<string.h>intfun(intscore[],intm,intbelow[])}main()(inti,n,below[9];intscore[9]={10,20,30,40,50,60,70,80,90);n=fun(sc

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論