




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第1章C++?的初步知識1.請根據(jù)你的了解,敘述C++C++【解】略。2.一個C++的程序是由哪幾部分構成的?其中的每一部分起什么作用?【解】略。3.從拿到一個任務到得到最終結果,一般要經(jīng)過幾個步驟?【解】略。4.請說明編輯編譯連接的作用。在編譯后得到的目標文件為什么不能直接運行?【解】編譯是以源程序文件為單位進行的,而一個完整的程序可能包含若干個程序文件,在分別對它們編譯之后,得到若干個目標文件(后綴一般為.obj),然后要將它們連接為一個整體。此外,還需要與編譯系統(tǒng)提供的標準庫相連接,才能生成一個可執(zhí)行文件(后綴為.exe)。不能直接運行后綴為.obj的目標文件,只能運行后綴為.exe的可執(zhí)行文件。5.分析下面程序運行的結果。#includeusingnamespacestd;intmain({cout<<"This"<<"is";cout<<"a"<<"C++";cout<<"program."<<endl;return0;}【解】輸出的結果為ThisisaC++program.6.分析下面程序運行的結果。#includeusingnamespacestd;intmain({inta,b,c;=10;=23;=a+b;cout<<"a+b=";cout<cout<return0;}【解】前兩個cout語句在輸出數(shù)據(jù)后不換行,第3個cout語句輸出一個換行,因此輸出的結果為a+b=337.分析下面程序運行的結果。請先閱讀程序寫出程序運行時應輸出的結果,然后上機運行程序,驗證自己分析的結果是否正確。以下各題同。#includeusingnamespacestd;intmain({inta,b,c;intf(intx,inty,intz;cin>>a>>b>>c;c=f(a,b,c;cout<return0;}intf(intx,inty,intz{intm;if(xm=y;if(zreturn(m;}【解程序的作用是:輸入3個整數(shù)然后輸出其中值最小的數(shù)。在主函數(shù)中輸入個整數(shù),然后調用f函數(shù),在f函數(shù)中實現(xiàn)找最小的整數(shù)用語句比較兩個數(shù),將小者存放在變量m中經(jīng)過兩個語句的比較,m中存放的是個整數(shù)中最小的數(shù)。運行情況如下:153↙(輸入3個整數(shù)1(輸出其中最小的數(shù)8.你所用的統(tǒng)上,輸入以下程序,行編譯,察編譯情況,如果有錯誤,請修改程序,進行編譯,直到?jīng)]有錯誤,然后進行連接和運行分析運行結果。intmain(;{inta,b;c=a+b;cout>>"a+b=">>a+b;}【解】上機編譯出錯,譯出錯信息告知在第行出錯,經(jīng)檢查,發(fā)現(xiàn)第行的末尾多了一個分號,編譯系統(tǒng)無法理解第行的花括號導致報告第行出錯。將第1行的末尾的分號去掉,重新編譯,編譯出錯信息告知在第行和第行出錯第行出錯原因是未經(jīng)聲明,因為不是語提供的系統(tǒng)的關鍵字而是輸出流的對象,必須使用頭文件ostream。第行出錯原因是main是int型函數(shù),返回一個整型值。將程序改為#includeintmain({inta,b;c=a+b;cout>>"a+b=">>a+b;return0;}重新編譯。編譯出錯信息告知在第5行和第6行出錯。第5行出錯原因是變量c未定義,第6行出錯原因是cout未經(jīng)聲明,說明#include命令行未能起作用原因是未指明命名空。將程序改為#includeusingnamespacestd;intmain({inta,b,c;c=a+b;cout>>"a+b=">>a+b;return0;}重新編譯。編譯出錯信息告知在第7行出錯,經(jīng)檢查,是“>>”用得不當,“>>是提取運算符,應與cin聯(lián)合使用,用來從輸入流中提取數(shù)據(jù),輸出時應該用插入運算符“<<”。把兩處“>>”都改為<<”,再重新編譯,發(fā)現(xiàn)沒有error錯誤,但有兩個警告(warning),原因是定義了a和b,但未對它們賦值。應增加賦值語句或輸入語句,使a和b獲得值,將程序改為#includeusingnamespacestd;intmain({inta,b,c;cin>>a>>b;c=a+b;cout>>"a+b=">>a+b;return0;}重新編譯,沒有編譯錯誤,能通過編譯和連接,可以正常運行,在Visual6.0環(huán)境下運行時屏幕顯示如下:59↙a+b=14Pressanykeytocontinue
C++顯然這樣的輸出不理想,“Pressanykeytocontinue是VisualC++系統(tǒng)在輸出了運行結果后自動顯示的一個信息,告訴用戶“如果想繼續(xù)工作,請按任何一個鍵”。當用戶按任何一個鍵后,顯示運行結果的窗口消失,屏幕顯示回到VisualC++的主窗口,顯示出源程序和編譯信息。為了解決以上輸出不理想的情況,可以在最后一個輸出語句中增加輸出一個換行符。最后的程序如下:#includeusingnamespacestd;intmain({inta,b,c;cin>>a>>b;c=a+b;cout<<"a+b="<return0;}運行時屏幕顯示如下:59↙a+b=14Pressanykeytocontinue這就完成了程序的調試。這里對本題的調試過程作了比較詳細的分析,以便使讀者對如何調試程序有比較具體而清晰的了解。需要說明:(1)編譯系統(tǒng)給出的編譯出錯信息,只是提示性的,引導用戶去檢查錯誤,用戶必須根據(jù)程序的上下文和編譯出錯信息,全面考慮,找出真正出錯之處。例如編譯出錯信息通知第2行出錯,其實可能是第1行出錯。有時,有的錯誤開始時未被檢查出來并告知用戶(例如未定義變量c),由于其他錯誤未解決,掩蓋了這個錯誤。當解決了其他錯誤后,這個錯誤會被檢查出來。有時在調試過程中會不斷檢查出新的錯誤,這是不奇怪的。一一處理,問題會迎刃而解。為了說明調試過程,這里全部依靠計算機系統(tǒng)來檢查錯誤,其實有些明顯的錯誤,完全可以由人工查出,這樣可以提高調試效率。由人工在紙面或屏幕上檢查錯誤,稱為靜態(tài)查錯,用計算機編譯系統(tǒng)檢查錯誤,稱為動態(tài)查錯。建議盡量先用靜態(tài)查錯的方法排除錯誤,只有人工檢查不出來的錯誤才讓計算機檢查。9.輸入以下程序,進行編譯,觀察編譯情況,如果有錯誤,請修改程序,再進行編譯,直到?jīng)]有錯誤,然后進行連接和運行,分析運行結果。#includeusingnamespacestd;intmain({inta,b;c=add(a,bcout<<"a+b="<return0;}intadd(intx,inty;{z=x+y;retrun(z;}【解】發(fā)現(xiàn)7個錯誤:對add函數(shù)未聲明就調用,應在main函數(shù)中對add函數(shù)進行聲明。定義add函數(shù)時,函數(shù)首行末尾不應有分號。變量c未經(jīng)定義。add函數(shù)中的變量z未經(jīng)定義。第6行末尾少了一個分號。add函數(shù)中的retrun拼寫錯誤,應為return。編譯系統(tǒng)把retrun作為未聲明的標識符而報錯,因為retrun(z)會被認為是函數(shù)調用的形式。(7)變量a和b未被賦值。改正后的程序如下:#includeusingnamespacestd;intmain({intadd(intx,inty;inta,b,c;cin>>a>>b;c=add(a,b;cout<<"a+b="<<creturn0;}intadd(intx,inty{intz;z=x+y;return(z;}運行情況如下:58↙1310.輸入以下程序,編譯并運行,分析運行結果。#includeusingnamespacestd;intmain({voidsort(intx,inty,intz;intx,y,z;cin>>x>>y>>z;sort(x,y,z;return0;}voidsort(intx,inty,intz{inttemp;if(x>y{temp=x;x=y;y=temp;}//{}內3個語句的作用是將x和y的值互換if(z','<<x<<',<<y<<endl;elseif(z','<<z<<','<<y<<endl;elsecout<<x<<,'<<y<<,'<<z<<endl;}請分析此程序的作用。sort函數(shù)中的if語句是一個嵌套的if語句。運行時先后輸入以下幾組數(shù)據(jù),觀察并分析運行結果。3610↙6310↙1063↙10,6,3↙【解】程序的作用是對輸入的3個整數(shù)按由小到大的順序進行排序。sort函數(shù)中的第1個if語句的作用是先將x和y排序,使x小于或等于y。第2個if語句是一個嵌套的if語句,先比較z和x,如果z,顯然由小到大的順序應當是x,z,y,按此順序輸出;如果z既不小于x,又不小于y,顯然由小到大的順序應當是x,y,z,按此順序輸出。按題目要求分別輸入以下幾組數(shù)據(jù),運行結果如下:①3610↙3,6,10②6310↙3,6,10③1063↙3,6,10④10,6,3↙-858993460,-858993460,10以上是在Visual6.0環(huán)境下運行的情況,前3次運行正常,表明當輸入不同的數(shù)據(jù)時,程序能實現(xiàn)由小到大的排序功能。第次運行的結果顯然不正常,這是由于輸入數(shù)據(jù)時出了問題,本來要求在輸入數(shù)據(jù)時,數(shù)據(jù)之間以空格或換行相隔,而現(xiàn)在卻以逗號相隔,只有第一個整數(shù)能正常賦給變量,第二和第三個數(shù)據(jù)均無法正常賦給變量和,和的來自輸入流中相應字節(jié)的內容。11.求2個或3個正整數(shù)中的最大數(shù),用帶有默認參數(shù)的函數(shù)實現(xiàn)?!窘狻靠梢跃帉懗鲆韵鲁绦颍?includeusingnamespacestd;intmain({intmax(inta,intb,intc=0;inta,b,c;cin>>a>>b>>c;cout<<"max(a,b,c=<<max(a,b,c<<endl;cout<<"max(a,b=<return0;}intmax(inta,intb,intc{if(b>aa=b;if(c>aa=c;returna;}運行情況如下:13576↙max(a,b,c=76(從3個數(shù)中找最大者)max(a,b=13(從前2個數(shù)中找最大者)如果想從個數(shù)中找大者,可以在調用時寫成“max(a,b,c”形式,如果想從個數(shù)中找大者,則在調用時寫成“max(a,b”形式,此時c自動默認值,由于比任何正整數(shù)都,因此從1,,中選最大者和從,中選大者的結果是一樣的。12.輸兩整,它按大小順輸。求用量引。【解】以編寫出以下程序:#includeusingnamespacestd;intmain({voidchange(int&,int&;inta,b;cin>>a>>b;if(a如果a使a和b的值互換cout<<"max="<min="<return0;}voidchange(int&r1,int&r2//函數(shù)的作用是使r與r2互換{inttemp;temp=r1;r1=r2;r2=temp;}運行情況如下:12↙max=67min=1213.對3個變量由小到大順序排序,要求使用變量的引用?!窘狻靠梢跃帉懗鲆韵鲁绦颍?includeusingnamespacestd;intmain({voidsort(int&,int&,int&;inta,b,c,a1,b1,c1;cout<<"Pleaseenter3integers:";cin>>a>>b>>c;a1=a;b1=b;c1=c;sort(a1,b1,c1;cout<""<""<"insortedorderis";cout<""<""<return0;}voidsort(int&i,int&j,int&k{voidchange(int&,int&;if(i>jchange(i,j;if(i>kchange(i,k;if(j>kchange(j,k;}voidchange(int&x,int&y{inttemp;temp=x;=y;=temp;}運行情況如下:Pleaseenter3integers:2367-552367–55insortedorderis–552367這個程序很容易解,不易出錯。于在調用sort數(shù)時虛實結使形參i,j,k成為實參a1,b1,c1的引用(別),因此通過調函數(shù)sort(a1,b1,c1)既現(xiàn)了對i,j,k排序,也同時實現(xiàn)了對a1,b1,c1排序。同樣,執(zhí)行change(i,j)函數(shù),可以實現(xiàn)對實參和j的互換。14.編一程序,將兩字符串連接起來,結果取第一個字符串要求用string方法【解】可以編寫出以下程序:#include#include//程序中若用字符串變量,必須包含頭文件stringusingnamespacestd;intmain({strings1="week",s2="end";cout<<"s1="<<s1<<endl;cout<<"s2="<<s2<<endl;s1=s1+s2;cout<<"Thenewstringis:"<return0;}運行情況如下:s1=weeks2=endThenewstringis:weekend15.輸入一個字符,把其中的字符逆序輸出。如輸入IGHT,輸出THGIL。求用string方法?!窘狻靠梢跃帉懗鲆韵鲁绦颍?include#includeusingnamespacestd;intmain({stringstr;//定義字符串量strinti,n;chartemp;//定義符變量tempcout<<"pleaseinputastring:";cin>>str;//輸入一個字符串賦字符串變量sn=str.size(;//測量str長度nfor(i=0;i//使str中的字符稱互換{temp=str[i];str[i]=str[n-i-1];str[n-i1]=temp;}cout<<str<<endl;return0;}運行情況如下:pleaseinputastring:LIGHTTHGIL注意:輸入的字串中不能含有空。16.有5個字符串,求將它們按由小大的順序排列,用string方法。【解】可以編寫出以下程序:#include#includeusingnamespacestd;intmain({inti;stringstr[5]={"BASIC,"C","FORTRAN","C++","PASCAL"};voidsort(string[];sort(str;//對字符排序cout<<"thesortedstrings:"<for(i=0;i<5;i++cout<"";//按已排好的順序輸出字符串cout<return0;}voidsort(strings[]{inti,j;stringt;for(j=0;j<5;j++for(i=0;i<5j;i++if(s[i]>s[i+1]{t=s[i];s[i]=s[i+1];s[i+1]=t;}}運行結果如下:thesortedstrings:BASICCC++FORTRANPASCAL17.編一個程序用同一個函數(shù)名對個數(shù)據(jù)進行從小大排序,數(shù)據(jù)類可以是整型單精度型、雙精度。用重載函數(shù)現(xiàn)。【解】可以編寫出以下兩個程序:(1)建立3個函數(shù)分別用于處理整型、單精度型、雙精度型數(shù)據(jù)排序,在3個函數(shù)都采用選擇法排序方。#include#includeusingnamespacestd;intmain({longa[5]={10100,-123567,1198783,-165654,3456};intb[5]={1,9,0,23,-45};floatc[5]={2.4,7.6,5.5,6.6,-2.3};voidsort(long[];voidsort(int[];voidsort(float[];sort(a;sort(b;sort(c;return0;}voidsort(longa[]{inti,j;longt;for(j=0;j<5;j++for(i=0;i<5-j;i++if(a[i]>a[i+1]{t=a[i];a[i]=a[i+1];a[i+1]=t;}cout<<"thesortednumbers:"<for(i=0;i<5;i++cout<"";cout<}voidsort(inta[]{inti,j,t;for(j=0;j<5;j++for(i=0;i<5-j;i++if(a[i]>a[i+1]{t=a[i];a[i]=a[i+1];a[i+1]=t;}cout<<"thesortednumbers:"<for(i=0;i<5;i++cout<"";cout<}voidsort(floata[]{inti,j;floatt;for(j=0;j<5;j++for(i=0;i<5-j;i++if(a[i]>a[i+1]{t=a[i];a[i]=a[i+1];a[i+1]=t;}cout<<"thesortednumbers:"<for(i=0;i<5;i++cout<"";cout<}運行結果如下:thesortednumbers:-123567-1656541010034561198783(長整型數(shù)據(jù)排序)thesortednumbers:(整型數(shù)據(jù)排序)-4501923thesortednumbers:-2.32.45.56.67.6(單精度型數(shù)據(jù)排序)(2)在第1種方法中,3個函數(shù)的函數(shù)體基本上是相同的,都是采用選擇法排序,在下面的程序中,3個函數(shù)的函數(shù)體不全相同,前兩個函數(shù)采用選擇法排序,最后一個函數(shù)采用起泡法排序。#include#includeusingnamespacestd;intmain({longa[5]={10100,-123567,1198783,-165654,3456};intb[5]={1,9,0,23,-45};floatc[5]={2.4,7.6,5.5,6.6,-2.3};voidsort(int[];voidsort(float[];voidsort(long[];sort(a;//對長整型數(shù)據(jù)排序sort(b;//對整型數(shù)據(jù)排序sort(c;//對單精度型數(shù)據(jù)排序return0;}voidsort(longa[]//對長整型數(shù)據(jù)用選擇法排序的函數(shù){inti,j,min;longt;for(i=0;i<5;i++{min=i;for(j=i+1;j<5;j++if(a[min]>a[j]min=j;{t=a[i];a[i]=a[min];a[min]=t;}cout<<"thesortednumbers:"<for(i=0;i<5;i++cout<"";cout<}voidsort(inta[]//對整型數(shù)據(jù)用選擇法排序的函數(shù){inti,j,t;for(j=0;j<5;j++for(i=0;i<5-j;i++if(a[i]>a[i+1]{t=a[i];a[i]=a[i+1];a[i+1]=t;}cout<<"thesortednumbers:"<for(i=0;i<5;i++cout<"";cout<}voidsort(floata[]//對單精度型數(shù)據(jù)用起泡法排序的函數(shù){inti,j;floatt;for(j=0;j<5;j++for(i=0;i<5-j;i++if(a[i]>a[i+1]{t=a[i];a[i]=a[i+1];a[i+1]=t;}cout<<"thesortednumbers:"<for(i=0;i<5;
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年湖南郵電職業(yè)技術學院單招職業(yè)傾向性測試題庫附答案
- 機器學習原理與應用課件 第12章 深度學習(基本原理+回歸)
- 第12課《與朱元思書》教學設計 2024-2025學年統(tǒng)編版語文八年級上冊
- 新型儲能的社會與環(huán)境效益
- 輸電線路遷改項目管理與監(jiān)控機制
- 2025年醫(yī)用基礎設備器具項目合作計劃書
- 商業(yè)街商業(yè)策劃書9篇
- 1《白鷺》(教學設計) 2024-2025學年-統(tǒng)編版語文五年級上冊
- 機械設計 第10章 齒輪傳動學習課件
- 2025至2030年中國彈力縐面料數(shù)據(jù)監(jiān)測研究報告
- 《服裝品牌策劃》課件
- 個人應聘簡歷電工
- 高血壓的用藥指導任務三高血壓的藥物治療講解
- 近五年陜西中考數(shù)學真題及答案2024
- 云南省大理白族自治州2024-2025學年八年級上學期1月期末考試英語試卷(無答案)
- 無人機行業(yè)市場分析指南
- 2024年貴州省貴陽市中考生物試題(含答案逐題解析)
- 廉潔應征承諾書
- 設備安裝檢驗批表格
- 6核島系統(tǒng)培訓
- 室內分布系統(tǒng)設計完整PPT課件
評論
0/150
提交評論