C++復習題面向過程部分參考_第1頁
C++復習題面向過程部分參考_第2頁
C++復習題面向過程部分參考_第3頁
C++復習題面向過程部分參考_第4頁
C++復習題面向過程部分參考_第5頁
已閱讀5頁,還剩7頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、文檔供參考,可復制、編制,期待您的好評與關注! 一、單項選擇題 1. 函數調用不可以( D )。 A. 出現在一個表達式中 B. 出現在執行語句中 C. 作為一個函數的實參 D. 作為一個函數的形參 2. 以下正確的描述是( B )。 A. 函數的定義可以嵌套,函數的調用不可以嵌套 B. 函數的定義不可以嵌套,函數的調用可以嵌套 C. 函數的定義和函數的調用均可以嵌套 D. 函數的定義和函數的調用均不可以嵌套 3. 若用數組名作為函數調用的實參,傳遞給形參的是( A )。 A. 數組的首地址 B. 數組中第一個元素的值 C. 數組全部元素的值 D. 數組元素的個數 4. 以下錯誤的描述是( D

2、 )。 A. 被調用函數中可以不用return語句 B. 被調用函數中可以用多個return語句 C. 被調用函數中,如果有返回值,就一定要有return語句 D. 被調用函數中,一個return語句可返回多個值給調用函數 5. 以下正確的描述是( C )。 A. 不允許設置參數的默認值 B. 設置參數的默認值只能在定義函數時設置 C. 設置參數的默認值時,應該設置右邊的參數 D. 設置參數的默認值時,應該全部參數都設置 6. 采用重載函數的目的是( D )。 A. 實現共享 B. 減少空間 C. 提高速度 D. 使用方便,提高可讀性 7. 將兩個字符串連接起來組成一個字符串時,選用( C )

3、函數。 A. strlen() B. strcap() C. strcat() D. strcmp() 8. 以下敘述中正確的是( B )。 A. 使用#define可以為常量定義一個名字,該名字在程序中可以再賦另外的值 B. 使用const定義的常量名有類型之分,其值在程序運行時是不可改變的 C. 在程序中使用內聯函數使程序的可讀性變差 D. 在定義函數時可以在形參表的任何位置給出缺省形參值 9. 下面的標識符中,( C )是文件級作用域。 A. 函數形參 B.語句標號 C.外部靜態類標識符 D.自動類標識符19. 設array為一個數組,則表達式sizeof(array)/sizeof(a

4、rray0)的結果為( B )。 A. array數組首地址 B. array數組中元素個數 C. array數組中每個元素所占的字節數 D. array數組占的總字節數 10. 用new運算符創建一個含10個元素的一維整型數組的正確語句是( C )。 A. int *p=new a10; B. int *p=new float10; C. int *p=new int10; D. int *p=new int10=1,2,3,4,5 11. 下列給字符數組賦初值時,正確的是( A )。 A. char s1=”abcdef”; B. char s24=”abcd”; C. char s323

5、=“abc”,”xyz”; D. char s44=a,x,s,t; 12. 設有定義“static int data56;”,設該數組在靜態存儲區中的起始地址為十進制的100,若每個int型數占4個字節,則數組元素data23的地址為( D )。 A. 115 B.124 C.130 D.160 13. 假定變量m定義為“int m=7;”,則定義變量p的正確語句為( B )。 A. int p=&m; B. int *p=&m; C. int &p=*m; D. int *p=m; 14. 假定k是一個double類型的變量,則關于變量p的正確定義語句為( D )。

6、 A. double p=&k; B. int *p=&k; C. double &p=*k; D. char *p=”Thank you!”; 15. 變量s的定義為“char *s=”Hello world!”;”,要使變量p指向s所指向的同一個字符串,則應選取( A )。 A. char *p=s; B. char *p=&s; C. char *p;p=*s; D. char *p; p=&s; 16. 關于void 指針,下列說法正確的是( C )。 A. void 指針就是未指向任何數據的指針 B. void 指針就是已定義而未初始化的指針

7、C. 指向任何類型數據的指針可直接賦值給一個void 指針 D. void 指針值可直接賦給一個非void 指針 17. 假定一條定義語句為“int a10, x, *pa=a;”,若要把數組a中下標為3的元素值賦給x,則不正確的語句為( D )。 A. x=pa3; B. x=*(a+3); C. x=a3; D. x=*pa+3; 18. 假定有定義“int b10; int *pb;”,則不正確的賦值語句為(D )。 A. pb=b; B. pb=&b0; C. *pb=new int; D. pb=b5; 19. 假定p是具有double類型的指針變量,則表達式+p使p的值(以

8、字節為單位)增加( C )。 A. 1 B. 4 C. sizeof(double) D. sizeof(p) 20. 假定p指向的字符串為”string”,則cout<<p+3的輸出結果為( C )。 A. string B. ring C. ing D. i 21. 假定p指向的字符串為”string”,若要輸出這個字符串的地址值,則使用( D )。 A. cout<<*p; B. cout<<p; C. cout<<&p; D. cout<<(void *)p; 22. 定義p并使p指向動態空間中的包含30個整數的數組所

