编程模拟洗牌和发牌过程c语言,洗牌发牌模拟系统课程设计报告.doc

集美大学诚毅学院

《高级语言程序设计》课程设计

实验报告

题目:洗牌和发牌模拟

专业:计算机科学与技术

班级:

姓名:

成绩:

指导教师:

完成日期:2008 年 6月 26 日

一、目的

C语言进行程设计的能力;

2、?

3、?

4、?

5、? N-S图表示算法;

6、? 二、内容与

选择执行的

操作

N-S流程图

main()主函数

定义显示菜单的函数定义构建扑克牌的函数定义低效洗牌的函数定义低效发牌的函数定义高效洗牌、发牌的函数定义扑克牌花色的函数定义扑克牌面值的函数初始化二维数组deck为0初始化一维数组huase初始化一维数组dianshu调用菜单函数调用构建扑克牌函数

根据根据

void suit(struct puke pk[52])

void face(struct puke pk[52])

分析与设计说明

每个函数的基本功能及函数的重要变量的意义:

void menu() /*打印主菜单栏*/

void make(struct puke pk[52]) /*构建一副扑克并打印起初的扑克顺序*/

void ordinary_shuffle(struct puke pk[52]) /*进行低效洗牌*/

void ordinary_deal(struct puke pk[52]) /*进行低效发牌*/

void effective(int deck[][13],char huase[],char dianshu[]) /*进行高效洗牌、发牌*/

void suit(struct puke pk[52]) /*打印扑克的花色*/

void face(struct puke pk[52]) /*打印扑克的面值*/

各函数中的重要变量的意义详见下面源程序段的解释说明部分

各函数的之间的相互关系:

(2).数据结构(程序中所使用的变量、数组、结构体)

变量

e 使用户选择所需要操作的功能的按键

i 定义为1-52张牌,在1-4内的随机变量

t 定义为随机变量进行运算后所赋的值

tds 某张牌的面值在实现洗牌功能时暂时存放的变量地址

ths 某张牌的花色在实现洗牌功能时暂时存放的变量地址

temp 扑克牌在实现高效洗牌、发牌时,某张牌暂时存放的变量地址

row 表示行数

column 表示列数

card 代表52张扑克牌

jishu 表示在实现高效洗牌、发牌时,发牌的牌数

数组

deck[4][13] 定义为一个4x13的二维数组deck表示一副牌。行与花色对应:第0行代表红心、第l行代表方块、第2行代表草花、第3行代表黑心。列代表牌的面值:第0列到第9列对应于“A”到9,第10列到第12列对应于“J”、“Q’’和“K”。字符串数组suit代表四种花色,字符串数组face代表13张牌的面值。

huase[4] 定义扑克牌的花色:第0行代表红心、第l行代表方块、第2行代表草花、第3

行代表黑心

dianshu[13] 定义扑克牌的面值:第0到13列分别用‘A’,’2’,’3’,’4’,’5’,’6’,’7’,’8’,'9','10','J','Q' ’K'

结构体

struct puke 用来定义扑克牌的花色与面值,使得扑克牌被打印时能够显示出每张牌的特征

(3).模块设计

根据功能需要:

在运行程序时调用了这几个头文件

源文件函数名功能fapai---xipai.cvoid main()主函数void menu()打印主菜单栏void make(struct puke pk[52])构建一副扑克并打印起初的扑克顺序void ordinary_shuffle(struct puke pk[52])进行洗牌void ordinary_deal(struct puke pk[52])进行发牌void effective(int deck[][13],char huase[],char dianshu[])进行高效的洗牌、发牌void suit(struct puke pk[52])打印扑克的花色void face(struct puke pk[52])打印扑克的面值

(3)总体设计思想:

◆先定义一个扑克牌的结构体变量,成员列表中包含扑克牌的花色与面值

◆创建主菜单栏,表明此程序的主要用途及相关操