目 录
一、课题设计内容与主要功能... 1
1.1主要内容... 1
1.2主要功能... 1
二、课题分析... 2
2.1 实现方法... 2
2.2 类声明... 3
2.3 核心算法实现代码... 4
三、主要功能的实现步骤... 8
四.程序测试与结论... 12
五.总结与体会... 16
六.附件... 18
6.1程序清单... 18
6.2参考资料... 26
6.3致谢... 26
一、课题设计内容与主要功能
1.1主要内容
设计一个游戏,其内容为:游戏者每次投掷两颗骰子,每颗骰子是一个正方体,有6面上面分别标有1、2、3、4、5、6个圆点,当骰子停止时,将每颗骰子朝上的点的数相加,在第一次投掷骰时, 如果所得到的和为7或11,那么游戏者为赢得胜利;如果所得到的和为2、3或12,那么游戏者为输掉了;如果和为4、5、6、8、9或10,那么为游戏者的点数;如要想赢得胜利,必须继续投掷骰子,直到取得自已的点数为止,但是如果投掷出的和为7,那么游戏者输了。
1.2主要功能
1. 具有娱乐性。
2.玩家所获点数有不可预测性。
3.程序具有可选择性,可依自己意愿选择不同选项。
4.由于另外加入了部分源程序,可使界面变色,界面富有色彩感。
二、课题分析
2.1 实现方法
2.2 类声明
1. 骰子游戏类DiceGame声明如下:
class DiceGame
{
private:
// 数据成员:
int numOfWin; // 胜利数次
int numOfLose; // 失败数次
int numOfTie; // 平局数次
// 辅助函数
int RollDice(); // 模拟投掷一次骰子
void Help(); // 获得帮助
void Show(); // 显示统计结果
public:
// 方法声明:
DiceGame(); // 无参数的构造函数
virtual ~DiceGame(){} // 析构函数
void Game(); // 模拟游戏
};
该类是实现游戏功能的重要类,其中定义了三个私有整形成员来分别表示平局、胜利以及失败的次数,辅助函数有RollDice、Help及Show,还有主要函数Game。
2.随机数类Rand声明如下:
class Rand
{
public:
// 方法声明
static void SetRandSeed(){ srand((unsigned)time(NULL)); }
// 设置当前时间为随机数种子
static int GetRand(int n){ return rand() % n; }
// 生成0 到 n-1之间的随机数
static int GetRand(){ return rand(); } // 生成0 ~ n-1之间的随机数
};
该类能随机生成数字供游戏中骰子使用。它设置了当前时间为时间种子。
2.3 核心算法实现代码
1.main.cpp:
#include "utility.h" // 实用程序软件包
#include "dice_game.h" // 骰子游戏
int main(void) // 主函数main(void)
{
DiceGame objGame; // 骰子游戏对象
objGame.Game(); // 运行游戏
system("PAUSE"); // 调用库函数system()
return 0; // 返回值0, 返回操作系统
}
2.骰子游戏实现的核心部分代码
void DiceGame::Game() // 模拟游戏
{
Cover();
char select = 1;
int sum, myPoint;
GameStatus status; // 游戏状态
Rand::SetRandSeed(); // 设置当前时间为随机数种子
Help(); // 获得帮助
while(select!=3)
{
cout << endl << endl <<" 请选择" << endl;
cout << " ---> 1. 获得帮助" << endl;
cout << " ---> 2. 开始游戏" << endl;
cout << " ---> 3. 退出游戏" << endl;
cin >> select; // 输入选择
if(select!='1'&&select!='2'&&select!='3') //输入不是 1,2,3 重新输入
{
cout<<"请输入 1,2,3中任意一数!"<<endl;
cout<<select<<endl;
continue;
}
if(select=='1') //输入1
{
Help();
}
else if(select=='2') //输入2
{
sum=RollDice(); //模拟掷骰子
if(sum==7||sum==11) //掷得7或11胜利
{
status=WIN;
numOfWin++;
}
else if(sum==2||sum==3||sum==12) //输了
{
status=LOSE;
numOfLose++;
}
else //处于平局
{
status=TIE;
myPoint=sum;
numOfTie++;
cout<<"点数为【 "<<myPoint<<" 】"<<endl;
}
while(1)
{
if(status==WIN)
{
system("color 1b");
cout<<"恭喜!你赢了!"<<endl;
break;
}
if(status==LOSE)
{
system("color 2a");
cout<<"遗憾! 你输了!"<<endl;
break;
}
if(status==TIE)
{
cout<<"平局!是否继续投掷骰子?";
bool Getanswer=UserSaysYes();//得到用户的指示
while(Getanswer)
{
int repeat;
repeat=RollDice(); //处于平局再次掷骰子
if(myPoint==repeat) //掷得自己的点数,赢得胜利
{
status=WIN;
numOfWin++; //所有胜局数
break;
}
else if(repeat==7) //掷得7,输了
{
status=LOSE;
numOfLose++; //所有败局数
break;
}
else //平局
{
numOfTie++; //所有平局数
break;
}
}
if(!Getanswer)
break;
}
}
}
else if(select=='3') //输入为3
{
cout<<"是否退出?";
if(UserSaysYes()) //退出游戏
break;
else
select=1; //返回游戏
}
}
Show(); // 显示统计结果
getscore();
}
三、主要功能的实现步骤
通过void DiceGame::Game()模拟游戏,调用Cover()函数,显示读取程序,进入主界面后有三个选择项,其实是通过if,while等一些语句实现的。现将实现步骤分析如下:
1. if(select!='1'&&select!='2'&&select!='3')
{
cout<<"请输入 1,2,3中任意一数!"<<endl;
cout<<select<<endl;
continue;
}
通过上面的语句,不难分析出,若输入不是1,2,3中的任意一个数,则会显示"请输入 1,2,3中任意一数!"字样,这样就防止了输入除此三个述以外的其它数或者字符可能会带来的错误。
2. if(select=='1')
{
Help();
}
此语句可以分析出,若输入为1,则会出现帮助的字样。
3. else if(select=='2') {
sum=RollDice();
此语句紧接2所示语句,如果选择的是2,则开始模拟掷骰子游戏。
4. if(sum==7||sum==11) //
{
status=WIN;
numOfWin++;
}
else if(sum==2||sum==3||sum==12)
{
status=LOSE;
numOfLose++;
}
else
{
status=TIE;
myPoint=sum;
numOfTie++;
cout<<"点数为【 "<<myPoint<<" 】"<<endl;
}
此语句也是紧接上一条语句的,如果掷得7或11,则玩家胜利,若得到的点数为2,3,11中任意一个数时,由status=LOSE显示玩家失败;若获得的点数不是7,11,也不是2,3,12,则显示平局,经由myPoint=sum; numOfTie++;cout<<"点数为【 "<<myPoint<<" 】"<<endl;
这三条语句得出点数。
5. while(1)
{
}
此语句是执行循环,直到满足条件为止的一个句子。while(1),括号中的数字可以写除了0以外的任何数字。当得到输了或者赢了游戏后,便退出此循环。
6.if(status==WIN)
{
system("color 1b");
cout<<"恭喜!你赢了!"<<endl;
break;
}
}
如果游戏状态为赢,则输出“恭喜!你赢了!”,并通过system("color 1b");显示特定的字体颜色。
7.if(status==LOSE)
{ system("color 2a");
cout<<"遗憾! 你输了!"<<endl;
break;
}
如果游戏状态为失败,则输出“遗憾! 你输了”,并通过system("color 2a");显示特定的字体颜色。(注:此处2a与第6点中的1b有别,因此游戏失败和胜利的结果给出的颜色不同)
8.if(status==TIE)
{
cout<<"平局!是否继续投掷骰子?";
bool Getanswer=UserSaysYes();
}
如果游戏状态时平局,则输出“平局!是否继续投掷骰子?”,通过布尔bool Getanswer=UserSaysYes();来实现等待用户的指示。
9.while(Getanswer)
{
int repeat;
repeat=RollDice();
if(myPoint==repeat)
{
status=WIN;
numOfWin++; break;
} }
如果得到了在来一次的指令,则会再次执行掷骰子,若掷得自己的点数,则赢得胜利,并输出所有胜局数。
10.else if(repeat==7)
{
status=LOSE;
numOfLose++;
break;
}
此语句紧接上一条语句,若重新投掷得到的点数为7,则玩家输掉了游戏,并且显示所有失败游戏的局数。
11.else //平局
{
numOfTie++;
break;
}
若重新投掷的点数不是上述两条语句中所描述的点数,则显示平局,且会给出所有平局的局数。
12.if(!Getanswer)
break;
若没有的到用户指令,则退出。
13. else if(select=='3')
{
cout<<"是否退出?";
if(UserSaysYes())
break;
else
select=1;
}
若在主界面出来后,选择的是第3项,则会出现“是否退出”的提示,如果用户选择y,则退出,否则重新回到三个选项的界面,继续选择要选择的选项。
14. Show();
getscore();
显示统计结果
四.程序测试与结论
程序运行后的主界面如下:
选择选项1,即获得帮助,运行截图如下:
选择选项2,即开始游戏,赢了游戏时,其运行截图如下:
若游戏为平局,选择y时,截图如下:
如游戏为平局,选择n时,截图如下:
选择选项3,即退出游戏,运行截图如下:
若不选择1,2或3,运行截图如下:
结论:经测试,本程序可以正常运行,要求的各种功能已经基本完善。且由于改变了背景颜色、文字布局以及字体颜色,在玩家输赢不同情况下显示不同颜色的文字颜色和背景,使得运行后的界面更加美观。
五.总结与体会
通过大一C++学习,感觉自己学到了很多东西。但由于进大二后没有使用过C++进行编程,很多地方已经记不起来了,为了完成此次课程设计,我重新翻阅了大一的教材,并对课后的部分习题进行了分析,将曾经学过的知识点一点一点地重新收回来,经过自己的努力,我在较短时间内将课本看完了。并花了相当长的时间完成了此次任务的设计。说实话,我在这个过程中付出了很大的精力,由于以前没有进行过此类程序的设计,开始起来比较吃力,感觉很难!
经此次课程设计,我深刻地了解到,无论是学习一门语言,要经常看,经常编写和操作,逐步深入了解其内涵,以加强一门语言的学习。C++作为一门面向对象的语言,可能比较复杂一点,这就更要我们有持之以恒,不断编程以达熟练。
通过一个星期的课程设计,我有如下几点体会:
1.要设计一个大型程序,查找资料是至关重要的,在他人的基础上,再根据自己所学进行修改与调试,最后设计出自己想要的程序,这过程艰辛,但只要你持之以恒,成功指日可待。
2.平时扎实的基础也很关键,如果你平时学得就不怎么样,那么你面对这么一个比较有难度的程序,你可能会望而却步,看他人的程序都是个难点,更别说让你自己去设计。为了解决此类问题,最好就是多向同学,老师请教,不要怕难为情。尤其是老师,评他们多年的编写程序的经验,要解决我们的问题,对他们来说只是小菜一碟,而且每个老师都是乐意为同学解决困难的。
3.在编写程序时,要抓住问题的要害,要善于将语言文字转变为程序。这虽然是要有丰富的经验才能做的好的,但也是有些小窍门的。程序设计过程有若是要解决实际问题,从解决实际问题的角度,我们可以这样来看:首先要了解这个问题的基本要求,即输入、输出、完成从输入到输出的要求是什么;其次,从问题的要害入手,从前到后的解决问题的每个方面,即从输入开始入手,着重考虑如何从输入导出输出,在这个过程中,可确定所需的变量、数组、函数,然后确定处理过程算法。可得最后结论。
4.C++语言是一门面向对象的语言,不同于C语言,要考虑程序数据的行为。类就是添加的新内容,同时使C++的程序变得更加优化,类所需的构造函数和折构函数,数据成员和成员函数。每个程序做前都要考虑可行性和正确性。
每个大程序可能会出项种种小错误,会让人非常烦燥,所以要冷静查找,要有恒心,作为编程的人员要具有那些素质。在做课程设计中就要这种的素质,通过老师和我的努力终于学会了很多不懂的类之类的内容。通过本次课程设计,使我又一次了解到了C++的更多内容,而且也使我及时的复习了以前的内容,也为以后此类设计弥补了经验。
六.附件
6.1程序清单
【main.cpp】
#include "utility.h" // 实用程序软件包
#include "dice_game.h" // 骰子游戏
int main(void) // 主函数main(void)
{
DiceGame objGame; // 骰子游戏对象
objGame.Game(); // 运行游戏
system("PAUSE"); // 调用库函数system()
return 0; // 返回值0, 返回操作系统
}
【dice_game.h】
#ifndef __DICE_GAME_H__ // 如果没有定义__DICE_GAME_H__
#define __DICE_GAME_H__ // 那么定义__DICE_GAME_H__
typedef enum{WIN, LOSE, TIE} GameStatus; // WIN:赢,LOSE:输,TIE:平局
// 骰子游戏类DiceGame声明
class DiceGame
{
private:
// 数据成员:
int numOfWin; // 胜利数次
int numOfLose; // 失败数次
int numOfTie; // 平局数次
// 辅助函数
int RollDice(); // 模拟投掷一次骰子
void Help(); // 获得帮助
void Show(); // 显示统计结果
void Cover(); // 定义颜色
public:
// 方法声明:
DiceGame(); // 无参数的构造函数
virtual ~DiceGame(){}// 析构函数
void Game();// 模拟游戏
void getscore(); //获得的积分
};
// 骰子游戏类DiceGame的实现部分
DiceGame::DiceGame() // 初始化骰子游戏
{
numOfWin = 0; // 胜利数次
numOfLose = 0; // 失败数次
numOfTie = 0; // 平局数次
cout << "" << endl;
}
int DiceGame::RollDice()
// 模拟投掷一次骰子,返回值为所投掷的两颗骰子向上一面的点数之和
{
int numOfDice1; // 所投掷的第1颗骰子向上一面的点数
int numOfDice2; // 所投掷的第2颗骰子向上一面的点数
int sum; // 所投掷的两颗骰子向上一面的点数之和
numOfDice1 = 1 + Rand::GetRand(6); // 模拟所投掷骰子1的点数
numOfDice2 = 1 + Rand::GetRand(6); // 模拟所投掷骰子2的点数
sum = numOfDice1 + numOfDice2; // 计算所投掷两颗骰子向上一面的点数之和
cout << "选手掷骰子:" << numOfDice1 << "+" << numOfDice2 << "=" << sum << endl;
return sum; // 返回所掷骰子向上一面点数之和
}
void DiceGame::getscore()
{
int a=3*numOfWin-1*numOfLose+1*numOfTie;
cout<<endl<<endl<<"您的点数是:";
cout<<(3*numOfWin+0*numOfLose-1*numOfTie)<<endl;
cout<<""<<endl<<endl<<endl;
cout<<"---谢谢您使用本软件---"<<endl<<endl<<endl;
cout<<"---谢谢您使用本软件---"<<endl<<endl<<endl;
}
void DiceGame::Help()// 获得帮助
{
cout << " 游戏者每次投掷两颗骰子,每个骰子是一个正方体,有" << endl;
cout <<" 6面上面分别标有1、2、3、4、5、6个圆点,当骰子停止时" << endl;
cout <<" ,将每个骰子朝上的点的数相加,在第一次投掷骰时, 如果" << endl;
cout <<" 所得到的和为7或11,那么游戏者为赢得胜利; 如果所得到" << endl;
cout <<" 的和为2、3或12,那么游戏者为输掉了;如果和为4、5、6" << endl;
cout <<" 、8、9或10,那么为游戏者的点数;如要想赢得胜利,必" << endl;
cout << "须继续投掷骰子,直到取得自已的点数为止, 但是如果投" << endl;
cout << "掷出的和为7,那么游戏者为输了." << endl << endl;
}
void DiceGame::Show() // 显示统计结果
{
cout << "选手游戏统计:" << endl;
cout <<"获胜" << numOfWin << "次" << endl;
cout <<" 失败" << numOfLose << "次" << endl;
cout << "平局" << numOfTie << "次" << endl;
}
void DiceGame::Cover()
{ system("color 1e");
char line[]={"程序读取中 请耐心等待..."};
char bar[]={"...."};
int i,j,k=0,x=0,y=0;
for(i=0;i<=strlen(line)/2;)
{
system("cls");
for(j=0;j<9;j++) //改变行坐标
cout<<endl;
for(j=0;j<(75-strlen(line))/2;j++) //改变列坐标
cout<<" ";
for(j=1;j<=i;j++) //进度显示器
cout<<">>";
for(x=strlen(line)/2;x>i;x--)
cout<<" ";
if(k==4)
i++;
cout<<endl;
for(j=0;j<(75-strlen(line))/2;j++) //行坐标定位
cout<<" ";
cout<<line; //输出线条
cout<<endl;
for(j=0;j<(65-strlen(bar))/2;j++)
cout<<" ";
cout<<(i+7)*5<<"% Loading";
cout.write(bar,k);
cout<<endl;
for(j=0;j<10;j++)
cout<<endl;
for(j=0;j<24;j++)
cout<<" ";
cout<<" 感谢各位老师对此次课程设计的精心指导"<<endl;
for(j=0;j<24;j++)
cout<<" ";
for(j=0;j<=18;j++)
cout<<"─";
cout<<endl;
for(j=0;j<10000000;j++);//延时效果
k++;
if(k>4)
k=0;
}
}
void DiceGame::Game()// 模拟游戏
{
Cover();
char select = 1;
int sum, myPoint;
GameStatus status; // 游戏状态
Rand::SetRandSeed(); // 设置当前时间为随机数种子
Help(); // 获得帮助
while(select!=3)
{
cout << endl << endl <<" 请选择" << endl;
cout << " ---> 1. 获得帮助" << endl;
cout << " ---> 2. 开始游戏" << endl;
cout << " ---> 3. 退出游戏" << endl;
cin >> select; // 输入选择
if(select!='1'&&select!='2'&&select!='3') //输入不是 1,2,3 重新输入
{
cout<<"请输入 1,2,3中任意一数!"<<endl;
cout<<select<<endl;
continue;
}
if(select=='1') //输入1
{
Help();
}
else if(select=='2') //输入2
{
sum=RollDice();//模拟掷骰子
if(sum==7||sum==11) //掷得7或11胜利
{
status=WIN;
numOfWin++;
}
else if(sum==2||sum==3||sum==12) //输了
{
status=LOSE;
numOfLose++;
}
else //处于平局
{
status=TIE;
myPoint=sum;
numOfTie++;
cout<<"点数为【 "<<myPoint<<" 】"<<endl;
}
while(1)
{
if(status==WIN)
{
system("color 1b");
cout<<"恭喜!你赢了!"<<endl;
break;
}
if(status==LOSE)
{ system("color 2a");
cout<<"遗憾! 你输了!"<<endl;
break;
}
if(status==TIE)
{
cout<<"平局!是否继续投掷骰子?";
bool Getanswer=UserSaysYes();//得到用户的指示
while(Getanswer)
{
int repeat;
repeat=RollDice();//处于平局再次掷骰子
if(myPoint==repeat) //掷得自己的点数,赢得胜利
{
status=WIN;
numOfWin++; //所有胜局数
break;
}
else if(repeat==7) //掷得7,输了
{
status=LOSE;
numOfLose++;//所有败局数
break;
}
else //平局
{
numOfTie++; //所有平局数
break;
}
}
if(!Getanswer)
break;
}
}
}
else if(select=='3') //输入为3
{
cout<<"是否退出?";
if(UserSaysYes())//退出游戏
break;
else
select=1; //返回游戏
}
}
Show();// 显示统计结果
getscore();
}
#endif
【utility.h】
ifndef __UTILITY_H__ // 如果没有定义__UTILITY_H__
#define __UTILITY_H__ // 那么定义__UTILITY_H__
// 实用程序工具包
#ifdef _MSC_VER // 表示是Visual C++
#if _MSC_VER == 1200 // 表示Visual C++6.0
// 标准库头文件
#include <string.h> // 标准串和操作
#include <iostream.h> // 标准流操作
#include <limits.h> // 极限
#include <math.h> // 数据函数
#include <fstream.h> // 文件输入输出
#include <ctype.h> // 字符处理
#include <time.h> // 日期和时间函数
#include <stdlib.h> // 标准库
#include <stdio.h> // 标准输入输出
#include <iomanip.h> // 输入输出流格式设置
#include <stdarg.h> // 支持变长函数参数
#include <assert.h> // 支持断言
#else // 其它版本的Visual C++
// ANSI C++标准库头文件
#include <string> // 标准串和操作
#include <iostream> // 标准流操作
#include <limits> // 极限
#include <cmath> // 数据函数
#include <fstream> // 文件输入输出
#include <cctype> // 字符处理
#include <ctime> // 日期和时间函数
#include <cstdlib> // 标准库
#include <cstdio> // 标准输入输出
#include <iomanip> // 输入输出流格式设置
#include <cstdarg> // 支持变长函数参数
#include <cassert> // 支持断言
using namespace std; // 标准库包含在命名空间std中
#endif // _MSC_VER == 1200
#else // 非Visual C++
// ANSI C++标准库头文件
#include <string> // 标准串操作
#include <iostream> // 标准流操作
#include <limits> // 极限
#include <cmath> // 数据函数
#include <fstream> // 文件输入输出
#include <cctype> // 字符处理
#include <ctime> // 日期和时间函数
#include <cstdlib> // 标准库
#include <cstdio> // 标准输入输出
#include <iomanip> // 输入输出流格式设置
#include <cstdarg> // 支持变长函数参数
#include <cassert> // 支持断言
using namespace std; // 标准库包含在命名空间std中
#endif // _MSC_VER
// 实用函数
char GetChar(istream &inStream = cin); // 从输入流inStream中跳过空格及制表符获取一字符
bool UserSaysYes(); // 当用户肯定回答(yes)时, 返回true, 用户否定回答(no)时,返回false
// 函数模板
template <class ElemType >
void Swap(ElemType &e1, ElemType &e2); // 交换e1, e2之值
template<class ElemType>
void Display(ElemType elem[], int n); // 显示数组elem的各数据元素值
// 实用类
class Timer; // 计时器类Timer
class Error; // 通用异常类
class Rand; // 随机数类Rand
char GetChar(istream &in) // 从输入流in中跳过空格及制表符获取一字符
{
char ch;// 临时变量
while ((ch = in.peek()) != EOF // 文件结束符(peek()函数从输入流中接受1
// 字符,流的当前位置不变)
&& ((ch = in.get()) == ' ' // 空格(get()函数从输入流中接受1字符,流
// 的当前位置向后移1个位置)
|| ch == '\t')); // 制表符
return ch; // 返回字符
}
bool UserSaysYes() // 当用户肯定回答(yes)时, 返回true, 用户否定回答(no)时,返回false
{
char ch; // 用户回答字符
bool initialResponse = true; // 初始回答
do
{ // 循环直到用户输入恰当的回答为止
if (initialResponse) cout << "(y, n)?"; // 初始回答
else cout << "用y或n回答:"; // 非初始回答
while ((ch = GetChar()) == '\n'); // 跳过空格,制表符及换行符获取一字符
initialResponse = false; // 非初始回答
} while (ch != 'y' && ch != 'Y' && ch != 'n' && ch != 'N');
while (GetChar() != '\n'); // 跳过当前行后面的字符
if (ch == 'y' || ch == 'Y') return true; // 肯定回答返回true
else return false; // 否定回答返回false
}
template <class ElemType >
void Swap(ElemType &e1, ElemType &e2) // 交换e1, e2之值
{
ElemType temp; // 临时变量
temp = e1; e1 = e2; e2 = temp; // 循环赋值实现交换e1, e2
}
template<class ElemType>
void Show(ElemType elem[], int n) // 显示数组elem的各数据元素值
{
for (int i = 0; i < n; i++)
{ // 显示数组elem
cout << elem[i] << " "; // 显示elem[i]
}
cout << endl; // 换行
}
// 计时器类Timer
class Timer
{
private:
// 数据成员
clock_t startTime;
public:
// 方法声明
Timer(){ startTime = clock(); } // 构造函数, 由当前时间作为开始时间构造对象
double ElapsedTime() const// 返回已过的时间
{
clock_t endTime = clock();// 结束时间
return (double)(endTime - startTime) / (double)CLK_TCK; // 计算已过时间
}
void Reset(){ startTime = clock(); } // 重置开始时间
};
// 通用异常类Error
#define MAX_ERROR_MESSAGE_LEN 100
class Error
{
private:
// 数据成员
char message[MAX_ERROR_MESSAGE_LEN]; // 异常信息
public:
// 方法声明
Error(char mes[] = "一般性异常!"){ strcpy(message, mes); } // 构造函数
void Show() const{ cout << message << endl; } // 显示异常信息
};
// 随机数类Rand
class Rand
{
public:
// 方法声明
static void SetRandSeed(){ srand((unsigned)time(NULL)); }//设置当前时间为随机数种子
static int GetRand(int n){ return rand() % n; }// 生成0 ~ n-1之间的随机数
static int GetRand(){ return rand(); } // 生成0 ~ n-1之间的随机数
};
#endif
6.2参考资料
《C++语言程序设计教程》 吕凤翥主编 人民邮电出版社
《C++程序设计习题解答与考试指导》 李千目主编 清华大学出版社
《21天学通C语言》 王正仲主编 电子工业出版社
《C程序设计课程设》 刘振主编 机械工业出版社
6.3致谢
在此次课程设计当中,得到了欧阳湘江老师及其他各为老师的精心指导,没有他们的指导,课程设计难以按时按质完成,在此对他们的辛勤劳动表示诚挚的感谢!