程序設計語言c_第1頁
程序設計語言c_第2頁
程序設計語言c_第3頁
程序設計語言c_第4頁
程序設計語言c_第5頁
已閱讀5頁,還剩89頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

森序德針語舍C++實驗指導書河海大學計算機信息學院(常州)

計算機科學與技術系2006.9.TOC\o"1-5"\h\z第1章基本實驗 3\o"CurrentDocument"實駁一VisualC++6.0集成開發(fā)環(huán)境和簡單C++程序. 3\o"CurrentDocument"實驗二數(shù)據(jù)類型、運算符和表達式. 8\o"CurrentDocument"實驗四循環(huán)控制結構. 14\o"CurrentDocument"實驗五函數(shù)定義和使用. 19\o"CurrentDocument"實驗K數(shù)組. 22?頭 26\o"CurrentDocument"實驗八指針和函數(shù). 30\o"CurrentDocument"實驗九結構體和簡單鏈表. 41\o"CurrentDocument"實驗十類和對象的概念及構造函數(shù)和析構函數(shù) 48\o"CurrentDocument"實驗十一虛函數(shù). 56\o"CurrentDocument"實驗十二操作符重. 58\o"CurrentDocument"實驗十三標準設備和文件流的輸入/輸出 62第2章課程設計 632.2課程設計題目 89圖書館管理系統(tǒng) 89\o"CurrentDocument"集合操作 90\o"CurrentDocument"小型公司工資管理系統(tǒng)設計 91\o"CurrentDocument"學生成績統(tǒng)計管理 93\o"CurrentDocument"附錄一常見編譯、鏈接錯誤. 94\o"CurrentDocument"附錄二程序調試方法和技巧. 98第1章基本實驗實驗一VisualC++6.0集成開發(fā)環(huán)境和簡單C++程序—.實驗目的.掌握使用VC集成開發(fā)環(huán)境開發(fā)程序的過程,熟悉VC環(huán)境的基本命令和功能鍵,熟悉常用的功能菜單命令,學習使用VC++環(huán)境的幫助;.學習并理解簡單的C++程序結構;二.課前預習了解C++程序的基本結構;了解簡單的程序輸入輸出流。三.實驗內容.初步熟悉C++語言的上機開發(fā)環(huán)境;.編程輸出:Thisismyfirstpractice!.使用VisualC++6.0集成環(huán)境來編輯、編譯并運行下面簡單C++程序:^include<iostream.h>intmax(int,int);〃聲明自定義函數(shù)voidmain() 〃主函數(shù){inta,b,c;cout?z/inputtwonumber:\n”;cin?a>>b;c=max(a,b);〃調用max函數(shù),將得到的值賦給Ccout?/max=/z?c?endl;}intmax(intx,inty)〃定義max函數(shù),函數(shù)值為整型,形式參數(shù)x,y為整型(intz; //max函數(shù)中的聲明部分,定義本函數(shù)中用到的變量z為整型if(x>y)z=x;elsez=y;return(z); 〃將z的值返回,通過max帶回調用處}四.實驗步驟.啟動應用程序選擇菜單”開始/程序/MicrosoftVisualStudio6.O/MicrosoftVisualC++6.0”,得到VisualC++6.0啟動后的用戶界面,如圖IT所示。

圖1-1VisualC++6.0用戶界面.創(chuàng)建新工程單擊菜單“文件/新建”,顯示“新建”對話框,選擇“工程”頁面,如圖1-2所示。在列表欄中,選擇“Win32ConsoleApplication"(Win32控制臺應用程序”)。在“工程”欄中輸入一個工程名,如實驗-。在位置文本框中選擇工程所在的路徑,如圖中所示H:\C++實驗、實驗一。單擊“確定”按鈕。圖1-2“新建”對話框(3)在**Win32ConsolApplication-Step1of1"對話框中選擇Anemptyproject單選項。然后單擊“完成"按鈕,如圖『3所示。

圖1-3**Win32ConsolApplication-Step1of1n對話框(4)在“新建工程信息”對話框中單擊“確認”按鈕,完成工程創(chuàng)建過程。.創(chuàng)建C++源程序文件(1)單擊菜單”文件/新建”,顯示“新建”對話框,選擇“文件”頁面,如圖卜4所示。在列表欄中,選擇“C++SourceFile”,然后在右邊的文件輸入框中輸入源程序的文件名。圖1-4"新建"窗口(2)擊“確定”按鈕,則創(chuàng)建完成了一個源程序文件,并出現(xiàn)編輯窗口,如圖15所示。

圖1-5-C++”源程序編輯(3)在“C++源程序編輯”窗口下編輯C++源程序。如圖1-6所示。圖1-6編輯C++源程序.編譯連接和運行源程序選擇菜單項“編譯”,出現(xiàn)“編譯”的下拉菜單,在該下拉式菜單中選擇“編譯egl-l.cpp”菜單項,這時系統(tǒng)開始對當前的源程序進行編譯,在編譯過程中,將所發(fā)現(xiàn)的錯誤顯示在屏幕F方的“編譯”窗口中。所顯示的錯誤信息中指出該錯誤所在行號和該錯誤的性質。用戶可根據(jù)這些錯誤信息進行修改。上述程序的“編譯”窗口,如圖-7所示。 Configuration:eg1-1-Win32Debug .J1IICompiling...eg1-1.cppeg1-1.obj-0error(s),0warning(s)—▼1]典入碎文件做>|U/荷i |rec|col|ovr|O0圖1-7“編譯”窗口(2)編譯無錯誤后,可進行連接生成可執(zhí)行文件(.exe),這時選擇“編譯”下拉菜單中的“構件egl-l.exe"選項?!熬幾g”窗口出現(xiàn)如圖1-8所示的信息說明編譯連接成功,并生成以源文件名為名字的可執(zhí)行文件(eglT.exe)。 X Configuration:eg1-1-Win32Debug -力Linking eg1-1.exe-0error(s),0warning(s)EK編譯《調試X查找文件1X查找文件,廣Ready Ln5,Col1^|REC|COL|OVR|READ圖―8編譯連接信息―(3)執(zhí)行可執(zhí)行文件的方法是選擇“編譯”菜單項中“執(zhí)行egl-1.exe”選項。這時,運行該可執(zhí)行文件,并將結果顯示在另外一個顯示執(zhí)行文件輸出結果的窗口中,如圖1-9所示。圖1-9運行C++程序結果.關閉打開工作區(qū)、打開工作區(qū)單擊菜單”文件/關閉工作區(qū)”,關閉工作區(qū)。單擊菜單”文件/打開工作區(qū)”,在彈出的對話框中選定"H:\C++實驗、實驗一、實驗一.dsw”,單擊“打開”按鈕,則可打開工作區(qū),對已建立的工程文件進行修改。.根據(jù)實驗步驟1-5,建立、編輯、編譯并運行實驗程序。實驗二數(shù)據(jù)類型、運算符和表達式一、實驗目的.理解和掌握C++語言中的數(shù)據(jù)類型、運算符和表達式等內容。.掌握用各種運算符構造不同的表達式。.進一步熟悉C++程序的編輯、編譯、連接、運行的過程。二、課前準備.復習以往在計算機基礎學科里學過的相關內容:(1)數(shù)值在內存的表示方法,特別是數(shù)值的補碼表示。(2)數(shù)值的不同進制表示,特別是數(shù)值在二進制、八進制、十六進制間的相互轉換。(3)字符在內存的表示方法及ASCII碼表。.理解常量與變量的概念,熟悉各種類型常量的表示方式和變量的定義方式。. 了解各種運算符的優(yōu)先級與結合性。.理解表達式求值時的自動類型轉換和強制類型轉換。三、概念理解練習題.在C++語言里,常量,。和"C"兩者。A.完全不同B.類型相同 C.存儲長度相同 D.存儲值相同.在下列變量名中,是合法的。A.intB.text_01C.a*bD.3abcE.fun(4)F._elseG.a-bc.下列選項中,是字符串常量。A.'A'B."ABC” C.xyz' D. 'A—B”.在C中,任何不為0的數(shù)即可表示真oA.對B.不對.執(zhí)行下列程序后,x的值為ox=3;9+3-2,x=x*5,y=23,x++;A.10B.15C.16 D.23.inti=10;floatx;執(zhí)行x=5/i;后x的值為。A.0.5B.0C.0.0 D.1.0.下列關于表達式的書寫中正確的是oA.4*2.5%3B.x=y+z=4C.++5D.x+=y*=z+3.實型變量x的取值范圍為閉區(qū)間[-2,10]或開區(qū)間(15,34),則正確表示x取值范圍的邏輯表達式是?A.-2<=x<=10|15<x<40B.(-2<=x&&x<=10)||(15<x&&x<34)C.-2<=x<=10&&15<x<40D.(-2<=x&&x<=10)&&(15<x&&x<34).數(shù)學式洞面在C++程序中對應的正確表達式是。A.sqrt(x>0?sin(x):-sin(x)) B.sqrt(fabs(sin(x)))C.sqrt(sqrt(sinx*sinx)) D.fabs(sqrt(sin(x))).設有四個常數(shù):①4e0.5、②,\87,、③0X5A、④其中符合C++語法規(guī)則的常量是A.②③B.A.②③B.??C.③④D.(D?.當a=6,b=5時,表達式a<=7&&a+b>8的值為。A,trueB.falseC.1D.0.執(zhí)行x=5>l+2&&2:2*4<4-!0后,x的值為。A.3B.1C.2D.0.如a=2,b=3,c=T執(zhí)行++a&&++b||++c;后,b,c的值分別是一A.3-1B.40C.30D.4-1.a,b為整型變量,二者均不為0,以下關系表達式恒為真的是。A.a*b/a*b==l B.a/b*b/a==lC.a/b*b+a%b==a D.a/b*b==a.表達式‘A'+'b'+10的值為。.下面程序的輸出結果,第一行為: ,第二行為:. _,第二行為:#include<iostream.h>voidmain()(intx,y,n;x=y=l;n=-x&&++y;cout?"n="<<n<<"x=z,<<x?//y=,,<<y?endl;n=(—x)||(++y);cout<<n?endl;cout<("x="〈〈x?"y=w?y?endl;)四、實驗內容.先閱讀程序,預測程序的運行結果,再上機編輯、運行該程序,以驗證自己的預測。[程序1]#include<iostream.h>voidmain()(inta,b,c,x;a=15,b=18,c=21;x=a<b||c++;cout?wx="<<x<"c="<<c<<‘\n';).編寫程序輸入某大寫字母的ASCH碼值,輸出該字母的對應小寫字母。實驗三選擇控制結構一、實驗目的.熟練掌握if語句、switch語句、條件運算符。.掌握選擇結構程序的設計技巧。.學習調試具有一個選擇結構的程序。二、課前預習了解if語句的三種常用形式及其使用注意點;了解switch語句、條件運算符的語法結構、計算過程和注意點:了解邏輯表達式和關系表達式的構造方法、求值過程。三、概念理解練習題.如果整型量a,b,c的值分別是5、4、3,則語句if(a>=b>=c)c++;執(zhí)行后c的值是oA.語法錯誤B.4C.3D.2.若inta=2,b=3,c=4;則表達式a+b-c?a+b:a+c的值為。A.0B.1C.5D.6.為了避免嵌套的條件語句的二義性,C++語言規(guī)定else與 配對。A.編輯時在同一列上的if B.其之前最近的還沒有配對過的ifC.其之后最近的if D.同一行上的if.假定所有變量均已經正確說明,下列程序段運行后x的值為():a=b=c=0;x=35;if(!a)x=-1;elseif(b);if(c)x=3;elsex=4;A.34B.4 C.35D.33.執(zhí)行下面程序段的輸出結果是()。intx=4,y=-55;if(x>0)if(x>10)cout?,>AAV;elsecout?wBB”;elseif(y<-8)if(y>-20)cout?wCCWelsecout?MDD”;A.AAB.BBC.CCD.DD.下面這段程序用來計算學生是否通過了考試,如果通過了,就打印“Passed";如果沒有,就打印"Failed,,和“Youmusttakethiscourseagainw0檢查該程序段是否有錯,若有錯,請改正之。if(grade>=60)cout?wPassed.\nv;elsecout<<"Failed.;cout<<"Youmusttakethiscourseagain.\nv;.下面的switch結構用來打印xis5,xis10或xisneither5nor10o檢查該程序段是否有錯,若有錯,請改正之。switch(x){case5:cout<<wxis5\n”;case10:cout<<wxis10\n";default:cout?wxisneither5nor10\n”;}四、實驗內容1.閱讀程序,預測功能voidmain()(intx,y;x=5;y=-1;if(x>0&&y>0)(x+=5;y=5;)elseif(x<0)y+=5;else(x+=5;y+=5;)cout?Mx=M?x?My=M?y;}.改寫程序以下程序是求三個整數(shù)a,b,c中的最大數(shù)(假設a,b,c不同值),請只用一句條件運算符語句改寫程序中的if語句,使之達到同樣的效果。voidmain()(inta,b,c,big;cin>>a>>b?c;if(a>b)if(a>c)big=a;elsebig=c;elseif(b>c)big=b;elsebig=c;cout?w<<a<<",";cout?wb="?b?w,”;cout?>>c=w?c?endl;cout?wbig=w?big?endl;).編寫程序(1)用switch語句編寫程序實現(xiàn)下面的函數(shù)功能。x2 0<=x<1%2-5 1<=x<2x~-2x-l 2<=x<3x~+6x—183<=x<4(2)設今天是20世紀的某一天,并以三位整數(shù)表示今天的年、月、日,試編寫程序,輸入今天的日期,計算并報告明天的日期。例如:輸入輸出9858Todayis05/08/98Tomorrowis05/09/9898531Todayis05/31/98Tomorrowis06/01/98981231Todayis12/31/98Tomorrowis01/01/9998228Todayis02/28/98Tomorrowis03/01/9896228Todayis02/28/96Tomorrowis02/29/96【算法提示】本算法要考慮到以下幾種情況:閏年的2月份是29天,非閏年的2月份是28天,所以當輸入的日是28且輸入的月是2時,要對輸入的年代進行是否閏年的判斷:當輸入的日是31且月是1、3、5、7、8,10或輸入的日是30且月是4、6、9、11時,日和月都要變化,當輸入的日是31且月是12時,日、月年都要發(fā)生變化:其它情況下只有日發(fā)生變化。(3)編寫一個程序,確定在一個三位數(shù)中,判斷其所有的數(shù)字位都是奇數(shù)、偶數(shù)還是山奇數(shù)和偶數(shù)混合而成。編寫的程序應該提示用戶輸入一個三位數(shù),并且在屏幕上回顯這個數(shù)字。如果該數(shù)字全部山奇數(shù)組成,那么在屏幕上顯示“Thisnumbercontainsallodddigits.",如果其中的數(shù)字都是偶數(shù),那么在屏幕上顯示"Thisnumbercontainsallevendigits.n如果其中的數(shù)字位包含奇數(shù)和偶數(shù),那么在屏幕上顯示"Thisnumbercontainsbothoddandevendigits.Mo【算法提示】用整除和取余運算來取出所輸入n位數(shù)字中的各個數(shù)字位。如:1234/10—123;而123%10實驗四循環(huán)控制結構一、實驗目的.理解從C++中用于循環(huán)結構程序設計的三種控制語句:for,while,do-while的語法、語義和使用規(guī)則。.掌握循環(huán)結構程序的設計技巧。.掌握循環(huán)結構程序中常用的算法設計。二、課前預習了解while循環(huán)的語法、語義及使用規(guī)則。了解do-while循環(huán)的語法、語義及使用規(guī)則。了解for循環(huán)的語法、語義及使用規(guī)則。了解break和continue控制語句的使用場合和含義。三、概念理解練習題.以下不正確的描述是.A.在switch語句中使用break語句或continue語句的作用相同B.在循環(huán)語句中使用continue語句是為了結束本次循環(huán),而不是終止整個循環(huán)C.break語句不能用于循環(huán)語句和switch語句之外的任何其他語句D.在循環(huán)語句中使用break語句是為了使流程跳出循環(huán)體,提前結束循環(huán).while(!x)中的(!x)與下面條件等價A.x==0B.x!=1C.x==1D.x!=0.以下程序輸出的第一至第三行分別是一 —、一—和.C++語言中while與do-while語句while的循環(huán)當條件成立時執(zhí)行,而do-while當條件不成立時執(zhí)行do-while允許從循環(huán)外跳至循環(huán)體內do-while的循環(huán)體至少必須執(zhí)行一次D.以上說法都不對.以下敘述正確的是( )do-while語句構成的循環(huán)不能用其它語句構成的循環(huán)來代替。do-while語句構成的循環(huán)只能用break語句退出。C.用do-while語句構成的循環(huán),在while后的表達式為非零時結束循環(huán)。D.用do-while語句構成的循環(huán),在while后的表達式為零時結束循環(huán)。.完成下列循環(huán)語句后,n的值為多少.for(intn=0;n<100;n++){}A.0B.99C.100D.101義intx=3,執(zhí)行while(x){cout?x;x-;}語句后,x的值為:。A.0 B.1C.3 D.-18.設有以下程序段,intx=0,s=0;while(!x!=0)s+=++x;cout<<s;B.D.運行程序段后輸出1