9、使用的定義語句為( A )。 A. int *p=new int30; B. int *p=new int(30); C. int *p=new 30; D. *p=new int30; 23. 假定p是具有int*類型的指針變量,則給p賦值的正確語句為( B )。 A. p=new int; B. p=new int*; C. p=new int*; D. p=new int10; 24. 要使語句“p=new int1020;”能夠正常執行,p應被事先定義為( D )。 A. int *p; B. int *p; C. int *p20; D. int(*p)20; 25. 假定有“str

10、uct BOOKchar title40; float price; BOOK *book=new BOOK;”,則正確的語句為( A )。 A. strcpy(book->title,”Wang Tao”); B. strcpy(book.title,”Wang Tao”); C. strcpy(*book.title,”Wang Tao”); D. strcpy(*book)->title,”Wang Tao”); 26. 假定有“struct BOOKchar title40; float price; BOOK *book;”,則不正確的語句為( A )。 A. BOOK

11、*x=new book; B. BOOK x="C+ Programming",27.0; C. BOOK *x=new BOOK; D. BOOK *x=book; 27. 假定有“struct BOOKchar title40; float price;book;”,則正確的語句為( B )。 A. BOOK &x= &book; B. BOOK &x=book; C. BOOK &x=new BOOK; D. BOOK &x=BOOK; 28. 下列對引用的陳述中不正確的是( C )。 A. 每一個引用都是其所引用變量的別名,因

12、此必須初始化 B. 形式上針對引用的操作實際上作用于它所引用的變量 C. 一旦定義了引用,一切針對其所引用變量的操作只能通過該引用間接進行 D. 不需要單獨為引用分配存儲空間 29. 假定變量a和pa定義為“double a10, *pa=a;”,要將12.35賦值給a中的下標為5的元素,不正確的語句是( D )。 A. pa5=12.35; B. a5=12.35; C. *(pa+5)=12.35; D. *(a0+5)=12.35; 30. 假定變量b和pb定義為“int b10, *pb=b;”,要將24賦值給b1元素中,不正確的語句是( C )。 A. *(pb+1)=24; B.

13、*(b+1)=24; C. *+b=24; D. *+pb=24; 31. 假定指針變量p定義為“int *p=new int(100);”,要釋放p所指向的動態內存,應使用語句( A )。 A. delete p; B. delete *p; C. delete &p; D. delete p; 32. 假定指針變量p定義為“int *p=new int30;”,要釋放p所指向的動態內存,應使用語句( D )。 A. delete p; B. delete *p; C. delete &p; D. delete p; 33. 假定變量x定義為“int x=5;”,要使rx成為

14、x的引用(別名),rx應定義為( D )。 A. int rx=x; B. int rx=&x; C. int *rx=&x; D. int &rx=x;34. 下面的這個循環的循環次數是:for(int i=0,j=10;i=j=10;i+,j-). (A)A無限次 B. 語法錯誤,不能執行 C. 10 D.135.下列do-while循環的循環次數是: (B)for(int i=0,x=0;!x&&i<=5;i+)A.5 B.6 C.1 D無限次36.C+程序的執行總是從哪里開始的?(A) A.main函數 B.第一行 C.頭文件 D.函數注釋

15、二、填空題 1. 含隨機函數的表達式rand()%20的值在_0_至_19_區間內。2. 在程序中執行到_return_語句時,將結束所在函數的執行過程,返回到調用該函數的位置。3在程序執行完_main_函數后,將結束整個程序的執行過程,返回到操作系統下的C+集成開發窗口。4. 當在程序中執行到_continue_語句時,將結束所在循環語句中循環體的一次執行。12. 元素類型為int的數組a10共占用_40_字節的存儲空間。 5. 假設double類型的數據占4字節,元素類型為double的二維數組a46共占用_192_字節的存儲空間。 6. 假設char類型的數據占1字節,元素類型為char

