【正文】
const char* WhoAmI() {return Circle。} }。 int main() { vectorShape* vs。 Point p。 (amp。p)。 Square s(10)。 (amp。s)。 Circle c(10)。 (amp。c)。 for (size_t i = 0。 i ()。 ++i) { cout vs[i]WhoAmI() \t。 vs[i]CalcArea()。 cout vs[i]GetArea() endl。 } }6. 閱讀程序,寫出運行結(jié)果。 bool f(int i) {return !(i % 3)。} int main() { ofstream ofs()。 int n = 10。 while (n) ofs n \t。 ()。 int x, y = 0, z = 0。 ifstream ifs()。 while (!()) { ifs x。 if (f(x)) { ++z, y += x。 cout x \t。 } } cout y / z endl。 ()。 }四.程序設(shè)計(共30分,每題10分)1. 基本算法設(shè)計與應(yīng)用(10分)。(1)對STL算法sort的調(diào)用sort(a, a + n, cmp)可以對區(qū)間[a, a + n)(即從a開始的n個元素)按照準則cmp排序。請自定義函數(shù)模板mysort實現(xiàn)這一功能,不能直接調(diào)用sort實現(xiàn)。(2)現(xiàn)有區(qū)間[s, s + n),其元素是如下定義的類Student的對象。請應(yīng)用上述函數(shù)模板mysort對區(qū)間元素按照成績score從高到低排序。 class Student { public: string name。 //姓名 int id。 //學(xué)號 double score。 //成績 }。2. 點和球的描述及計算(10分)。(1)三維空間中的一點可以用坐標(x,y,z)。定義類Point描述點,提供構(gòu)造函數(shù),并重載減法運算符“”計算兩點之間的距離。(2)三維的球可以由圓心點center和半徑radius決定。定義類Sphere描述球,定義構(gòu)造函數(shù),并提供成員函數(shù)計算兩球的距離。(3)地球半徑設(shè)為re,月球半徑設(shè)為rm,某時刻它們分別處于點pe和pm,計算它們的距離。3. 計算機Computer的面向?qū)ο竺枋黾澳M計算(10分)。(1)每個計算機配件ComputerAccessory都有制造商manufacturer和價格price兩種屬性。請定義類ComputerAccessory,并提供必要的操作。(2)主板MotherBoard、內(nèi)存Memory、顯示器Monitor是典型的計算機配件。芯片組chipset、內(nèi)存容量capacity、顯示器類型mtype分別是這三種配件的重要特征。請定義類MotherBoard、Memory、Monitor,并提供必要的操作。(3)主板、內(nèi)存、顯示器是計算機Computer的重要組成部分,請定義類Computer,并提供必要的操作?,F(xiàn)配置一臺計算機(芯片組為Intel主板,2G內(nèi)存,顯示器類型為LCD),請計算其價錢(暫不考慮其他配件的價錢)。A卷 共6頁 第