作业帮 > 综合 > 作业

关于C语言基础的一道题~

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/11/07 15:39:10
关于C语言基础的一道题~
编写程序,实现从键盘输入两个整数,输出它们的加减乘除取余五种算术运算结果的功能(结果均为整数).假定除数不为0例如输入的两个整数是23和12,输出结果是:
23+12=35
23-12=11
23*12=276
23/12=1
23%12=11
//以前写的,你简单的修改下吧
#include
#include
#include
#include
using std::cin;
using std::cout;
using std::endl;
//计算式 数量
int const Num = 100;
//计算式中 最大数
int const MaxNum = 100;
//每题分数
int const PerMark = 1;
//计算结果最大值
int const MaxResult = 100;
//计算结果最小值
int const MinResult = 0;
enum enOp{Add,Subtract,Multiply,Divide};
//将 枚举类型转换为字符类型,以便输出.
char enum2char(enOp op)
{
switch (op)
{
case Add:
return '+';
case Subtract:
return '-';
case Multiply:
return 'x';
case Divide:
return '/';
}
return ' ';
}
//计算生成表达式的正确结果.
int myResult(int left,int right,enOp op)
{
switch (op)
{
case Add:
return left+right;
case Subtract:
return left-right;
case Multiply:
return left *right;
case Divide:
return left/ right;
}
return 0;
}
//检查生成计算式的正确与否.其中 减法结果不能为负数,除法结果不能为小数.
bool checkFormula(int left,int right,enOp op)
{
switch (op)
{
case Add:
{
return true;
}
case Subtract:
{
if(left < right)
return false;
return true;
}
case Multiply:
{
return true;
}
case Divide:
{
if(right == 0)
return false;
if(double(left/right) != double(double(left)/double(right)))
return false;
return true;
}
}
return false;
}
//依据给定操作符,生成符合条件的表达式.
void getFormula(int* left,int*right,enOp op)
{
//srand(time(NULL));
for(;;)
{
*left = 1 + rand() % MaxNum;
*right = 1 + rand() % MaxNum;
if(checkFormula(*left,*right,op) && myResult(*left,*right,op)= MinResult)
break;
}
}
int main()
{
//操作符左值
int left[Num];
//操作符右值
int right[Num];
//用户输入计算结果
int result[Num];
//操作符 +-*/
enOp oper[Num];
//正确答案个数
int answerRight = 0;
cout