16、的二維數組a1030共占用_300_字節的存儲空間。 7. 存儲字符a和字符串”a”分別需要占用_1_和_2_個字節。 8. 空串的長度為_0_,存儲它需要占用_1_個字節。 9. 字符串”axy=4n”的長度為_8_。 10. 字符串”a:xxk數據”的長度為_11_。 11. 用于存儲一個長度為n的字符串的字符數組的長度至少為_n+1_。 12. 若a是一個字符數組,則從鍵盤上向該數組輸入一個字符串的表達式為_cin>>a_。 13. 若a是一個字符數組,則向屏幕輸出a中所存字符串的表達式為_cout<<a_。 14. 一個二維字符數組a1020能夠存儲_10_個字

17、符串,每個字符串的長度至多為_19_。 15. 對一個二維字符數組a進行初始化的數據為”123”,”456”,”789”,則a1元素對應的字符串為_”456”_。 16. strlen(”apple”)的值為_5_,strcmp(”a”,”A”)的值為_1_。 17. 若需要把一個字符串”aaa”賦值到字符數組a中,則需要執行_strcpy_函數的調用來實現。 18. 假定對二維數組a34進行初始化的數據為3,5,6,2,8,7,則a11和a23分別被初始化為_8_和_0_。 19. 在C+語言中,一個函數由函數頭和_函數體_組成。 20. 重載一個函數的條件是:該函數必須在參數的個數或參數的

18、_類型_上與其它同名函數有所不同。 22. 如果一個函數直接或間接地調用自身,這樣的調用稱為_遞歸_調用。23假定p所指變量對象的值為25,p+1所指對象的值為42,則*+p的值為_42_。 24. 假定p所指變量的值為25,p+1所指變量的值為42,則執行(*p)+運算后,p所指對象的值為_26_。 25假定p所指變量的值為25,p+1所指變量的值為42,則執行*p+運算后,p所指變量的值為_42_。 26. 假定對數組a進行初始化的數據為2,7,9,6,5,7,10,則a2和a5分別被初始化為_9_和_7_。 27. 假定一個變量為int*類型,則指向該變量的指針類型為_int *_。 2

19、8. 假定p是一個指向整數變量的指針,則用_*p_表示該整數變量,用_&p_表示指針變量p的地址。三、程序填充題,對程序、函數或類中劃有橫線的位置,根據題意按標號把合適的內容填寫到程序下面相應標號的后面。 1. 采用指針訪問方式從鍵盤給數組aN輸入數據,然后對元素值重新按逆序存放并輸出。 #include <iostream.h> const int N=8; void main() int aN,*p,*q; for(p=a; p<a+N; p+) _(1)_; p=a;q=a+N-1; while(p<q) int r=*p; *p=*q; *q=r; _(

20、2)_; _(3)_; for(p=a;p<a+N; p+) cout<<*p<<' ' cout<<endl; (1) cin>>*p (2) p+ (或+p) (3) q- (或-q) 2. 從鍵盤上輸入一個正整數,然后把它轉換成的二進制數的每一位存放到一維數組中,最后輸出該二進制數。注意二進制數的存放是按照從低位到高位的次序進行的。 #include <iostream.h> void main() int x; cout<<"輸入一個整數:" cin>>x; i

21、nt a20,k=0,r; do r=x%2; ak+=r; x=_(1)_; while(_(2)_); for(-k;k>=0;k-) _(3)_; cout<<endl; (1) x/2 (2) x!=0 (3) cout<<ak 3. 對數組an按升序進行的選擇排序算法 void SelectSort(int a, _(1)_) int i,j,k; for(i=1;i<n;i+) /進行n-1次選擇和交換 k=i-1; for(j=i;j<n;j+) if(aj<ak) _(2)_; int x=ai-1; ai-1=ak; _(3)_

22、; (1) int n (2) k=j (3) ak=x 4. 對數組an按升序進行的插入排序算法 void InsertSort(_(1)_, int n) int i,j,x; for(i=1;i<n;i+) /進行n-1次循環 x=ai; for(j=i-1;j>=0;j-) /為x順序向前尋找合適的插入位置 if(x<aj) _(2)_; else _(3)_; aj+1=x; (1) int a (或int* a) (2) aj+1=aj (3) break 5. 對按從小到大排列的有序數組an進行二分查找x的算法,若查找成功返回該元素下標,否則返回-1。 int

