![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
2012春江蘇計(jì)算機(jī)二級VC++上機(jī)真題 |
二級 Visual C++上機(jī)試卷 (本試卷完成時(shí)間為70分鐘) 一、改錯(cuò)題(20分) 【題目】 以下程序中,函數(shù)fun(int m, int fac[], int &p)的功能是:計(jì)算參數(shù)m(m>2)的所有因子,將這些因子按從小到大的順序依次存放在數(shù)組fac中,將因子個(gè)數(shù)存放在參數(shù)p中,并返回所有因子之和。 正確程序的輸入/輸出結(jié)果如下(下劃線部分為鍵盤輸入): 輸入一個(gè)整數(shù):24 24的所有因子之和為:60 24的各因子為:1 2 3 4 6 8 12 24 含有錯(cuò)誤的源程序如下: 1 #include<iostream.h> 2 #include<math.h> 3 int fun(int,int[],int); 4 void main(void) 5 { 6 int n,f[100],p; 7 cout<<"輸入一個(gè)整數(shù):"; 8 cin>>n; 9 cout<<n<<"的所有因子之和為:"<<fun(n,f,p)<<endl; 10 cout<<n<<"的各因子為:"; 11 for(int i=0;i<p;i++) 12 cout<<f[i]<<' '; 13 cout<<endl; 14 } 15 int fun(int m,int fac[],int &p) 16 { 17 int i,s; 18 fac[0]=p=1; 19 for(s=1,i=2;i<=sqrt(m);i++){ 20 if(m%i=0){ 21 fac[p++]=i; 22 s+=i; 23 } 24 } 25 fac[p]=m; 26 s+=m; 27 return fac; 28 }
【要求】 1.打開T盤中myfa.txt文件,將其文本拷貝到文件myfa.cpp中(或?qū)⑸鲜龀绦蜾浫氲轿?/SPAN> 件myfa.cpp中),根據(jù)題目要求及程序中語句之間的邏輯關(guān)系對程序中的錯(cuò)誤進(jìn)行修改。程 序中的注解可以不輸入。 2.改錯(cuò)時(shí),可以修改語句中的一部分內(nèi)容,增加少量的變量說明、函數(shù)原型說明或編譯預(yù) 處理命令,但不能增加其他語句,也不能刪除整條語句。 3.將改正后的源程序文件myfa.cpp必須放在T盤根目錄下,供閱卷用。 二、編程題(20分) 【題目】 試定義一個(gè)類STR,實(shí)現(xiàn)兩個(gè)字符串的交集。具體要求如下: (1)私有數(shù)據(jù)成員。 char s1[50],s2[50],s0[50]:字符串s0用于存放字符串s1和字符串s2的交集。 (2)公有成員函數(shù)。 •STR(char *p1,char *p2):構(gòu)造函數(shù),分別用參數(shù)p1和p2初始化成員數(shù)組s1和s2 •int isin(char *p,char c):判斷字符c是否出現(xiàn)在字符串p中,如果是,則返回值為1, 否則返回值為0 •void fun():求成員數(shù)組s1和s2的交集,并將結(jié)果存放在成員數(shù)組s0中。提示:利用 函數(shù)isin(char *,char)依次判斷一個(gè)字符串中的每個(gè)字符是否包含于另一個(gè)字符串中,如果 包含,且該字符不包含于成員數(shù)組s0中,則將該字符加入到成員數(shù)組s0中。 •void print():按輸出示例的格式輸出所有數(shù)據(jù)成員。 (3)在主函數(shù)中對該類進(jìn)行測試。 。 輸出示例: 字符串1:abcdef123abc12 字符串2:acef123ace124 兩個(gè)字符串的交集:acef123 【要求】 源程序文件名必須為myfb.cpp,并放在T盤根目錄下,供閱卷用。 參考答案 一、改錯(cuò)題 第3行 int fun(int,int[],int); 改為int & 第19行 for(s=1,i=2;i<=sqrt(m);i++){ 改為i<=m/2或i<m 第20行 if(m%i=0){ 改為m%i==0 第27行 return fac; 改為return s 二、編程題 #include<iostream.h> #include<string.h> class STR{ char s1[50],s2[50],s0[50]; public: STR(char *p1.char *p2) { strcpy(s1,p1); strcpy(s2,p2); s0[0]='\0'; } int isin(char *p,char c) {char *p0=p; while(*p0) if(*p0++==c) return 1; return 0; } void fun() { for(char *p1=s1,*p0=s0;*p1;p1++) { if(isin(s2,*p1)&&(!isin(s0,*p1))) { *p0++=*p1; } *p0='\0'; } } void print() { cout<<"字符串1:"<<sl<<endl; cout<<"字符串2:"<<s2<<endl; cout<<"兩個(gè)字符串的交集:"<<s0<<endl; } }; void main() { char str1[]="abcdef123abc12",str2[]="acef123ace124"; STR test(str1,str2); test.fun();test.print(); } |