77范文网 - 专业文章范例文档资料分享平台

四则运算三c++ -(4)

来源:网络收集 时间:2018-12-25 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

if (b.numerator == 0) //如果除的是0,则出现除法错误,返回 return true;

c.numerator = a.numerator * b.denominator; c.denominator = a.denominator * b.numerator; }

else //其他情况则出错 return true;

if (c.numerator != 0) //若结果不为0,则对分子分母约分 {

ll div = gcd(c.denominator, c.numerator); c.denominator /= div; c.numerator /= div; }

s.push(c); //将约分后结果入栈 } }

if (s.size() > 1) //如果所有操作符都进行相应操作数后栈内还有多个元素,则说明出错,返回 return true;

res = s.top(); //保存结果 s.pop();

if (res.denominator < 0) //化简结果,将分母的负号移到分子上 {

res.numerator = -res.numerator; res.denominator = -res.denominator; }

return false; }

bool trans_ans() { int i = 0; ll tmp = 0;

//两个标志位分别标志用户输入的分子分母是否为负数

bool num_flag = false, deno_flag = false; //先判断分子是否为负 if (ans[i] == '-') {

num_flag = true; i++; }

//接收第一个数字 while(isNum(ans[i])) {

tmp = tmp * 10 + (ans[i] - '0'); i++; }

//若第一个数为负数,则将转化过来的整数取负 if (num_flag) tmp = -tmp; //保存分子 rst.numerator = tmp; //分母赋初值为1 rst.denominator = 1; tmp = 0;

//判断是否是分数 if (ans[i] == '/') {

//判断分母是否为负数 if (ans[++i] == '-') {

deno_flag = true; i++; }

//接收第二个数 while(isNum(ans[i])) {

tmp = tmp * 10 + (ans[i] - '0');

i++; }

//若第二个数为负数,则将转化过来的整数取负 if (deno_flag) tmp = -tmp; //保存分母

rst.denominator = tmp; }

//若分母为0,则用户输入的结果是非法的 if (rst.denominator == 0) return true;

//若此时没有遍历所有的字符,则说明输入是非法的 if (i != strlen(ans)) return true;

//化简分母的负号,将其移至分子 if (rst.denominator < 0) {

rst.numerator = -rst.numerator; rst.denominator = -rst.denominator; }

//若用户输入的分子分母都是负数,则用户输入不符合规范,我们取分母为0(因为计算结果不可能出现分母为0的状况)标志这种情况的发生 if (num_flag && deno_flag) rst.denominator = 0; return false; } int main() {

fraction frac,frac2;

int sj1,sj2,sf=1,sj3,sj4,r,j=1;//定义随机数及算符 int above,below; int Num;//题的数量

int numchose;//运算数选择 char sfchose;//算符选择 char yschose;//余数选择 char jf;//减法结果选择 int qznum;//取值范围

int ans_2[length];//存放正确的答案 int ans_4[length]={0};//存放正确的余数

srand((unsigned)time(NULL)); //srand函数是以现在系统时间作为时间种子产生随机数

cout<<\欢迎使用自动出题系统*****\ cout<<\请对以下内容进行初始化设置:\

cout<<\请选择运算数(1.二个运算数 2.多个运算数)\ cin>>numchose; if(numchose==1) {

cout<<\请输入打印题数:\ cin>>Num;

cout<<\请选择是否有乘除法?(y/n)\ cin>>sfchose;

cout<<\请输入一个值确定算式中数值取值范围:\ cin>>qznum;

cout<<\减法结果中出现负数吗?(y/n)\ cin>>jf;

if(sfchose=='y') {

cout<<\请选择除法有无余数?(y/n)\ cin>>yschose; }

cout<<\

for(int i=0;i

sj1=rand()%qznum;

sj2=rand()%qznum; sj3=rand()%qznum; sj4=rand()%qznum; if(sfchose=='n')//无乘除法 {

sf=rand()%4; }

if(sfchose=='y')//有乘除法 {

sf=rand()%8; } switch(sf) { case 0:

cout<

break; case 1:

if(jf=='n')//无负数 {

if(sj1

cout<

cout<

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库四则运算三c++&nbsp;-(4)在线全文阅读。

四则运算三c++&nbsp;-(4).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/389577.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: