第一篇:C++復習題 程序填空
2009-2010學年第一學期《C++程序設計》期末考試復習題周景春
程序填空(10分)
1.使執行結果為100 #include
public:
Test(int aa){(○1)}
int Getx(){
(○2)
} private:int x;};
void main(){
Test xx(100);
cout< 答案:○1 X=aa ○return X 2.下面程序是應用C++多態性,計算矩形面積。在橫線上填寫適當語句使程序正確進行并得到給定程序結果.運行結果: 長:10 寬:20 矩形面積:200 半徑:3 圓面積:28.26 # include virtualvoidshow_area()=0;};class Rectangle :public Shape{ pulic: Rectangle(double ll,double ww){L=ll;W=ww;} voidshow_area()(○3) private: float L,W;}; class Circle:public Shape{ Public: Circle(double rr){○} void show_area() cout<<”半徑:”< 面 積:”<<3.14*R*R< doubleR;};voidmain(){Shape *p;Rectangle ○;CircleC(3); P&r; p->show_area();P=&c; p->show_area();} } 答案: ○cout<<”:長”< 一:'CRecordset' : base class undefined 解決方法:在工程的StdAfx.h頭文件中添加:#include 二: m_dlg.m_database.Open(_T(“addresslist”));// 這個在編譯時會出現錯誤,解決辦法:可以同上:#include 三:建了一個控件,但想在類向導里面定義該控件的函數時找不到控件ID號(原因:是因為修改了主對話框的ID號) 主對話框.h 中把emun{中改成相應的ID_Dlg} 四:設置窗體背景的顏色: 在主窗體APP文件里代碼:SetDialogBkColor(RGB(200,223,200),RGB(0,0,255)); 五:CAddressDlg::OnClose() 這個函數里面有KillTimer(0).六:連接數據庫,m_recordset->Open(AFX_DB_USE_DEFAULT_TYPE,strSQL);//從數據庫中查找,輸入的密碼是否正確 七:當控件在類向導里沒有顯示其ID號時,將其屬性里的組勾選即可~ 說明:這里跟三不同 八:不能訪問類查看信息文件 解決辦法 解決辦法為:刪除掉目錄中clw及ncb文件,再打開,就可以了。 九:當單擊右鍵沒看到“Add Windows Message Handler”時,更換.clw/.ncb文件即可 十:單步調試到RefreshData()時總是出現“FROM 語法錯誤” 解決辦法:完成MainDlg()里面的顯示工作區表格的代碼后,這個問題沒有了。 十一:Visual Assist X這是一個軟件,可以幫助C++有個更友好的顯示界面。 十二:實現窗體的伸縮功能: OnRadioSearch();SizeWindow(); 十三:Address工程里,當點擊右邊修改記錄時,會出現系統報錯 解決辦法: 對修改記錄所需彈出的窗口進行完整,像在類向導里面添加處理各種消息的函數 十四:AboutDlg彈出窗口設計一直說AboutDlg 最后新建了一個CAboutdlg1,并修改源代碼,最后功能實現了 初步查找原因:元工程里面缺少的類CAboutDlg定義在AddressDlg.cpp里面,這才是原因,CAboutDlg應該需要定在Aboutdlg.h里面才行~ 嗯!驗證了,就是這個原因。 其實沒有這么復雜:只要按照錯誤的提示建立自己的類啊、頭文件啊、CPP文件就好了~~~ 十五:AddInfo窗體錄入數據出錯:說“姓名一定要填寫!然后出現系統錯誤”解決辦法: 一下兩個地方的 // NOTE: the ClassWizard will add member initialization here需要填寫!?。?/p> 1.CAddInfoDlg::CAddInfoDlg(CWnd* pParent /*=NULL*/) : CDialog(CAddInfoDlg::IDD, pParent) 2.void CAddInfoDlg::DoDataExchange(CDataExchange* pDX) 這里如果缺少1,會出現下面的系統錯誤: 由于將在索引、主關鍵字、或關系中創建重復的值,請求對表的改變沒有成功。改變該字段中的或包含重復數據的字段中的數據,刪除索引或重新定義索引以允許重復的值并再試一次。 十六:模糊查詢及精確查詢均用不了:都顯示“請輸入關鍵字” 在差錯過程中完整如下代碼后出現系統錯誤 BOOL CMainDlg::PreTranslateMessage(MSG* pMsg) 十七:組合框設置默認值實現不了~ 可實現的方法(但是在我的程序里沒用!) //默認“姓名”項被選中 m_ctrlfield.SetCurSel(0); 成功實現,關鍵:將SetCurSel()函數放在AddString()后面就可以了 十八:當加入DoDataExchange(CDataExchange* pDX)時中的代碼時,運行報系統錯誤,編譯沒問題,已移植問題文件夾~ 相關發現:在定義整形變量時有一種整形變量的description是: int with validation(FOREIGN VALIABLE)這種變量的定義方法是 在DoDataExchange()函數中使用如下語句: DDX_FieldText(pDX, IDC_CATNUM, m_pSet2->m_cat, m_pSet2); 當在CTestDBDoc.h文件中申明CMyRSet m_MyRSet;后便可以定義上述變量。 十八_2: DDX_FieldText()不知道怎么產生; 十九:ADOTest窗口彈不出來 解決方法:在建立MFC工程的時候將選項里的Base類由CView改為CFormView 二十:如何定義_ConnectionPtr型變量 在stdafx.h文件中加入代碼:#import “c:program filescommon filessystemadomsado15.dll” no_namespace rename(“EOF”,“adoEOF”) 見博客:#post 二十一:當寫到try{}是出現錯誤 解決方法:在后面添加catch{}代碼,因為try與catch對應__try與__finally;try模塊后面要跟上catch 二十二:ADOTest連接數據庫失敗 原因:ADOTest1.cpp中 hr = m_pConnection->Open(“Provider=Microsoft.Jet.OLEDB.4.0;Data Source=test.mdb”,“",”",adModeUnknown);///連接數據庫 數據庫test.mdb沒有建立。 二十三:ADOTest刪除按鍵為灰色框扭按不下去。無語了:原來是沒有選中要被刪除的選項 不過要將OnItemchangedUserlist()中的代碼添加完全 二十四:Address的Login對話框類中的消息處理函數WM_Close有什么用WM_CLOSE是可選的,可以給你一個機會決定關不關 WM_DESTROY你沒有得選擇,因為DestroyWindow已經調用,窗口已經開始銷毀。 二十五:使用CDataBase類定義對象時出現問題,原因是沒有定義這個類在添加CPersonSet類后問題很多很多:有26個此類錯誤 見“一” 二十六:出現如:'m_database' : is not a member of 'CAddInfoDlg'的錯誤提示時應在CAddInfoDlg中定義m_database量 二十七:點擊查詢后沒有反應,不管精確查詢還是模糊查詢 原來是OnRadio1()中的 m_bsearchflag沒有賦值 針對我們這學期學的c++,假期進行了五天的實習。第一天聽老師講實習內容和提示的時候覺得思路挺明確的一個程序,哪有傳說中的那么難。下午和同學討論的時候覺得很有目的,只要按部就班的完成各步操作就可以了,有難度的也只是第二步。這一步要進行判斷,這就需要多個輸出函數;還要冒泡法給工作排序,工資的計算不是在類中完成的——挺棘手的一個問題。 第二天上機的時候也很快完成了第一步,覺得還行,慢慢來五天完全可以完成。后來也就沒怎么好好思考,沒想到第二天遇到麻煩了,編不出第二步了。第三天下午也沒調試好,第一步輸入的數據在第二步統計的時候怎么也數不出來,我從頭至尾研究了多次,沒發現一點問題,請舍友幫我檢查也說沒錯,到了傍晚還是看不出來。哎!又找一個人給我看了看,竟然錯得那么幼稚,類外定義了全局對象,在數據輸入put()函數里又重新定義了對象,這樣在put()輸入的數據無法用到其他函數中,自然統計的時候都是默認值了。 就這么一個小小的錯誤整得我一天一晚上寢食難安。 編程序時深深感受到要不得半點馬虎,有時少一個“}”或“<”都會導致程序語法錯誤;由于編程序經常要變換輸入法,很容易輸進中文字符,這也會導致語法錯誤;調用類里重名函數時要注明屬于哪個類的。 第三天的時候第二步基本都編出來了,傍晚那時我沒檢查出錯誤來的時候,實在是把我急壞了,借了臺電腦,在那安靜專心的研究程序,舍友幫我檢查出錯誤來之后,編程序有了感覺,那時已經22:00多了,竟然沒有一絲睡意。 后來舍友們陸續睡覺了,可我就是不愿睡??赡苁浅鲇谧宰鹦男枰?,別人都編出來了,自己編不出來,讓我無法接受;也可能是第二步出來了急于盡快搞定。從19:00到凌晨4:00一直在那兒編程序了,一次次地聽到鈴聲響竟然沒有上床睡覺的沖動,滿腦袋只有一個想法:認真編程序,爭取晚上搞定。后來差不多了,只有備份不怎么完善,當時電腦已經用了好長時間了,實在不忍心一直用人家的電腦,只好關機睡覺了。 這幾天可以說是兩耳不聞窗外事,一心只顧編程序了,電話都懶得打,只想盡快把程序搞定,晚上沒有電腦用,我們三個女生就去網吧,只是那兒沒有vusual-c++,只好作罷。 雖然我們一直在編程序,覺得挺累的,其實還有比我們更累的——我們的老師。我們是每天只有半天的實習時間,可是老師卻整天在機房里,看得出來,老師連坐下休息的時間都沒有,剛要喝點水,立馬就被一個同學叫去了,實習完那天下午看見老師都不想走路了。太累了,一天站7小時,還一直給別人檢查程序,太忙了。想想老師這么認真,我們還有什么理由不認真呢? 只有五天的實習,卻讓我受益匪淺:這不僅是一次對我們的c++掌握和運用的熟練程度的檢查,更是一次磨練我們耐性、培養認真態度的機會。這次實習讓我深刻體會到“細節決定成敗,態度決定一切”;更讓我 從 老師身上學到了很多在以后工作中需要的優秀品質。相信這會在我今后的學習和以后的工作很有幫助。 通過完成本次面向對象程序設計的任務,使我熟練和掌握了上學期所學的有關visual c++中的一些主要知識點和應用點,如類的定義,類的實現,對象的定義,類的繼承等等。可以所學有所學,所有所用,不至于自己所學知識由于沒有經歷可用過程,而放棄對它的興趣。 第一天上課時候聽老師講,第一反應是這可怎么做了。當時有些迷茫。但是事在人為,下午回去之后在宿舍苦心研究,終于在整體上有了一定的把握。我們可以先定義一個基類,再派生三個子類,然后在類外定義函數。有人數規定,我們就定義相應長度的對象數組,最后在實現程序功能時,用函數調用就行。 于是當晚很快就完成了第二天的預習報告,上機調試時也沒什么大問題,就這樣第二天順利通過。 雖說接下來的統計沒那么容易,但就順著數據順利輸入的喜悅心情,我還是較好的完成了這個任務。在類外定義一個函數用來輸出雇員的基本情況,表頭,表尾直接在統計函數中輸出,也就是在統計函數中調用函數。打印與統計有異曲同工之妙,所以在統計做出之后,打印自然而然的也就很快完成了。 接下來的數據備份中,遇到了一個小問題,一開始以為也是函數中調用打印函數中用的那函數。其實不然,如若那樣,又變成了打印。那我們就直接輸出,但詳細資料是受保護的,不能直接輸出,那還得調用函數。于是在每個類中的公共成員中定義了直接返回的函數,接下來順利完成了備份。調用頭文件 里的exit(int)函數,可以用if()語句進行判斷是否確定退出。程序順利完成。 面向對象程序設計作為一門軟件設計的課程,具有極強的實踐性,使我加強了靈活應用理論知識的能力及面向對象程序設計技能。 此次,應用程序的設計和創建,經歷了平時在課堂中和考試中,決不會有的重重難題和問題。而這些問題,又都是課本上很少提到的、更深一層的知識領域和應用領域。這些問題,并不是我們平時只靠課本,就可以輕易解決的。所以,鍛煉了我們面對難題,自己思索,自己探索,自己查資料發現問題、解決問題的獨斷能力。 當然,此次任務的完成,也體現出同學之間的團結精神。所遇種種難以解決的問題,大家都會把它當作共同遇到的問題,在一起共同探討,共同發揮自己所學和所知,投入式的互相幫助和解決困難。 /* 頭文件 */ #include #include #include char lt[10];//開車時間 char at[10];//到達時間 int count;//票數 }s[N];/* 全局變量 */ int i;//輸入計數器 int m=0;//合計計數器 char l[20];//糾錯空間 /* 函數聲明 */ void INPUT();//輸入車次信息 void PRINTF();//輸出車次信息 void save();//保存車次信息 void read();//讀取車次信息 void search();//查找車次信息 void dingpiao();//訂票信息 void tuipiao();//退票信息 void WRONG();//糾錯模塊 ///////////////////////////////////////////////////////////////////////////////////////主函數 void main(){ int j;do { system(“cls”);//清屏語句 printf(“ *************************************************************n”);printf(“ 歡迎進入火車票務管理系統 n”);printf(“ *************************************************************”);printf(“ n 請輸入選項 nn”);printf(“ 1.添加列車信息 nn” “ 2.查找 nn” “ 3.訂票 nn” “ 4.退票 nn” “ 5.退出 nn”);printf(“ *************************************************************nn”);printf(“請選擇: ”);scanf(“%d”,&j);gets(l); switch(j){ case 1: INPUT();//調用輸入模塊 break;case 2:search();//調用查找模塊 break;case 3:dingpiao();//調用訂票模塊 break;case 4:tuipiao();//調用退票模塊 break;case 5:;break;default:WRONG();break;} }while(j!=5);//判斷結束 printf(“n 王志強 1241班 201210913124 n ”);printf(“n--------”); printf(“n 正在退出,請按任意鍵退出”); printf(“n--------n ”);}//主函數結束 //////////////////////////////////////////////////////////////////////////////////////////輸入模塊 void INPUT(){ int y; system(“cls”);printf(“n ====================歡迎進入 錄入火車時刻信息 界面====================nn”);for(i=0;i printf(“請輸入車次號: ”);scanf(“%s”,&s[i].code);//讀取車次號 printf(“請輸入站數: ”);scanf(“%s”,&s[i].data);//讀取站數 printf(“請輸入起始站: ”);scanf(“%s”,s[i].lp);//讀取起始站 printf(“請輸入終點站: ”);scanf(“%s”,s[i].ap);//讀取終點站 printf(“請輸入開車時間: ”);scanf(“%s”,s[i].lt);//讀取開車時間 printf(“請輸入到達時間: ”);scanf(“%s”,s[i].at);//讀取到達時間 printf(“請輸入車票數: ”);scanf(“%d”,&s[i].count);//讀取票數 m++; printf(“第%d個信息已經輸完.按任意鍵繼續,按 0 結束: ”,m);scanf(“%d”,&y);gets(l);if(y==0){ save();//將結構體信息存盤 PRINTF();//輸出輸入的列車信息 printf(“n 按任意鍵返回上級菜單: ”);gets(l);break;} } } ////////////////////////////////////////////////////////////////////////保存模塊程序 void save(){ FILE *fp,*fp1;//定義文件指針 if((fp=fopen(“chen.dat”,“wb”))==NULL)//打開文件并判斷是否出錯 { printf(“創建文件失敗!nn”);//打印出錯提示 getchar();return;} if((fp1=fopen(“hao.dat”,“wb”))==NULL)//打開文件并判斷是否出錯 { printf(“創建文件失敗!nn”);//打印出錯提示 getchar();return;} for(i=0;i printf(“向文件輸入數據失敗!nn”);fprintf(fp1,“%d”,m);fclose(fp);//關閉文件 fclose(fp1);//關閉文件 } ///////////////////////////////////////////////////////////////////////文件讀取模塊 void read(){ FILE *fp,*fp1;//定義文件指針 if((fp=fopen(“chen.dat”,“rb”))==NULL)//打開文件,并判斷是否出錯 { printf(“出錯,請檢查文件是否存在,按任意鍵返回住菜單”);//打印出錯提示 getchar();} if((fp1=fopen(“hao.dat”,“rb”))==NULL)//打開文件并判斷是否出錯 { printf(“創建文件失敗!nn”);//打印出錯提示 getchar();return;} fscanf(fp1,“%d”,&m);fclose(fp1);//關閉文件 for(i=0;i //////////////////////////////////////////////////////////////////////////////查詢模塊 void search(){ char name1[20];char name2[20];char ii[10];int nk;char no[10];do { system(“cls”);//清屏語句 printf(“nn ====================歡迎進入 查詢火車時刻信息 界面====================n”); printf(“n ++++++++++++++++++請選擇查找方式++++++++++++++++++nn”); printf(“ ----1.顯示所有列車信息 2.按車次查詢 3.按始發站查詢----n”); printf(“ -----4.按終點站查詢 5.返回主菜單----n”); printf(“n 請選擇: ”);scanf(“%d”,&nk);//讀取查找方式 gets(l);if(nk==5)break; switch(nk){ case 1:PRINTF();//調用打印模塊 break;case 2: printf(“請輸入車次號:n”);scanf(“%s”,&no);//車次號 break;case 3: printf(“請輸入始發站名稱:n”);scanf(“%s”,name1);//讀取始發站 break;case 4: printf(“請輸入終點站名稱:n”);scanf(“%s”,name2);//終點站 break;default: WRONG(); break;} read();//調用讀取函數 for(i=0;i search();//調用查詢模塊 printf(“請輸入您要訂的車票數以回車鍵結束:”);scanf(“%d”,&n);//讀取所訂機票數 if(n<0){ system(“cls”);WRONG();//scanf(“%s”,l);//gets(l); break;} if(s[i].count!=0&&s[i].count>=n)//判斷是否出錯 { s[i].count=s[i].count-n;//調用保存函數 system(“cls”);printf(“訂票成功!nn”);printf(“ntt按任意鍵返回主菜單: ”);scanf(“%s”,l); break;} if(s[i].count break;} printf(“是否繼續?(y/n):n”);//判斷是否繼續訂票 scanf(“%s”,a);}while(!strcmp(a,“y”));//判斷結束 } ///////////////////////////////////////////////////////////////////////////////退票模塊 void tuipiao(){ int n;char a;do { search();//調用查詢模塊 printf(“請輸入您要退的機票數目:n”);scanf(“%d”,&n);//輸入所退票數 gets(l);if(n<0)//判斷票數是否有效 { WRONG(); break;} s[i].count=s[i].count+n;do { system(“cls”);//借鑒而來的清屏語句,好用! printf(“nn-->退票成功<--”);printf(“nn-->繼續 y,返回主菜單 n <--”); a=getchar(); gets(l); if(a!='y'&&a!='n') WRONG(); }while(a!='y'&&a!='n');}while(a!='n');//判斷并跳出循環 } ///////////////////////////////////////////////////////////////////////////////////////糾錯模塊 void WRONG(){ system(“cls”);//借鑒而來的清屏語句,好用! printf(“nn--->!!輸入錯誤,請按任意鍵返回!!<---”);gets(l);} 針對我們這學期學的c++,假期進行了五天的實習。第一天聽老師講實習內容和提示的時候覺得思路挺明確的一個程序,哪有傳說中的那么難。下午和同學討論的時候覺得很有目的,只要按部就班的完成各步操作就可以了,有難度的也只是第二步。這一步要進行判斷,這就需要多個輸出函數;還要冒泡法給工作排序,工資的計算不是在類中完成的——挺棘手的一個問題。 第二天上機的時候也很快完成了第一步,覺得還行,慢慢來五天完全可以完成。后來也就沒怎么好好思考,沒想到第二天遇到麻煩了,編不出第二步了。第三天下午也沒調試好,第一步輸入的數據在第二步統計的時候怎么也數不出來,我從頭至尾研究了多次,沒發現一點問題,請舍友幫我檢查也說沒錯,到了傍晚還是看不出來。哎!又找一個人給我看了看,竟然錯得那么幼稚,類外定義了全局對象,在數據輸入put()函數里又重新定義了對象,這樣在put()輸入的數據無法用到其他函數中,自然統計的時候都是默認值了。 就這么一個小小的錯誤整得我一天一晚上寢食難安。 編程序時深深感受到要不得半點馬虎,有時少一個“}”或“<”都會導致程序語法錯誤;由于編程序經常要變換輸入法,很容易輸進中文字符,這也會導致語法錯誤;調用類里重名函數時要注明屬于哪個類的。 第三天的時候第二步基本都編出來了,傍晚那時我沒檢查出錯誤來的時候,實在是把我急壞了,借了臺電腦,在那安靜專心的研究程序,舍友幫我檢查出錯誤來之后,編程序有了感覺,那時已經22:00多了,竟然沒有一絲睡意。 后來舍友們陸續睡覺了,可我就是不愿睡??赡苁浅鲇谧宰鹦男枰?,別人都編出來了,自己編不出來,讓我無法接受;也可能是第二步出來了急于盡快搞定。從19:00到凌晨4:00一直在那兒編程序了,一次次地聽到鈴聲響竟然沒有上床睡覺的沖動,滿腦袋只有一個想法:認真編程序,爭取晚上搞定。后來差不多了,只有備份不怎么完善,當時電腦已經用了好長時間了,實在不忍心一直用人家的電腦,只好關機睡覺了。 這幾天可以說是兩耳不聞窗外事,一心只顧編程序了,電話都懶得打,只想盡快把程序搞定,晚上沒有電腦用,我們三個女生就去網吧,只是那兒沒有vusual-c++,只好作罷。 雖然我們一直在編程序,覺得挺累的,其實還有比我們更累的——我們的老師。我們是每天只有半天的實習時間,可是老師卻整天在機房里,看得出來,老師連坐下休息的時間都沒有,剛要喝點水,立馬就被一個同學叫去了,實習完那天下午看見老師都不想走路了。太累了,一天站7小時,還一直給別人檢查程序,太忙了。想想老師這么認真,我們還有什么理由不認真呢? 只有五天的實習,卻讓我受益匪淺:這不僅是一次對我們的c++掌握和運用的熟練程度的檢查,更是一次磨練我們耐性、培養認真態度的機會。這次實習讓我深刻體會到“細節決定成敗,態度決定一切”;更讓我從老師身上學到了很多在以后工作中需要的優秀品質。相信這會在我今后的學習和以后的工作很有幫助。 通過完成本次面向對象程序設計的任務,使我熟練和掌握了上學期所學的有關visual c++中的一些主要知識點和應用點,如類的定義,類的實現,對象的定義,類的繼承等等??梢运鶎W有所學,所有所用,不至于自己所學知識由于沒有經歷可用過程,而放棄對它的興趣。 第一天上課時候聽老師講,第一反應是這可怎么做了。當時有些迷茫。但是事在人為,下午回去之后在宿舍苦心研究,終于在整體上有了一定的把握。我們可以先定義一個基類,再派生三個子類,然后在類外定義函數。有人數規定,我們就定義相應長度的對象數組,最后在實現程序功能時,用函數調用就行。 于是當晚很快就完成了第二天的預習報告,上機調試時也沒什么大問題,就這樣第二天順利通過。 雖說接下來的統計沒那么容易,但就順著數據順利輸入的喜悅心情,我還是較好的完成了這個任務。在類外定義一個函數用來輸出雇員的基本情況,表頭,表尾直接在統計函數中輸出,也就是在統計函數中調用函數。打印與統計有異曲同工之妙,所以在統計做出之后,打印自然而然的也就很快完成了。 接下來的數據備份中,遇到了一個小問題,一開始以為也是函數中調用打印函數中用的那函數。其實不然,如若那樣,又變成了打印。那我們就直接輸出,但詳細資料是受保護的,不能直接輸出,那還得調用函數。于是在每個類中的公共成員中定義了直接返回的函數,接下來順利完成了備份。調用頭文件 面向對象程序設計作為一門軟件設計的課程,具有極強的實踐性,使我加強了靈活應用理論知識的能力及面向對象程序設計技能。 此次,應用程序的設計和創建,經歷了平時在課堂中和考試中,決不會有的重重難題和問題。而這些問題,又都是課本上很少提到的、更深一層的知識領域和應用領域。這些問題,并不是我們平時只靠課本,就可以輕易解決的。所以,鍛煉了我們面對難題,自己思索,自己探索,自己查資料發現問題、解決問題的獨斷能力。 當然,此次任務的完成,也體現出同學之間的團結精神。所遇種種難以解決的問題,大家都會把它當作共同遇到的問題,在一起共同探討,共同發揮自己所學和所知,投入式的互相幫助和解決困難。第二篇:C++程序筆記
第三篇:c++程序實習報告
第四篇:火車訂票系統c++程序
第五篇:c++程序畢業實習報告