![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
2013春江蘇省計(jì)算機(jī)二級(jí)C++上機(jī)真題第2套 |
2013春江蘇省二級(jí)C++上機(jī)(2) 一、改錯(cuò)題 【題目】 以下程序中,函數(shù)fun(int b[], int n)的功能是:重新排列數(shù)組b的前n個(gè)元素,排列的規(guī)則是:將數(shù)組b中的最小元素放到b[0]中,最大元素放到b[1],將次小元素放到b[2]中,次大元素放到b[2]中……依次類推 正確程序的輸出結(jié)果如下: 原數(shù)組: 5 1 3 2 9 7 6 8 4 處理后的數(shù)組 : 1 9 2 8 3 7 4 6 5 #include <iostream.h> #define N 9; void fun(int b[], int n) { int max,min,*pmax,*pmin; for(int *p1=b;p1<b+n-1;p1++){ max=min=*p1; pmax=pmin=p1; for(int *p2=p1+1;p2<b+n;p2++){ if(max<*p2){ max=*p2;pmax=p2; } if(min>*p2){ min=*p2; pmin=p2; } } if(pmin!=p1){ int t=*p1; *p1=min;*pmin=t; if(pmax==p1) pmax=&t; } if(pmax!=(p1+1)){ int t=*(p1+1); *(p1+1)=max; *pmax=t; } } } void main() { int a[N]={5,1,3,2,9,7,6,8,4}; cout<<"原數(shù)組:"<<endl; for(int i=0;i<N;i++) cout<<a[i]<<'\t'; cout<<endl; fun(a,N); cout<<"處理后的數(shù)組:"<<endl; for(int *p1=a;p1<a+N;p1++) cout<<p1<<'\t'; cout<<endl; } 【要求】 1.打開T盤中myfa.txt文件,將其文本拷貝到文件myfa.cpp中(或?qū)⑸鲜龀绦蜾浫氲轿?/SPAN> 件myfa.cpp中),根據(jù)題目要求及程序中語句之間的邏輯關(guān)系對(duì)程序中的錯(cuò)誤進(jìn)行修改。程 序中的注解可以不輸入。 2.改錯(cuò)時(shí),可以修改語句中的一部分內(nèi)容,增加少量的變量說明、函數(shù)原型說明或編譯預(yù) 處理命令,但不能增加其他語句,也不能刪除整條語句。 3.將改正后的源程序文件myfa.cpp必須放在T盤根目錄下,供閱卷用。 二、編程題(20分) 【題目】 試定義一個(gè)類Num,將字符串形式表示的十六進(jìn)制整數(shù)轉(zhuǎn)換為對(duì)應(yīng)的十進(jìn)制整數(shù),所采用的算法如下:設(shè)四位十六進(jìn)制數(shù)為,其所對(duì)應(yīng)的十進(jìn)制數(shù)n= (1)私有數(shù)據(jù)成員: char s[10]: 存放十六進(jìn)制整數(shù),為簡單期間,這里省略十六進(jìn)制數(shù)的前綴”0X”或”0x” int n: 存放由數(shù)據(jù)成員s所表示的十六進(jìn)制數(shù)轉(zhuǎn)換所得的十進(jìn)制數(shù) (2)公有成員函數(shù) Num(char *p) :構(gòu)造函數(shù),用參數(shù)p初始化數(shù)據(jù)成員 void fun():按題意要求將數(shù)據(jù)成員s所表示的十六進(jìn)制整數(shù)轉(zhuǎn)換為相應(yīng)的十進(jìn)制整數(shù),并將結(jié)果存放到數(shù)據(jù)成員n中 void print() : 輸出數(shù)據(jù)成員s和n (3)在主函數(shù)中對(duì)該類進(jìn)行測試 輸入/輸出示例 輸入一個(gè)十六進(jìn)制數(shù): bc12d 十六進(jìn)制:bc12d 對(duì)應(yīng)的十進(jìn)制數(shù)為:770349 【要求】 源程序文件名必須為myfb.cpp,并放在T盤根目錄下,供閱卷用 |