资源简介
小学生往往被要求回家后由家长出一些额外的四则运算练习以加强复习,但每天重复劳动效率低下,现请你设计一个自动出题的程序,以帮助家长解决每天的烦恼。注意:本程序不是要求人从键盘输入计算表达式然后由电脑来算,而是由电脑出题,人来算。
代码片段和文件信息
#include
#include
#include
#include
using namespace std;
#define STACK_INIT_SIZE 100;
#define STACKINCREMENT 10;
typedef struct
{
char *base;
char *top;
int stacksize;
}SqStack; //运算符栈
typedef struct
{
double *base;
double *top;
int stacksize;
}SqStack1; //操作数栈
//全局变量
char operateChar[4];//运算符
double stackNum[100]; //操作数数组
char stackOpChar[100]; //操作符字符数组
int stackNumNo=0; //操作数个数
int stackOpCharNo=0; //运算符个数
int opType; //操作数种类
bool error=false;
int m;
//用户输入结构
struct input
{
int no;//习题数;
int operateNo; //操作数数目;
int operateBit; //操作数数位;
int isFraction; //能否为小数;
int isNegative; //能否为负数;
int scopemax; //允许出现的最大值;
int scopemin; //允许出现的最小值
// char yourOperateChar[4];//可以出现的运算符;
}in;
void InitStack(SqStack &S)
{//构造一个操作符空栈S
S.base=new char[100];
S.top=S.base;
S.stacksize=STACK_INIT_SIZE;
}
void InitStack(SqStack1 &S)
{ //构造一个操作数空栈S
S.base=new double[100];
S.top=S.base;
S.stacksize=STACK_INIT_SIZE;
}
char GetTop(SqStack S)
{//若栈不空,则用e返回S的栈顶元素
char e;
if(S.top==S.base)return -1;
e=*(S.top-1);
return e;
}
double GetTop(SqStack1 S)
{//若栈不空,则用e返回S的栈顶元素
double e;
if(S.top==S.base)return -1;
e=*(S.top-1);
return e;
}
template
int Push(T &ST1 e)
{//插入元素e为新的栈顶元素
*S.top++=e;
return 0;
}
template
int Pop(T &ST1 &e)
{ //若栈不空,则删除S的栈顶元素,用e返回其值,并返回0,否则返回-1;
if(S.top==S.base)return -1;
e=*--S.top;
return 0;
}
double Operate(double achar thetadouble b)
{
switch(theta)
{
case ‘+‘:return a+b;
case ‘-‘:return a-b;
case ‘*‘:return a*b;
case ‘/‘:return a/b;
}
return 0;
}
char Precede(char t1char t2)
{
if((t1==‘+‘||t1==‘-‘)&&(t2==‘*‘||t2==‘/‘))return ‘<‘;
else return ‘>‘;
}
//产生随机数
int createOperateNum(int bit)
{
int i=1randomNumberrandomdata;
while(bit>0)
{
i=10*i;
bit--;
}
randomNumber = rand();//生成随机数rand() 生成的是0~32767之间的一个随机数。
randomdata = (randomNumber % i); //获得不大于bit位的随机数
return randomdata;
}
//产生运算符
char createOperateChar(int i)
{
int randomNumberrandomdata;
randomNumber = rand();
randomdata = (randomNumber % i);
return operateChar[randomdata];
}
//用户输入
void getInputData()
{
cout<<“请输入习题数(习题数规定至少不小于5):“< cin>>in.no;
while(in.no<5) //如果输入题数in.no小于5,则请重新输入
{
cout<<“您的输入题数不够,请重新输入“< cin>>in.no;
}
cout<<“请输入操作数个数:“< cin>>in.operateNo;
cout<<“请输入操作数位数“< cin>>in.operateBit;
cout<<“运算中间结果是否允许为小数,1代表能,0代表不能“< cin>>in.isFraction;
if(in.isFraction==1)
{
cout<<“请输入您想保留的小数位数m(m≥0且m≤4):“< cin>>m;
}
cout<<“运算中间结果是否允许为负数,1代表能,0代表不能“< cin>>in.isNegative;
cout<<“请输入结果允许出现的最大值:“< cin>>in.scopemax;
cout<<“请输入结果允许出现的最小值:“< cin>>in.scopemin;
cout<<“请输入您想要使用的操作符并以‘#‘结束输入:“< char c[
相关资源
- 不断旋转、缩放和移动的正三棱锥
- 计算机图形图像技术绘制五角星
- 用new和delete运算符动态分配内存空间
- 计算机图形学画月亮C语言
- VC++ MFC 的计算器的详细设计
- WinIo.h WinIo.sys WINIO.VXD WinIo.lib WinIo.dl
- C语言上机考试经典100题--南开大学出
- 基于Huffman树的文件压缩C语言源码数据
- VC6.0 网络程序设计 UDP 文件传输 客户
- 稀疏矩阵运算器(c++)
- 计算机图形学 透视图算法
- VC++ 实现定时关机或休眠-MFC 对话框应
- mfc 用对话框打开并读取txt文件的小程
- c++ 编写的 有理数类
- C++万能头文件 stdc++.h
- c++所有头文件
- 全国计算机二级c语言历年真题完整版
- 矩阵类的运算符重载
- ftp的C++源码实现,可以进行文件传输
- c++实现计算器
- 多峰函数多个最优解问题 演化算法
- 计算机组成原理booth算法C源码
- 基于ViolaJones算法的人脸识别CPP文件
- 基于MFC的串口编程,实现两个计算机
- 操作系统 内存分配与回收 C语言模拟
- 使用c语言写的卷积运算程序
- WAV文件的读写接口类,依赖标准C++库
- 费诺编码的C语言实现
- ply2pcd文件转换
- 计算机二级c语言编程题库100题
评论
共有 条评论