B.D.運行程序段后輸出1

程序段執(zhí)行無限次A.運行程序段后輸出0C.程序段中的控制表達式非法i,j已經定義為int類型,則以下程序段中循環(huán)體總的執(zhí)行次數(shù)是.for(i=6;i;i-)for(j=0;j<4;j++)A.24B.20 C.25 D.28.下面四個程序段中,輸出23個*號的程序段是.for(intI=1;I<23;i++)cout?,*,jfor(intI=23;I>=0;i-)coutintI=23;while(I>0){cout?,**;I—;}intI=0;while(0<=23){cout?,*,;I++;}.下面程序的正確運行結果第一行— _、第二行voidmainOints=0;for(inti=1:;i++)(if(s>50)break;if(i%2==0)s+=i;)cout?*i=*?i?endl;cout<<*s=*<<s<<endl;}四、實驗內容.閱讀程序,預測結果,并上機驗證你的預測。#include<iostream.h>#include<math.h>#inc1ude<iomanip.h>voidmain(void)(inti,flag,j,K,count=0:for(i=5;i<30;i+=2)(flag=2,j=2,K=(int)sqrt(i);while(flag&&j<=K)if(i%j==0)flag=0;elsej++;if(flag){cout?setw(5)<<i;if(++count%3==0)cout<<,\n;cout<<,\n;).程序改錯。下面三個循環(huán)結構均有邏輯錯誤使程序不能達到預期目的,請糾正錯誤并上機運行直至正確為止。(1)倒序打印26個英文字母。voidmain()(charx;x='z';while(x!='a')(cout?x?Mx++;50(2)計算f=ivoidmain(){inti,sum;sum=0;for(i=1;i=50;i++)sum=sum+i;cout?,,sum=,,?sum<<endl;}(3)計算y=l*3*5*.?.*15。voidmain()(inta;longy;a=y=1;doa=a+2;y=y*a;while(a!=15);cout?M1*3*5*,..*15-,?y?endl.}.程序填空以下程序的功能是輸入x的值,計算x"或Inx或log]?!返闹?。程序運行時首先在屏幕上顯示一個主菜單(如下所示),菜單中提供了四條命令,用戶可以選擇前三條命令中的任意一條去計算/或Inx或bgioX,每計算完一個制定的函數(shù)值后,屏幕顯示其結果并自動返回主菜單,若要結束程序的運行,只需要選擇菜單中的第四條命令即可實現(xiàn),請在程序的處填寫內容,使之完成預期的功能。*mainmenu****Lpow(x,n)**2.ln(x)**3.loglO(x)**4.Exit***[程序]^include<iostream.h>#include<math.h>voidmain()floatx,y;intn,choice;for(;;)cout<〈''**************************************\n'';cout?^^*mainmenu*\n”;cout?^^**\n”;cout?M*1.pow(x,n)*\n";cout?^^*2.ln(x)*\n"cout<<"*3.loglO(x)*\n"cout?M*4.Exit*\n"cout<<***\n";cout<〈''***************************************\n'';cout<<endl;do(cout?MEnteryourchoice:^^;cin>>choice;}while();if(choice==4)docout<<,,Inputxplease:M;cin?x;}while(x<0&&)if(choice==1)(cout<<,,Inputn:";cin?n;y=pow(x,n);cout?,,x=,,?x?endl;cout?,,n=,,?n?endl;cout?,,pow(x,n)=,,?y?endl;)elseif(choice==2)(y=log(x);cout?,,x=,,?x?endl;cout?Mln(x)=,,?y?endl;elsey=loglO(x);cout<<,,x=,,?x?endl;cout<<MloglO(x)=,,<<y?endl;}.編寫程序編寫程序,計算并輸出所有的“水仙花數(shù)”,所謂“水仙花數(shù)”是指一個三位數(shù),其各位數(shù)字的立方和等于該數(shù)本身O【算法提示】用窮舉法檢查所有三位數(shù),對每一個三位數(shù),首先用整數(shù)除法和取余運算分離該三位數(shù)的每一位,然后求這三個數(shù)字的立方和,最后檢查該值是否與當前的三位數(shù)相等,若相等,則是“水仙花”數(shù),進行輸出。實驗五函數(shù)定義和使用一、實驗目的.掌握函數(shù)調用方式及函數(shù)參數(shù)傳遞;.掌握遞歸函數(shù)的設計思想;3,掌握并理解變量的作用域、存儲類的概念和使用方法;.掌握重載函數(shù)的定義和使用方法。二、課前預習.了解函數(shù)的定義語法、原型說明和調用方式;.理解形參和實參的含義:.理解值傳遞的含義;.理解函數(shù)返回值的含義和作用;.理解函數(shù)遞歸的概念,了解函數(shù)的嵌套和遞歸調用過程。在VC++中,函數(shù)可以嵌套調用,但不可以嵌套定義;.理解變量的作用域和存儲類概念;.理解函數(shù)重載的概念。三、概念理解練習題.下列描述不正確的是。A.函數(shù)調用結束時,形參占用的內存單元不釋放。B.調用函數(shù)時,實參可以是表達式。C.調用函數(shù)時,實參與形參個數(shù)可以不相等。D.調用函數(shù)時,實參與形參的類型應該一致。.有一函數(shù)原型如下:voidp(int);則下列調用語句正確的是。A.x=p(30); B.cout?p(3); C.p(30); D.p();3,若有函數(shù)說明為voidfun(inta,floatf=3.5,charb=W),則下列函數(shù)調用中,哪種是不正確的oA.fun(10) B.fun(10,7.0)C.fun(10,7.0,'X,)D.fun(10,(A')4.在以下的函數(shù)原型說明中,存在語法錯誤的是。A.voidf(inta,int);B.voidf2(int,int);C.voidf3(int,int=5);D.intf4(intx,inty)5.對于下述函數(shù):voidf(intx){ }//Iintf(inty){ }〃2intf(inti,intj){) //3floatk(intx){ }//4 是重載函數(shù)。A.全部 B.1和4C.2和3 D.3和46.下述程序的輸出結果是ttinclude〈iostream.h>intfun(inta,intb=3,intc=4);voidmain()intx,y,z;intp,q,k;x=5;y=x-3;z=x+y;p=fun(x);q=fun(x,y);k=fun(x,y,z);cout?,,p=,,?p?endl;cout<<"q="<<q<〈'\n';cout<Ck=M?k?9,\n,);)intfun(inta,intb,intc)(intd;d=a+b+c;returnd;).下述程序的輸出結果是#include<iostream.h>intabc(void)(staticintj;j+二100;return(j);}voidmain(void)(cout?abc()?,\n,;cout<<abc()<〈'\n';).下述函數(shù)的功能是求n個數(shù)之和的遞歸實現(xiàn)(即1+2+3+…+n),請完善。intsum(intn)(if()

