作业

  • 格式:pdf
  • 大小:263.85 KB
  • 文档页数:13

■ 严惩抄袭
■ 可以参考别人的作业。有的程序一模一样、或者只有部分变量命 名不同,那就是抄袭。 ■ 抄袭和被抄袭都是可耻的,全部记为 0 分。(抄袭是害己,让别 人抄是害人) ■ 本学期出现 3 次抄袭,综合成绩不合格。
■ 人都有犯错误的时候,我也曾抄过别人的作业。可是, 我们不能再错下去,今天,就让我们从今天做起!
*
1
Deck -cards[52] : Card +Deck() +MakeDeck() : void +ShowDeck() : void +Shuffle() : void
7
程序设计思路
■ 发现对象,设计类。 ■ 用 Card 类表示单张牌,一张牌的属性应包括花色suit和 点数face。花色有4种:梅花、方块、红桃、黑桃;点数 有13种:2、3、...、10、J、Q、K、A。
NIT Spring 2009, Liuqiyu 3
lab04-统计单词数
■ lab04任务:从文件中读取单词,统计单词的个数,单词 之间以空格或换行符分隔。 ■ 使用函数getline来读取一行字符。
...... ...... string buff; string buff; ifstream infile; ifstream infile; infile.open("word.txt"); infile.open("word.txt"); // ...... 判断文件是否打开成功 // ...... 判断文件是否打开成功 // 逐行读取 // 逐行读取 while (getline(infile,buff)) { while (getline(infile,buff)) { cout << buff << endl; cout << buff << endl; //...... 计算每一行单词个数 //...... 计算每一行单词个数 } } ...... ......
NIT Spring 2009, Liuqiyu 5
lab06-设计People类
■ lab06任务:《学生用书》中实验四之实验任务(3);
■ 设计一个用于人事管理的People(人员)类。 ■ 考虑到通用性,这里只抽象出所有类型人员都具有的属性: ■ number(编号)、sex(性别)、birthday(出生日期)、id (身份证号)等。 ■ 其中“出生日期”声明为一个“日期”类内嵌子对象。用成员函数实 现对人员信息的录入和显示。 ■ 要求包括:构造函数和析构函数、拷贝构造函数、内联成员函 数、组合。
NIT Spring 2009, Liuqiyu
6
lab08: 扑克牌
■ 任务:写一个扑克牌游戏程序的基本部分,按要求完成 一副扑克牌的创建和显示 。
■ 设计一个Card类来表示单张扑克牌的逻辑模型; ■ 设计一个Deck类用来表示一副52张的扑克牌,公有接口必须包 括生成扑克牌、显示扑克牌、洗牌等这样的成员函数。
Card -suit : int -face : int +Card() +SetSuit(in s : int) +ShowCard(in f : int) +SetFace(in f : int) +GetSuit() : int +GetFace() : int
NIT Spring 2009, Liuqiyu
NIT Spring 2009, Liuqiyu 9
定义 Card 类
Card::Card() { Card::Card() { suit = club; suit = club; face = two; face = two; } } void Card::ShowCard() { void Card::ShowCard() { switch (suit) { // 利用ASCII符号打印每张牌的花色 switch (suit) { // 利用ASCII符号打印每张牌的花色 case club: cout << char(5); break; case club: cout << char(5); break; case diamond: cout << char(4); break; case diamond: cout << char(4); break; case heart: cout << char(3); break; case heart: cout << char(3); break; case spade: cout << char(6); break; case spade: cout << char(6); break; } } if (face < 11) cout << face << " "; if (face < 11) cout << face << " "; else if (face == jack) cout << "J "; else if (face == jack) cout << "J "; else if (face == queen) cout << "Q "; else if (face == queen) cout << "Q "; else if (face == king) cout << "K "; else if (face == king) cout << "K "; else cout << "A "; else cout << "A "; } }
Deck() {} Deck() {} void MakeDeck(); void MakeDeck(); void ShowDeck(); void ShowDeck(); void Shuffle(); void Shuffle(); private: private: Card cards[52]; Card cards[52]; }; };
NIT Spring 2009, Liuqiyu 4
lab04-统计单词数
■ 计算单词个数
int CountLine2(string& s) { int CountLine2(string& s) { const int OUT = 0; const int IN = 1; const int OUT = 0; const int IN = 1; int state = OUT; // 状态量,单词外0,单词里1 int state = OUT; // 状态量,单词外0,单词里1 int i i= 0, n = 0; int = 0, n = 0; while(i < s.length()) { while(i < s.length()) { if(s.at(i) == ' '' '|| s.at(i) == '\t') if(s.at(i) == || s.at(i) == '\t') state = OUT; state = OUT; elቤተ መጻሕፍቲ ባይዱe if(state == OUT) { // 由单词外进入单词时,个数加1 else if(state == OUT) { // 由单词外进入单词时,个数加1 state = IN; state = IN; n++; n++; } } i++; i++; } } return n; return n; } }
■ Card类中花色suit和点数face的编码。为了方便起见,可以用 0~3之间的数分别代表梅花、方块、红桃、黑桃这4个花色;用 取值范围为2~14的数,分别代表2、3、...、10、J、Q、K、A这 13个点数。
// 花色(取值范围为0~3,分别代表梅花、方块、红桃、黑桃) // 花色(取值范围为0~3,分别代表梅花、方块、红桃、黑桃) enum Suit { club, diamond, heart, spade }; enum Suit { club, diamond, heart, spade }; // 点数(取值为2~14,分别代表2、...、10、J、Q、K、A) // 点数(取值为2~14,分别代表2、...、10、J、Q、K、A) enum Face { two=2, three, four, five, six, seven, enum Face { two=2, three, four, five, six, seven, eight, nine, ten, jack, queen, king, ace }; eight, nine, ten, jack, queen, king, ace };
NIT Spring 2009, Liuqiyu 10
设计 Deck 类
■ 设计 Deck 类的属性和方法。
■ Deck类的属性是一副扑克牌,不考虑大小 王,该属性为4种花色×13种点数=52张牌, 将其命名为cards,为Card类型的数组。 ■ MakeDeck()方法生成一副扑克牌(52张), 即分别设置这一副扑克牌中每一张牌的花色 和点数。 ■ ShowDeck()方法显示这一副扑克的 class Deck { class Deck { public: public: 每一张牌面,一个花色显示一行。
面向对象程序设计(C++)
实验习题讲解
lab04 & lab06 & lab08
刘启玉 浙江大学宁波理工学院