课程设计 ( 论文 )
题
目 名 称
速算 24
课
程 名 称
数据结构课程设计
学
生 姓 名
王浩明
学
号
0941301253
系
、专 业
信息工程系、信息类
指
导 教 师
谢兵
12 月 22 日
摘要
设计一个简单的速算24 程序,由系统发出4 张扑克牌,输入一个利用扑克
牌的数字及运算符号“ +”,“ - ”,“ * ”,“ / ”,及“(”和“)”组成计算
表达式,系统运行后得出计算结果,如果结果等于24,则显示“”,否则,显
示“”,接着询问是否继续,按字符n 后程序结束,否则系统重复上述步骤。用
栈来解决。
关键词: 速算 24;栈;计算;
Summary
Design a simple speed is 24, the system to make four playing card, enters a playing card number and operation of using the notation "" and "-" and "man", "" and " (" and " ) of the expression, the system to run after the calculation, if the result is 24," "and" "and then asked whether to go on a n after the application or system to repeat steps above. in the stack to solve.
Keywords : speed is 24 ;Stack ; the stack ;
1
目录
1 问题描述3
2 需求分析3
3 概要设计 ,3
3. 1 设计思路3
3. 2 模块划分3
3. 3 流程图4
4 详细设计5
4. 1 数据类型的定义5
4. 2 程序分析5
4. 3 基本程序错误!未定义书签。
5 分析结果...................................................................................................
6 课程设计总结7
参考文献7
2
问题描述
用 C 语言,结构体实现速算 24 的运算,从一副牌中随机发出 4 张扑克,用扑克牌的数字及运算符号“+”、“ - ”、“×”、“ / ”及括号“(”和“)”组成一个计算表达式,从键盘上输入该计算表达式,系统运行后得出计算结果,
如果结果等于 24,则显示 “very good,”否则,显示 “wrong!!! 接”,着询问是否继续,按字符 n 后程序结束,否则系统重复上述步骤。
需求分析
用二维数组 char p[4][13] 存放扑克,用 A 表示 1,0 表示 10,J、Q、K
分别表示 11、12、13。建立两个栈分别存放随机发的四张牌和运算符进行入栈
出栈操作进行速算, 输出计算的值判断如果结果等于 24 则成功若结果不为 24 继续循环操作直到结果为 24 或者输入 n 或 N 终止。
概要设计 ,
3.1 设计思路
(1)首先定义全局变量,引入标准输入与输出函数,建立结构体对速速24
进行相关的操作。
(2)主函数 main,判断栈空,计算机随机发发出四张牌进行入1 栈操作。
(3)利用出栈操作栈1 栈 2 进行运算操作。
(4)运算结果等于 24 结束不等于 24 继续循环直到出现24 或者按 n 或 N
结束。
3.2 模块划分
本程序包括一个模块:
主程序模块,
main( )
{初始化;
定义数据类型;初始化栈;
发牌进行入栈出栈运算操作;}
3
3.3 流程图
开始
发四张牌入栈 1
输入表达式字入栈 2
调用 change 函数将中缀表
达式变后缀表达式
调用计算函数计算表达式
的值返回结果result
YN
结果 ==24
输出结果
输出结果“ very good ”
不输入字符是否继续
输入 N 或 n
结束
4
详细设计
4.1 数据类型的定义
(1)数组类型
#define N 20 #define COL 100 #define ROW 40 #include "stdio.h" #include "time.h"
/* 系统时间函数 */
#include "alloc.h"/* 动态地址分配函数 */
#include "stdlib.h" / * 库函数 * /
#include "string.h" /* 字符串函数 */
#include "ctype.h" /* 字符操作函数 */
(2)栈
Sta