return1;elsereturn;)四、實驗內容.閱讀下面程序,預測程序結果,然后上機驗證你的預測。#include<iostream.h>voidmain()inta=5,b=7,c=10;cout?a?,\,,?b?,\,,?c?endl;intb=8;doublec=8.8;cout<<a<<”,”<<b<<",”<<c<<endl;a=b;(intc=b;cout<<a<<",''<<b<<",”<<c<<endl;}cout?a<<,,?,,<<b?,\,,<<c<<endl;}cout?a?,,?,,<<b?,\,,<<c?endl;).編寫程序,根據(jù)公式C:= 、和輸入的m和n和>m),求C:"的值。【算法提示】(1)式中要計算三個不同的階乘,由于階乘的求解過程是一樣的,所以可以定義一個函數(shù)專門用于完成求階乘的過程,通過傳遞不同的參數(shù)達到求三個階乘的目的。(2)求階乘的函數(shù)可以用遞歸或遞推算法完成。.分別輸入整數(shù)半徑和實數(shù)半徑,使用函數(shù)重載計算圓的面積。實驗六數(shù)組一、實驗目的.掌握數(shù)組的定義及數(shù)組元素的引用方法。.能靈活運用數(shù)組這種構造數(shù)據(jù)類型設計相關算法。.掌握數(shù)組作為函數(shù)參數(shù)時形參與實參結合的方式。.進一步熟悉字符串處理函數(shù)的應用。二、課前預習熟練理解?維和二維數(shù)組以下基本內容:(1)數(shù)組的定義規(guī)則。(2)數(shù)組的初始化。(3)數(shù)組元素的引用。(4)數(shù)組元素在內存的存放規(guī)則,特別注意二維數(shù)組的存儲結構及二維數(shù)組與矩陣的關系。了解-維和二維數(shù)組的有關基本算法。了解數(shù)組作為函數(shù)參數(shù)時形參與實參結合的方式,特別注意與普通變量作為函數(shù)參數(shù)時值傳遞結合方式的區(qū)別。理解字符數(shù)組的定義與使用方法。了解C++提供的基本字符串處理函數(shù)。三、概念理解練習題.下列數(shù)組定義中,錯誤的是。A.chars[*A']; B.staticinta[4]={3};C.chars[5]=^^Hello^^D.charp[]={ ,,b'};.數(shù)組作為函數(shù)的形參時,把數(shù)組名作為實參,傳遞給函數(shù)的是oA.數(shù)組的首地址B.數(shù)組的元素個數(shù)C.數(shù)組中的各元素值D.數(shù)組的大小.下列說明或賦值語句,不正確的是( )A.charp[12];p[0]=V; B.charp[12];p=,,VisualC++”;C.charp[12]={'v','i','s','u'};D.charp[]-,,Visual,,i.設有定義chara[80]="0123456789”;則sizeof(a)和strlen(a)的值分別為A.10和10B.10和80C.80和10D.80和11.設有定義chara[]="ABCD",b[]={'A','B','C','D'};則下列敘述正確的為A.a和b數(shù)組完全相同 B.a和b數(shù)組長度相同C.a數(shù)組比b數(shù)組長度長 D.b數(shù)組比a數(shù)組長度長.判斷字符串a和b數(shù)組是否相等,應當使用。A.if(a==b)B.if(a=b)C.if(strcmp(a,b)== 0 )D.if(strcmp(a,b)=0)四、實驗內容.先閱讀程序,預測程序的運行結果,再上機編輯、運行該程序,以驗證自己的預測?!境绦?1#include<iostream.h>voidmain()intsub(intx口);intx[3]={1,2,3},y;for(inti=0;i<3;i++)(y=sub(x);cout?y;}cout?,\n;}intsub(intx[]){staticinti=2;intj;j=x[i—];return(j);}【程序2】#include<iostream.h>#defineN3voidmain()(voidsum(intb[3][3]);inta[N][N]={1,2,3,4,5,6,7,8,0);sum(a);cout?Ma[2][2]=M?a[2][2];)voidsum(intb[][3])(for(inti=0;i<3;i++)b⑵⑵+=b⑴⑴;}【程序3】ttinclude<iostream.h>ttinclude<string.h>voidmain()(chara[7]=wabcdefM;charb[4]="ABC”;strcpy(a,b);cout<<a?>\n';cout?a[5]?,\n';)2.完善程序?!境绦?】該程序的作用是用選擇法將一維無序數(shù)組按升序排列voidmain()inta[10]={4,6,2,19,5,1,11,10,2,13);sort(a,10);for(inti=0;i<10;i++)cout?a[i]<<'\t';}voidsort(intb[],intn)(for(inti=0;i<n-l;i++)(intk=i;for(intj=i+1;;)if(b[j]>b[k])if(k!=i)(inttemp=b[i];b[i]=b[j];[程序2]該程序的作用是在一有序數(shù)列中用折半查找算法查找某一個數(shù)折半查找算法示意圖如下:(假如查找15)TOC\o"1-5"\h\z1 3 4 6 8 10 13 15 21 34t t ttop mid bott t ttop mid botttinclude<iostream.h>voidmain(){intx[]={l,3,4,6,8,10,13,15,21,34};inttop=0,bot=9,mid,I,k;cout?Minputsearchnumbercin>>k;while(top<=bot)elseif(k<x[mid])bot=midT;elseif()cout<<"notfound!”;elsecout?5,searchnumberis:}3.編寫程序(1)定義一個函數(shù),將一維數(shù)組a中n個整數(shù)按相反順序存放。在main函數(shù)中輸入數(shù)組值,然后調用該函數(shù),最后將反序存放的數(shù)組值輸出。(2)定義一個函數(shù),找出一個二維數(shù)組中的鞍點,即該位置上的元素在該行上最大,在該列上最小。對沒有鞍點的給出相應的提示信息。在main函數(shù)中輸入二維數(shù)組值,然后調用該函數(shù)。(3)編寫一程序,將兩個字符串連接起來,不要使用strcat函數(shù)。(4)找猴王問題:一群猴子圍成一圈,任意假定一個正整數(shù)m,從第一只猴子起,順時針方向數(shù),每數(shù)到第m只猴子時,該猴子便離開。猴子不斷離開,圈子不斷縮小,最后剩下的一只猴子便是猴王。編寫程序找出猴王。實驗七指針和數(shù)組一、實驗目的.掌握指針和數(shù)組之間的關系,尤其是指針與二維數(shù)組的聯(lián)系,學會用指針處理數(shù)組。.掌握指針與字符串的聯(lián)系,學會用指針處理字符串。二、課前預習理解指針和指針變量的概念以及它們的定義方法,掌握指針變量的引用規(guī)則。了解兩種指針運算符的,*,與,&,含義和功能。了解數(shù)組名的含義、數(shù)組名和指針變量的區(qū)別與聯(lián)系。了解指針與數(shù)組處理字符串時的區(qū)別和聯(lián)系。區(qū)分指向一維數(shù)組的指針變量的和指針數(shù)組在定義語法上的區(qū)別。三、概念理解練習題.設inta=3,*p=&a;,則*p的值是( )。A.變量a的地址值B.無意義C.變量p的地址值D.3.有如下定義:int*p=NULL;表示:A.p指向的單元的值為0 B.p指向的單元的值是一個有效數(shù)C.p指向的單元的值為NULLD.p的值為0,不指向任何有效單元.若有說明int(*p)[3],則以下是正確的描述。p是一個指針數(shù)組。p是一個指針,它只可能指向一個包含3個int類型元素的數(shù)組。p是一個指針,它可以指向一個一維數(shù)組中的任意一個元素。(*p)[3]與*p[3]等價。.語句inta=10,*point=&a;其值不為地址。A.pointB.&aC.&pointD.*point.若inti=200;(假定i的地址值為2000H),int*p=(假定p的地址值為3000H),則p的值為( )oA.200B.3000C.2000D.不確定.設有說明inti,*p=&i;要實現(xiàn)i的內容加10,則下面的 語句是錯誤的A.*p=*&i+10;B.i=*p+10;C.*p=*p+10;D.*p=&i+10;.設有定義inta口={1,2,3,4,5,6,7,8,9,10),*p=a,i;則數(shù)組元素地址的正確表不為:OA.&(a+l)B.a++C.&pD.&p[i].設有程序段如下:intk;intA[10];則下列表達式中,與元素A[k]等效的是().A.A+kB.*A+kC.*(A+k)D.A+*k.若p為指針變量,y為變量,則y=*p++;的含義是oA.y=*p;p++B.y=(*p)++C.y=p;p++D.p++;y=*p.語句charstr[]="visualC++”;char*p=str;則p的值為0A.”visualC++“B.str的首地址C.\nD."v".設有說明語句char*s[]={"student”,“Teacher","Father","Month"},*ps=s[2];執(zhí)行語句:cout?*s[l]?,,,?ps?\,?*ps?,\n,;則輸出為。A.T,Father,F B.Teaher,F,FatherC.Teacher,Father,Father D.語法錯,無輸出.下列說明或賦值語句,不正確的是oA.char*p;p="VisualC++”; B.charpl[12]= 'i','s','u'};C.charp2[12];p2="VisualC++“D.charp3[]="Visual”;.以下能正確進行字符串賦值、賦初值的語句組是()。char s[5] = {匕1'f-d-e,};char *s;s = "afcde”;char s[5] = "afcde”;char s[5];s ="afcd";.若有變量定義:charsi□二"abed”,*s2=”efg”;則下列語句不正確的是。A.si=s2;B.s2=si;C.s2="How”;D.strepy(si,s2);.語句inti,*pl,**p2;以下語句語法不正確的是。A.pl=&i;B.p2=&i;C.p2=&pl;D.i='\0x23';.現(xiàn)有intb[3][4],*p;p=(int*)b;若要指針p指向b[2][3],以下正確的是A?p+=3*4+3; B.p+=2*4+3;C.p+=(3*4+3)*sizeof(int)D.p+=(2*4+3)*sizeof(int)17.設有說明語句“inta[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};int*p=&a[0][0]能夠正確表示數(shù)組元素a[2][2]的表達式是。A、p[2][2]B、*(*(p+2)+2)C、*(p+10)D、*(p+8).若inta[4][3],(*p)[3]=a;則下列表示a[2][2]數(shù)組元素的方法中,一是正確的。A.(p+2)+2B.*(*(p+2)+2)C.*(p+10)D.*p[2].下面正確的語句是oA.inta[3][4],(*p)[4];p=a;B.inta[3][4],*p[4];p=a;C.inta[3][4],*p;p=a; D.inta[3][4],**p;*p=a;.執(zhí)行以下語句序列:則ochar*pl="Speaking";//Achar*p2="English";//Bchar*p3="apieceofcake,\//Cchar*str[]={pl,p2,p3};//Dcout?*(str[0]+1);A.輸出EnglishB.輸出SpeakingC.輸出ED.D行語法錯.判斷兩個字符串si和s2相等,應當使用oA.if(si==s2)B.if(strcmp(sl,s2))C.if(si=s2)D.if(!strcmp(sl,s2)).若要實現(xiàn)兩個字符數(shù)組(chara[20],charb[20])的拷貝,可以使用。A.a=bB.strcmp(a,b)C.strepy(a,b)D.a[I]=b[I]23.現(xiàn)有定義charstrl[]="China",str2[5]={'C','h','i','1','6'};則有strcmp(strl,str2)>0strcmp(strl,str2)<0strlen(strl)=6strl與str2所占存儲空間大小一樣.執(zhí)行下列程序段后,m的值是()ointa[2][3]={1,2,3};intm,*ptr;ptr=&a[0][0];m=(*ptr)*(*(ptr+2))*(*ptr+4);A.0 B,12C.15D.值不定.下列程序的輸出結果是..#include<iostream.h>#include<string.h>voidmain(void){charstrl[50]=*abc*,*pl=strl,*p2="ABC”,str[50]="xyz〃;strcpy(str+2,strcat(pl,p2));cout?str<<,\n;).下列程序的輸出結果是o#include<iostream.h>#include<string.h>voidmain(void)(char*pl="ABCdef",*p2="ab";pl++,p2++;cout?strcmp(pl,p2)??\n;).下面程序的運行結果為、voidmain()(staticinta[3][2>{{12},{14,16},{1,2}};int*p=a[l];cout<<*(p+1)<<endl;cout<<*(p+3)?endl;).以下程序運行結果是ovoidmain()(shortar[5]={1,2,3,4,5};short*par=&ar[l];inti;for(i=0;i<4;i++)cout?ar[i]?par[i]?*(ar+i);)四、實驗內容.先閱讀程序,再上機編輯、運行該程序,驗證預測。#include<iostream.h>^include<string.h>voidmain()char*str⑷={“DELPHI","BASIC",“C++”,"FORTRAN};char*p;inti,j,k;for(i=0;i<3;i++)(k=i;for(j=i+l;j<5;j++)if(strcmp(str[k],str[j])>0)k=j;if(k!=i)(p=str[k];str[k]=str[i];str[i]=p;))cout?str[l]?,,\n,,?str[3];).編寫程序(1)定義一個二維數(shù)組并輸入各元素值,然后通過一個一維指針變量訪問二維數(shù)組中的各個元素進行輸出。實驗八指針和函數(shù)一、實驗目的.掌握各種類型指針變量作為函數(shù)參數(shù)的使用方法。.掌握指針作為函數(shù)返回值的用法。二、課前預習.C++語言參數(shù)傳遞的概念和用途。.參數(shù)傳遞的三種方式:值傳遞、地址傳遞和引用傳遞,并區(qū)分它們在進行參數(shù)傳遞時的不同。.指向函數(shù)的指針變量的定義方式和使用方法。.區(qū)分指向函數(shù)的指針變量的和返回值為指針的函數(shù)在定義語法上的區(qū)別。1.數(shù)組作為函數(shù)的形參時,1.數(shù)組作為函數(shù)的形參時,

