资源简介
小学生往往被要求回家后由家长出一些额外的四则运算练习以加强复习,但每天重复劳动效率低下,现请你设计一个自动出题的程序,以帮助家长解决每天的烦恼。注意:本程序不是要求人从键盘输入计算表达式然后由电脑来算,而是由电脑出题,人来算。
代码片段和文件信息
#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[
相关资源
- 操作系统c语言模拟文件管理系统844
- C++中头文件与源文件的作用详解
- 基于mfc的多线程文件传输
- VC++ 多线程文件读写操作
- 计算机二级C语言上机填空,改错,编
- c语言小学生自然数四则运算测试程序
- 文件传输和聊天程序(c语言实现)
- C语言中 文件读取和写入的详细操作代
- 连铸温度场计算程序(C++)
- c++ 多功能计算器
- 计算机远程唤醒和关机
- 基于STM32F407ZG的监控摄像头及FATFS文件
- 51单片机protues文件(KST-51.DSN)
- PE文件操作代码
- 实验报告:数据结构长整数四则运算
- 基于CS的TCP文件传输程序设计
- windows网络编程_文件传输
- crc16/32计算(crc16_32.c)
- 交互式计算机图形学 第六版 OpenGL源代
- c++多边形交并差运算
- C语言课设计算器
- 微型文件系统源码(FatFs)
- 北京化工大学计算方法(C/C++)讲义
- diy写字机grbl v1.1源代码
- 2015西北大学计算机复试回忆(附机试
- 西北大学2015年计算机网络复试真题回
- 密码学 重合指数计算(IC.cpp)
- 计算机数据采集卡编程
- 基于51单片机的简易计算器
- 深入理解计算机系统-复习-清华课件
评论
共有 条评论