![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
江蘇二級(jí)VC2008春上機(jī)2 |
2008年(春)上機(jī)試卷(02) (本試卷上機(jī)時(shí)間為70分鐘) 一、改錯(cuò)題(20分) 【題目】 以下程序的功能是:統(tǒng)計(jì)和輸出企業(yè)產(chǎn)品銷售記錄。設(shè)每個(gè)產(chǎn)品銷售記錄由產(chǎn)品代碼 dm(4個(gè)字符)、產(chǎn)品名稱mc(2個(gè)字符)、單價(jià)dj、數(shù)量sl、金額je四部分組成。其中,金額= 單價(jià)*數(shù)量。以下程序中函數(shù)sort()的功能是按產(chǎn)品代碼從大到小對(duì)產(chǎn)品銷售記錄進(jìn)行排序;若產(chǎn)品代碼相同,則按金額從大到小進(jìn)行排序,最后調(diào)用函數(shù)print()輸出結(jié)果。 含錯(cuò)誤的源程序如下: #include <iostream.h> #include <string.h> struct PROD{ char dm [5],name[3]; int sl,dj,je; }; void computerje(PROD p1[],int n) //計(jì)算產(chǎn)品金額 { for(int i=0;i<n;i++) (p1+i).je=(p1+i).dj *(p1+i).sl; } void sort(PROD p1[],int n) { for(int i=0;i<n;i++){ for(int j=i+1;j<n;j++){ if(strcmp(p1[i].dm,p1[j].dm)<0){ t=p1[i]; p1[i]=p1[j]; p1[j]=t; } else if(strcmp(p1[i].dm,p1[j].dm)=0) if(p1[i].je<p1[j].je){ PROD t=p1[i]; p1[i]=p1[j]; p1[j]=t; }}} } void print(PROD *p1,int n) { for(int i=0;i<n;i+}){ cout<<p1[i].dm<<','<<p1[i].name<<','; cout<<p1[i].s1<<','<<pl[i].dj<<','<<p1[i].je<<endl; } } void main() {PROD pr[4]={{"1001","AA",4,15},{"4000","BB",3,45},{"4000", "CC",6,53},{"8546","DD",1,43}}; computerje(pr,4); sort(pr,4); print(pr,4); } 【要求】 1.把上述程序錄人到文件myfa.epp中,根據(jù)題目要求及程序中語(yǔ)句之間的邏輯關(guān)系 對(duì)程序中的錯(cuò)誤進(jìn)行修改。程序中的注解可以不輸入。 2.改錯(cuò)時(shí),可以修改語(yǔ)句中的一部分內(nèi)容,增加少量的變量說(shuō)明、函數(shù)原型說(shuō)明或 編譯預(yù)處理命令,但不能增加其他語(yǔ)句,也不能刪去整條語(yǔ)句。 3.改正后的源程序文件myfa.epp必須放在T:盤的根目錄下,供閱卷用。 二、編程題(20分) 【題目】 試定義一個(gè)類NUM,實(shí)現(xiàn)將一維數(shù)組中各整數(shù)元素去掉其中相同數(shù)字后再對(duì)數(shù)組從小 到大排序。將一個(gè)整數(shù)去掉相同數(shù)字是指:如果一個(gè)整數(shù)中有相同的數(shù)字,則保留從左數(shù)起 ,第一次看到的那個(gè)數(shù)字,而將其他相同的數(shù)字去掉。例如:數(shù)字12324151中有三個(gè)1、兩個(gè)2,則去掉相同的數(shù)字后變?yōu)?/SPAN>12345。具體要求如下: (1)私有數(shù)據(jù)成員。 •int a [5]:存放需處理的數(shù)組。 (2)公有成員函數(shù)。 •NUM(int t[],int n):構(gòu)造函數(shù),用t初始化a,n為t的元素個(gè)數(shù)。 •void sort(int t[],int n):將數(shù)組t的元素從小到大排序。 •int convert(int n):去除n中相同的數(shù)字并返回新得到的數(shù)。 •void fun():將數(shù)組a的各元素去除相同的數(shù)字后從小到大排列。要求調(diào)用函數(shù) convert()和sort()。 •void print():輸出數(shù)組a的所有元素。 (3)在主函數(shù)中對(duì)該類進(jìn)行測(cè)試。 輸入/輸出示例(下劃線部分為鍵盤輸入): 輸入5個(gè)整數(shù):1213 65666 22313 12314 34435 處理前的數(shù)組為:1213 65666 22313 12314 34435 處理后的數(shù)組為:65 123 231 345 1234 【要求】 ’ 源程序文件名必須為myth.cpp,并放在T:盤的根目錄下,供閱卷用。 |