A.該數(shù)組的首地址C.該數(shù)組中的各元素值把數(shù)組名作為實參,傳遞給函數(shù)的是B.該數(shù)組的元素個數(shù)D.該數(shù)組的大小.函數(shù)在使用傳遞引用調用方式時,要求。A.實參是數(shù)組名,形參是指針B.實參是引用,形參是指針C.實參是變量名,形參是引用D.實參是指針,形參是變量名.若有說明int*(*foo)();則foo是oA.指向函數(shù)的指針C.A.指向函數(shù)的指針C.指向整型的指針4.設voidfl(int&x,D.指向指針的函數(shù)char*p);intm;chars[]="c++";以下調用合法的是A.fl(&m,&s);B.fl(&m,s);C.fl(m,s);D.fl(m>&s);.下列程序執(zhí)行后的輸出結果是。voidfunc(int*a,intb[]){ b[0]=*a+6; }mainO(inta,b[5];a=0;b[0]=3;func(&a,b);cout?b[0];)A.6B.7 C.8D.9.請讀程序:若程序編譯連接后生成exa.exe,則在DOS狀態(tài)命令行方式下輸入:exafilelfile2〈回車》后得到的結果是.#include<iostream.h>voidmain(intargc,char*argv口)(intk;cout?argc?*\t*;for(k=l;k<=argc-l;k++)cout<<argv[k]?,\t*;cout?,\n;).以下程序輸出的第一行是 第二行是 第三行是,第四行是。#include<iostream.h>voidswapl(intpl,intp2)(intt;t=pl;pl=p2;p2=t;}voidswap2(int*pl,int*p2)(intt;t=*pl;*pl=*p2;*p2=t;)voidswap3(int*pl,int*p2){int*t;t=pl;pl=p2;p2=t;}voidswap4(int&pl,int&p2)(intt;t=pl;pl=p2;p2=t;}voidmain()(intx=100,y=200;swapl(x,y);cout?"x="<<x<<"\t"?"y="<<y<<'\n";inta=100,b=200;swap2(&a,&b);intm=100,n=200;swap3(&m,&n);cout〈<"m="<<m<<'\t"<<"n="<<n〈<'\n";ints=100,t=200;swap4(s,t);cout?"s="<<s<<"\t"<<"t="<<t<<"\n";}面程序的正確運行結果第一行、第二行ochar*strl(char*to,char*from)char*p=to;while(*to++=*from++);returnp;)char*str2(char*to,char*from)(char*p=to;while(*to++);to——;while(*to++=*from++);returnp;}voidmain()(charsi[100]=Mdon\5t”,s2[100]=,,lookround”,s3[200];cout<<strl(s3,si)?endl;cout?str2(s3,s2)?endl;).下面程序的運行結果為o#include<iostream.h>voidsub(int*x,inti,intn)(if(n<=i)sub(x,i,3*n);*x+=n++;)voidmain()(intx=0;sub(&x,12,2);cout?x;}.以下程序求二維數(shù)組的平均值。floataverage(float(*p)[4],intn){floatsum=0;for(inti=0;;i++)(for(j=0;j<4;j++)sum+=;p++;returnsum/(n*4);voidmain()(floatscore[3][4]={{56,65,70,76},{89,97,52,81},{90,99,91,86}};cout<〈“平均值二"<<average()?endl;}四、實驗內容.先閱讀程序,再上機編輯、運行該程序,驗證預測。#include<iostream.h>voidfun(intn,int*s)(intfl,f2;if(n=l||n=2)*s=l;else{fun(n-1,&fl);fun(n-2,&f2);*s=2*fl+f2+l;cout?fl?,\t,?f2?,\n;))voidmain()(intx;fun(4,&x);cout<<z?x=z/<<x<<,\n;}#include<iostream.h>voidf(int*ql,int*q2,int*q3)(*q3=*ql+*q2;)voidmain()(inti,j,a[3][3]={1,1},*pl=a[0],*p2=a[0]+l,*p3=a[0]+2;for(i=2;i<9;i++)f(pl++,p2++,p3++);for(i=0;i<3;i++)for(j=0;j<3;j++)cout?a[i][j]?,\t*;cout?endl;))TOC\o"1-5"\h\z#include<iostream.h>intfuna(inta,intb){return(a+b); }intfunb(inta,intb){return(a-b); }intsub(int(*f)(int,int),intx,inty){return((*f)(x,y)); }voidmain(void)(intx,(*p)(int,int);p二funb;x=sub(funa,8,3);x+=sub(p,9,3);cout<〈"x="<<x<<'\n’;).程序改錯(1)以下程序定義的函數(shù)sum(int*a,intm)的功能是求被指針a所指向的m個整數(shù)的和,main函數(shù)通過調用sum(p,N),求得被p指針所指向的一維數(shù)組x的N個元素之和。該程序有若干錯誤,請修改使之正確。#include<iostream.h>^defineN10sum(int*a,intm)(inti,s=0;for(i=0;i<m;i++)s=s+a++;returns;)voidmain()(intI,result,x[N],*p;for(I=0;I<N;I++)cin?p;result=sum(p,N);cout<<,,sum=,,?result<<endl;}(2)下面的程序將字符串str2插入到字符串strl的第m(m<20)個字符的前面。含有錯誤的源程序如下:4include<iostream.h>voidinsert(char,int,char);voidmain()(charstrl[100]="123456789012345678901234567890”,str2[80]="abc";intm;cout?*Inputanumberm(m<20):z,?endl;〃輸入mcin?m;cout?*PrimeString:*?strl<<endl; //輸出修改前的字符insert(strl[],m,str2[]);cout?*0utString:*?strl?endl; //輸出修改后的字符串voidinsert(charsi[],intn,chars2[])(charpl[80];for(inti=n-1,j=0;sl[i];i++)〃sl插入點后面部分存入pl中pl[++j]=sl[i];pl[j]='\0';for(j=0;s2[j];j++); 〃使下標j指向s2中字符串結束位置for(i=0;pl[i];) 〃將pl加入到s2的尾部s2[j++]=pl[i++]:s2[j]='\0';for(i=n-1,j=0;s2[j];j++)〃將修改后的s2替換si的插入點后的部分sl[i++]=s2[j];sl[i+l]='\0';)(3)以下程序將一個十進制整數(shù)轉換成其他進制的數(shù)(用字符串表示)。例如:輸入45和16,表示將十進制45轉換成十六進制數(shù),程序輸出2D;輸入45和8,表示將十進制數(shù)45轉換成八進制數(shù),程序輸出55。含有錯誤的程序為:#include<iostream.h>〃將十進制數(shù)n轉換成r進制數(shù),結果存入s指向的字符串中〃注意:結果是反向的,需要進一步在函數(shù)fun2中做逆序處理#include<iostream.h>voidfunl(char*s,intn,intr)(inti=0;while(n>0)if(n%r>9)*s='A'+n%r-10;else*s='O'+n%r;n=n/r;s++;}*s='O';)voidfun2(char*s){char*pl=s,*p2=s;while(*p2++);p2—;while(pl<p2)(char*t=*pl;*pl++=*p2;*p2—=t;)}voidmain()(charstr[15];intk,m;cin?k?m;funl(&str,k,m);fun2(&str);cout〈〈str<<"\n";}(4)輸入一個字符串,串內有數(shù)字和非數(shù)字字符,例如:abc2345345rrf678jkfed945,將其中連續(xù)的數(shù)字作為一個整數(shù),依次存放到另一個整型數(shù)組b中。如對于上面的輸入,將2345存放到b[0]、345存入b[l]……統(tǒng)計出字符串中的整數(shù)個數(shù),并輸出這些整數(shù)。要求在主函數(shù)中完成輸入輸出工作。設計一個函數(shù),把指向字符串的指針和指向整數(shù)的指針作為函數(shù)的參數(shù),并完成從字符串中依次提取出整數(shù)的工作。含有錯誤的源程序如下:#include<iostream.h>inti=0;〃該變量用于存放輸入的字符串中整數(shù)的個數(shù)voidmain(void)(chara[1000];intb[1000];cout<<”請輸入一個字符串:\n”;cin.getline(a,1000);getnumber(&a,&b);

