【正文】
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. 閱讀程序,寫出運(yùn)行結(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è)計(jì)(共30分,每題10分)1. 基本算法設(shè)計(jì)與應(yīng)用(10分)。(1)對STL算法sort的調(diào)用sort(a, a + n, cmp)可以對區(qū)間[a, a + n)(即從a開始的n個(gè)元素)按照準(zhǔn)則cmp排序。請自定義函數(shù)模板mysort實(shí)現(xiàn)這一功能,不能直接調(diào)用sort實(shí)現(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. 點(diǎn)和球的描述及計(jì)算(10分)。(1)三維空間中的一點(diǎn)可以用坐標(biāo)(x,y,z)。定義類Point描述點(diǎn),提供構(gòu)造函數(shù),并重載減法運(yùn)算符“”計(jì)算兩點(diǎn)之間的距離。(2)三維的球可以由圓心點(diǎn)center和半徑radius決定。定義類Sphere描述球,定義構(gòu)造函數(shù),并提供成員函數(shù)計(jì)算兩球的距離。(3)地球半徑設(shè)為re,月球半徑設(shè)為rm,某時(shí)刻它們分別處于點(diǎn)pe和pm,計(jì)算它們的距離。3. 計(jì)算機(jī)Computer的面向?qū)ο竺枋黾澳M計(jì)算(10分)。(1)每個(gè)計(jì)算機(jī)配件ComputerAccessory都有制造商manufacturer和價(jià)格price兩種屬性。請定義類ComputerAccessory,并提供必要的操作。(2)主板MotherBoard、內(nèi)存Memory、顯示器Monitor是典型的計(jì)算機(jī)配件。芯片組chipset、內(nèi)存容量capacity、顯示器類型mtype分別是這三種配件的重要特征。請定義類MotherBoard、Memory、Monitor,并提供必要的操作。(3)主板、內(nèi)存、顯示器是計(jì)算機(jī)Computer的重要組成部分,請定義類Computer,并提供必要的操作?,F(xiàn)配置一臺計(jì)算機(jī)(芯片組為Intel主板,2G內(nèi)存,顯示器類型為LCD),請計(jì)算其價(jià)錢(暫不考慮其他配件的價(jià)錢)。A卷 共6頁 第