23、BinarySearch(int a,int x) int low=0, high=N-1; /定義并初始化區間下界和上界變量 int mid; /定義保存中點元素下標的變量 while(low<=high) mid=_(1)_; if(x=amid) _(2)_; else if(x<amid) high=mid-1; else _(3)_; return -1; (1) (low+high)/2 (2) return mid (3) low=mid+1 6. 用插入排序方法對table指針數組中size個指針所指向的字符串進行按升序排序的算法。void sort(char *t

24、able, int size) for(int i=1,_(1)_; i+) char *p=tablei; for(int j=i-1; j>=0 ; j-) if(strcmp(p,tablej)<0) _(2)_; else break; tablej+1=_(3)_; (1) cin>>*p (2) p+ (或+p) (3) q- (或-q)7  輸入某一年的年份和月份,計算該月的天數 #include <iostream.h>void main() int year,month,day; cout<<"Input y

25、ear and month:" cin>>year>>month; switch (_1_) case 1: case 3: case 5: case 7: case 8: case 10: case 12: _2_;break; case 4: case 6: case 9: case 11: _3_;break; case 2:if (_4_ _) day=29; else day=28; break; _5_:cout<<"Input data error!"<<endl;day=0;break; if (da

26、y!=0) cout<<"The day of "<<year<<','<<month<<" is "<<day<<endl;四、指出程序或函數的功能 1. void f2(double a, int n) int i; double sum=0; for(i=0;i<n;i+) sum+=ai; sum/=n; for(i=0;i<n;i+) if(ai>=sum) cout<<ai<< ; cout<&l

27、t;endl; 功能: 顯示輸出數組an中大于等于平均值的所有元素值。 2. void f4(char aMN) int c1,c2,c3; c1=c2=c3=0; for(int i=0;i<M;i+) if(strlen(ai)<5) c1+; else if(strlen(ai)>=5 && strlen(ai)<15) c2+; else c3+; cout<<c1<< <<c2<< <<c3<<endl; 功能:對于二維字符數組a中保存的M個字符串,分別統計并輸出其長度小于

28、5、大于等于5且小于15、大于等于15的字符串個數。 3. void fun3(int aN, int m, int n, int& row, int& col) int x=a00; row=col=0; for(int i=0;i<m;i+) for(int j=0;j<n;j+) if(aij>x) x=aij; row=i; col=j; 功能:從一個二維整型數組中查找具有最大值的元素,由引用參數row和col帶回該元素的行號和列號。5. char* f8(char* str1, const char* str2) int i=0,j=0; while

29、(str1i) i+; while(str2j) str1i+=str2j+ ; str1i='0' return str1; 功能:實現strcat函數的功能,把str2所指字符串連接到str1所指字符串的后面,并返回str1指針。 6. int f8(const char* str1, const char* str2) int i=0; while(str1i && str2i) if(str1i=str2i) i+; else if(str1i>str2i) return 1; else return -1; if(str1i=str2i) ret

30、urn 0; else if(str1i>str2i) return 1; else return -1; 功能:實現strcmp函數的功能,比較兩個字符串str1和str2的大小,若str1較大則返回1,若str2較大則返回-1,若兩者相等則返回0。7.#include<iostream.h> void f(int &a,int &b) int t=a; a=b; b=t; void main(void) int x=10,y=15; f(x,y); cout<<x<<t<<y<<n;    

31、;   8#include<iostream.h> void main(void) int i=10; switch (i) case 9:i+; case 10:+i; case 11:i+; default:i=i+1; cout<<i<<endl;   五、寫出程序運行結果1. #include<iostream.h> void main() char a="abcdabcabfgacd" int i1=0, i2=0, i=0; while(ai) if(ai=a) i1+; if(ai=b) i2

32、+; i+; cout<<i1<< <<i2<< <<i<<endl; 結果:4 3 14 2. #include<iostream.h> void main() int a8=36,25,48,14,55,40,50,24; int b1, b2; b1=b2=a0; for(int i=1;i<8;i+) if(ai>b1) b2=b1; b1=ai; else if(ai>b2) b2=ai; cout<<b1<<' '<<b2<

33、<endl; 結果:55 50 3. #include<iostream.h> void f4(int a, int n, int& s) s=0; for(int i=0; i<n; i+) s+=ai; void main() int b8=4,8,6,9,2,10,7,12; int x; f4(b,5,x); cout<<x<<' ' int y; f4(b+3,4,y); cout<<y<<' ' cout<<x+y<<endl; 結果:29 28

34、574. #include<iostream.h> void f2(int& x, int& y) int z=x; x=y; y=z; void f3(int* x, int* y) int z=*x; *x=*y; *y=z; void main() int x=10,y=26; cout<<"x,y="<<x<<", "<<y<<endl; f2(x,y); cout<<"x,y="<<x<<", "<<y<<endl; f3(&x,&y); cout<<&q

溫馨提示

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

評論

0/150

提交評論