cout<<〃輸入的字符串中有〃個整數(shù),它們是:\n〃;for(intj=0;j<i;j++)cout?b[j]?*cout<<endl;)voidgetnumber(char*pchar,int*pint){intt;while(*pchar){if(*pchar>'O'&&*pchar<='9')t=t*10+(*pchar);elseif(t!=0){*pint=t;pint++;t=0;i++;}pchar++;}if(t!=0)(*pint=t;i++;))(5)求兩個矩陣(看作為二維數(shù)組)相乘。設a為m*n階矩陣,b為n*p階矩陣,a矩陣乘k-n—\C"=Z4*BkjA=0錯誤程以b矩陣得到m*pk-n—\C"=Z4*BkjA=0錯誤程#include<iostream.h>voidmain()(floata[3][2]={1,2,3,4,5,6},b[2][2]={7,8,9,10},c[3][2];introw,col;for(row=0;row<3;row++)(for(col=0;col<2;col++)cout?a[row][col]?>\t*;cout<<endl;}cout<<"*"<〈'\n;for(row=0;row<2;row++)(for(col=0;col<2;col++)cout?b[row][col]?,\t*;cout<<'\n;)cout?*=*?endl;matrixmul(a,b,c,3,2,2);for(row=0;row<3;row++)(for(col=0;col<2;col++)cout<<*(pc+row*2+col)?T\tf;cout?endl;float*matrixmul(float*pa,float*pb,float*pc,intm,intn,intp)(inti,j,k;floatt;for(i=0;i<m;i++)for(j=0;j<p;j++)(t=0;for(k=0;k<n;k++)t+=*(pa+i*n+k)**(pb+k*p+j);(pc+i*p+j)=t;)return*pc;}.程序填空,并上機驗證正確性(1)下面程序的功能是:從鍵盤上輸入若干個整數(shù),按升序排序后輸出。#include<iostream.h>voidsort(inta[],intn)(for(inti=0;;i++)for(intj=i+l;j<n;j++)if()(intt=a[i];a[i]=a[j];a[j]=t;}voidinput(int*p,intn)(cout?w輸入"<<n<<”個整數(shù):\n”;for(inti=0;i<n;i++)cin?;)voidoutput(int*p,intn)(for(inti=0;i<n;i++)cout??'\t';)voidmain(void){intx[200],intnum;cout?w輸入要排序數(shù)的個數(shù)(小于200):”;cin?num;input(x,num);sort(x,num);output(x,num);}(2)下面程序中,函數(shù)delstr的功能是:將字符串str中所有出現(xiàn)的子串strl全部刪除。如本程序的運行結果為:“Iama.youarea.”#include<iostream.h>#include<string.h>char*delstr(char*str,char*strl)(char*p,*pl,*ql;inti;if(*str==,\0'*strl=,\Q9)returnstr;p=str;while(*p!=,\0')(pl二P;ql=strl;while(*pl==*ql&&*ql!='\0')if(p!=pl&&*ql=='\0')(for(i=0;*pl!='\0';i++,pl++)\0'p++;)return;)voidmain(void)(charline[80]=,,Iamastudent,youareastudent.";cout?delstr(line,“student")?,\n,;}.編寫程序編寫一個程序,用來從字符串str中找出指定子串substr在該字符串中第一次出現(xiàn)的位置,此位置用子串第一個字符在字符串中的位置來表示。輸入輸出實例如下:輸入:Chinesein輸出:ChineseinThefirstpositionis2實驗九結構體和簡單鏈表一、實驗目的.掌握結構體類型的定義和使用方法,包括結構體類型定義形式、結構體變量和結構體類型指針的定義與使用、結構體成員的引用、結構體數(shù)組的使用等。.理解動態(tài)數(shù)據(jù)結構的概念,掌握鏈表的創(chuàng)建和編輯操作技能,學習簡單鏈表的使用方法。二、課前預習.理解結構體類型的概念和結構體變量的定義方式;.了解結構體變量的引用方式;.復習指針的概念、使用方法和C++語言動態(tài)申請和釋放內存空間的兩個關鍵字new和delete的使用方法。.理解鏈表的概念。鏈表是結構體與指針的綜合應用產物。與數(shù)組相比較,鏈表的特點是:表的大小在程序執(zhí)行過程中可以動態(tài)改變;邏輯上相鄰的元素其物理存儲位置允許不相鄰。其操作有:?鏈表的創(chuàng)建鏈表的遍歷鏈表的插入鏈表的刪除鏈表的排序5.結合結構體類型,理解共用體類型和枚舉類型的概念及其應用三、概念理解練習題.定義一個結構體類型的變量,可采用三種方法,即、.下列描述正確的是.A.定義結構體變量時,系統(tǒng)按照各成員項的大小分配相應的存儲空間。B.定義結構體變量時,系統(tǒng)按照成員項中占用空間最大的成員項分配存儲空間。C.結構體定義時,系統(tǒng)并不給結構體類型分配存儲空間。D.結構體的每個成員的數(shù)據(jù)類型必須是基本數(shù)據(jù)類型E.結構體的每個成員的數(shù)據(jù)類型都相同,這一點與數(shù)組一樣F.結構體定義時,其成員的數(shù)據(jù)類型不能是結構體本身G.不同結構體的成員名不能相同H.結構體變量的名稱為該結構體變量的存儲首地址I.結構體數(shù)組中不同元素的同名成員項具有相同的數(shù)據(jù)類型.結構體類型的變量在程序執(zhí)行期間.A.所有成員一直駐留在內存中 B.只有一個成員駐留在內存中C.部分成員駐留在內存中 D.沒有成員駐留在內存中.下列描述說明正確的是。A.共同體定義時,系統(tǒng)按照各成員項各自占用空間大小之和分配存儲空間B.共同體定義時并不分配存儲空間,只有變量說明時,系統(tǒng)才分配存儲空間C.共同體定義時,系統(tǒng)按照占用空間最大的成員所需空間大小分配存儲空間一旦定義了一個共同體變量后,即可以引用該變量或該變量中的任意成員一個共同體變量中可以同時存放其所有成員F.共同體類型數(shù)據(jù)可以出現(xiàn)在結構體類型定義中,但結構體類型數(shù)據(jù)不能出現(xiàn)在

共同體類型定義中5.設有以下說明語句structex{intx;floaty;charz;}example;則下面的敘述中不正確的是oA.struct是結構體類型的關鍵字B.example是用戶定義的結構體類型名C.x,y,z都是結構體成員名D.6X是用戶定義的結構體類型6,若有以下的程序段,則對stu中sex域的正確引用方式是ostructpupi1(charname[30];intsex;}stu,*p;p-&stu;A.p.stu.sexB.p->stu.sexC.(*p).stu.sexD.(*p).sex7.若有以下說明和語句,則值為6的表達式是ostructstl(intn;stl*next;};stla[3],*p;a[0].n=5;a[0].next=&a[l];a[l].n=7;a[l],next=&a[2];a[2].n=9;a[2],next='\0';p=&a[0];A.p->n++B.p++->nC.(*p).n++D.++p->n8.如下圖結構體說明和變量的定義,p指向a,q指向變量b.下面不能把結點b連接到結點a之后的語句是odatanextdatanextba°—>bA.p->next=q;B.p,next=&b;C.p->next=&b;D.(*p).next=q;9.下程序的輸出結果是ttinclude<iostream.h>voidmain()(structstru(inta,b;charc[6];};cout<<sizeof(stru)?endl;).下程序的輸出結果是^include<stream.h>voidmainO{unionun(intI;longj;charm;};structby(intx;longy;unm;)r;cout<<sizeof(r));}.以下min函數(shù)的功能是:查找?guī)в蓄^結點的單向鏈表,將結點數(shù)據(jù)域的最小值作為函數(shù)返回值。補足所缺語句。Stuctnode(intdata;node*next;);intmin(node*first)(node*p;intm;p=first;m=p->data;for(p=p-<next;p!='\0';p=)if()m=p->data;returnm;}四、實驗內容.閱讀程序,預測功能,再上機編輯、運行該程序,以驗證自己的預測。[程序1]#include<string.h>ttinclude<iostream.h>structwritecharname[10];intage;);structbook{chartitle[20];doubleprice;writeauthor;}a[]={{"TurboC”,28.3,{"xia”,53}},{"C++

溫馨提示

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

評論

0/150

提交評論