辅助判卷程序项目的扩展--自动出题

既完成了主模块---计算题目的设计后,我就开始了自动出题程序的设计,这个程序的思路比较简单,并不是很完美

下面是程序截图和生成的算式

题目中最多包含一对括号,此程序唯一的遗憾就是有时候计算结果会很大例如7736/4这样的结果

下面是这个程序的全部代码

#include <iostream>
using namespace std;
#include <string>
#include <fstream>
#include<time.h>
#include<stdlib.h>#define random(x) (rand()%x)bool isoperator(char c){if(c=='+'||c=='-'||c=='*'||c=='/')return true;return false;
}int main(int argc, char** argv) {srand((int)time(0));string equation;char temp[100];ofstream outf("equation.txt");int i=0;cout<<"输入生成算式的数量:";cin>>i;while(i--){equation.clear();if(i%2){                                            //分数运算 char lastop='+';                                //上一个运算符 int num=random(7)+4;                            //算式包含的操作数个数-1 sprintf(temp,"%d",random(20)+1);                 //第一个操作数 
            equation.append(temp);while(num--){int b;                        if(lastop=='/')                            //防止连续除法的出现 b=random(2);elseb=random(12);switch(b){case 0:case 4:case 8:lastop=temp[0]='+';break;case 1:case 5:case 9:lastop=temp[0]='-';break;case 2:case 6:case 10:lastop=temp[0]='*';break;case 3:case 7:case 11:lastop=temp[0]='/';break;} temp[1]=0;equation.append(temp);sprintf(temp,"%d",random(20)+1);                 equation.append(temp);}int k,a=0;for(int j=0;j<equation.size();j++){                    //添加括号 if((equation[j]=='+'||equation[j]=='-')&&a==0){a++;} else if((equation[j]=='+'||equation[j]=='-')&&a==1){k=j-1;                                            //添加左括号 while(!isoperator(equation[k-1])&&k!=0) k--;if(equation[k-1]=='/'){k--;while(!isoperator(equation[k-1])&&k!=0) k--;}equation.insert(k,"(");k=j+2;                                            //添加右括号 while(!isoperator(equation[k+1])&&k!=equation.size()-1) k++;equation.insert(k+1,")");break;}}//cout<<equation<<endl;
        }else{                                                        //小数运算 char lastop='+';                                //上一个运算符 int num=random(7)+4;                            //算式包含的操作数个数-1 int temp1=random(200)+1;sprintf(temp,"%g",temp1/10.0);                 //第一个操作数 
            equation.append(temp);while(num--){int b;                        if(lastop=='/')                            //防止连续除法的出现 b=random(2);elseb=random(12);switch(b){case 0:case 4:case 8:lastop=temp[0]='+';break;case 1:case 5:case 9:lastop=temp[0]='-';break;case 2:case 6:case 10:lastop=temp[0]='*';break;case 3:case 7:case 11:lastop=temp[0]='/';break;} temp[1]=0;equation.append(temp);int temp2=random(200)+1;if(equation[equation.size()-1]=='/'&&(temp1%temp2)!=0){temp2=temp1/5+1;while(temp1%temp2){temp2++;}}temp1=temp2;sprintf(temp,"%g",temp2/10.0);                equation.append(temp);}//cout<<equation<<endl;
        }outf<<equation<<endl; }cout<<"生成算式成功"<<endl; outf.close();return 0;
}

 

转载于:https://www.cnblogs.com/chengyu404/p/5295935.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/357501.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

H5工程师跨页面取值的几种方法

业务场景:作为H5工程师,经常需要到另一个页面去拿变量值,遇到好多次啦,这里总结一下,同等不同的页面一般不可以使用id或者类选择器定位取值,比如A页面有个id="demo",你从B页面取值,取不到,我记得上次在jsp中取到过一次,应该是和属性相关的,在js中完全行不通…

计算机的发展阶段及特点与未来发展,计算机的发展历史及未来

芯片快将近10亿倍。光子计算机光子计算机即全光数字计算机&#xff0c;以光子代替电子, 光互连代替导线互连&#xff0c;光硬件代替计算机中的电子硬件&#xff0c;光运算代替电运算。光的高速&#xff0c;天然地决定了光计算机有超高速运算速度&#xff1b;与只能在低温下工作…

akka2.5_播放2.0:Akka,Rest,Json和依赖项

akka2.5在过去的几个月中&#xff0c;我越来越多地涉足scala。 Scala与“ Play框架”一起为您提供了一个非常有效且快速的开发环境&#xff08;即&#xff0c;您掌握了Scala语言的特质之后&#xff09;。 Play框架背后的家伙一直在努力开发新版本的Play 2.0。 在Play 2.0中&…

第三周学习进度条

第三周 所花时间(包括上课) 26 代码量(行) 253 博客量(篇) 2 了解到的知识点 第一次团队合作&#xff0c;发现要学习的东西还很多&#xff0c;合作伙伴之间还是需要磨合的&#xff0c;两个人之间还是需要沟通的&#xff0c;果然容易打起来。。。 知识上进一步了解了栈…

javaScript实现E-mail 验证

下面的函数检查输入的数据是否符合电子邮件地址的基本语法。 意思就是说&#xff0c;输入的数据必须包含 符号和点号 (.)。同时&#xff0c; 不可以是邮件地址的首字符&#xff0c;并且 之后需有至少一个点号&#xff1a; function validateForm(){var xdocument.forms["…

计算机硬件知识竞赛题库,电脑知识竞赛题库.pdf

1&#xff0e;在下列系统中&#xff0c; ( )是实时系统。A. 计算机激光照排系统 B.航空定票系统 C&#xff0e;办公自动化系统 D.计算机辅助设计系统答案&#xff1a; B2&#xff0e;操作系统是一种 ( ) 。A. 应用软件 B &#xff0e;系统软件 C&#xff0e;通用软件 D &#x…

代码挑战“ Vrolijke Framboos”事后验尸

星期二&#xff0c;我们在JDriven举行了第二次“ Vrolijke Framboos”&#xff08;快乐树莓的荷兰语&#xff09;Java代码挑战赛 &#xff0c;这是爆炸性的&#xff01; 今年的挑战是创建一个REST服务客户端&#xff0c;该客户端将与服务器一起玩猜数字游戏。 设置会话后&#…

电子门锁没电的解决办法

导读:今天对象回家,输入电子门锁密码怎么也打不开,指示灯也不亮,前段时间也时不时的能按,我就预感到电池没电了,那么我是如何进入家门的呢? 一般这种电子门锁可以输入密码,也可以使用机械钥匙。说实话,这钥匙在哪我压根没见过,租的房子,房东都不知道,只能输入密码才…

oracle学习笔记系列------oracle 基本操作之表的增删改查

--创建一个表 CREATE TABLE employee_souvc(id NUMBER(4),name VARCHAR2(20),gender CHAR(1),birth DATE,salary NUMBER(6,2),job VARCHAR2(30),deptno NUMBER(2) ); --DESC table_name:查看表结构,看到表的列的名字&#xff0c;以及对应的类型&#xff0c;长度等 DESC employe…

【前端笔试题】文本居中的几种小技巧

前端面试或者开发总会遇到是文本居中的情况及场景,这里一起总结一下。便于查找和使用。 目录 方法一 方法二 方法三 方法四 方法一 自动外边距 div #container{margin-left:auto;margin-right:auto;width:168px;} 方法二 使用text-align body{text-align:center;}

计算机专业常用图论,同等学力申硕计算机专业--数学公式集合(新增学习笔记)...

组合数学部分&#xff1a;基础公式&#xff1a;定义:从n个不同的元素中, 取r个并按次序排列, 称为从n中取r个的一个排列, 全部这样的排列数记为P(n, r).定义: 从n个不同的元素中, 取r个但是不考虑次序时候, 称为从n中取r个的一个组合, 全部这样的组合总数记为C(n, r).定义: 从n…

使用Ubuntu22+Minikube快速搭建K8S开发环境

安装Vmware 这一步&#xff0c;可以参考我的如下课程。 安装Ubuntu22 下载ISO镜像 这里我推荐从清华镜像源下载&#xff0c;速度会快非常多。 下载地址&#xff1a;https://mirrors.tuna.tsinghua.edu.cn/ubuntu-releases/22.04.3/ 如果你报名了我的这门视频课程&#xf…

linux内核分析——扒开系统调用的三层皮(上)

20135125陈智威 原创作品转载请注明出处 《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000 系统调用&#xff1a;库函数封装了系统调用&#xff0c;通过库函数和系统调用打交道 用户态&#xff1a;低级别执行状态&#xff0c;代码的掌控范围会受到限…

前端常见浏览器兼容性问题及解决办法

不同浏览器的内核也不尽相同&#xff0c;所以各个浏览器对网页的解析存在一定的差异。 1.不同浏览器的标签默认的外补丁和内补丁不同 *{ margin:0; padding:0; } 2. 块属性标签float后&#xff0c;又有横行的margin情况下&#xff0c;在IE6显示margin比设置的大 style{ disp…

unchecked异常_为什么要在Java中使用Unchecked异常而不是Checked异常

unchecked异常关于检查与未检查的异常的争论可以追溯到过去。 有人说这是Java包含的最佳功能之一。 其他人则说这是他们最大的错误之一[ 1 ]。 辩论似乎结束了。 在这篇文章中&#xff0c;我将尝试包含涉及该主题的文章和书籍的链接。 我不是专家&#xff0c;但是我会尽力向您解…

微型计算机系统中的内部寄存,微机原理与接口技术习题集汇总.doc

微机原理与接口技术习题集汇总.doc (50页)本资源提供全文预览&#xff0c;点击全文预览即可全文预览,如果喜欢文档就下载吧&#xff0c;查找使用更方便哦&#xff01;29.9 积分&#xfeff;.word格式,第二章 微机基本组成及工作原理1.1微型机的基本结构一、单项选择题1&#xf…

10个对Web开发者最有用的Python包

Python最近成为了开发人员最喜欢的语言之一。无论你是专业的&#xff0c;业余的&#xff0c;还是一个初学者&#xff0c;你都可以从Python语言及其程序包中受益。Python已经被证明是当今最具活力的面向对象的编程语言之一。这就是为什么即使是世界顶级公司也广泛使用这种语言的…

移动端适配的几种解决办法

所谓移动端适配,就是WebApp在不同尺寸的屏幕上等比显示 原则 开发时方便,写代码时设置的值要和标注的 160px 相关方案要适配大多数手机屏幕,并且无 BUG用户体验要好,页面看着没有不适感思路 写页面时,按照设计稿写固定宽度,最后再统一缩放处理,在不同手机上都能用按照设…

真正释放Maven和Java EE的强大功能

如果野心和愿景太复杂而无法使用&#xff0c;那么它们可能会毁灭伟大的解决方案。 尽管Maven和Java EE是在整个Java行业中都已建立的良好技术&#xff0c;但是使用它们并使用其作者希望您使用的所有技术和模式来设计项目可能非常棘手。 在开发过程中途&#xff0c;由于一开始就…

浙江丽水学院计算机专业,2019丽水学院专业排名

丽水学院是一所公办全日制普通本科高校&#xff0c;地处浙江绿谷、瓯江之畔、国家级生态示范区——丽水市。为了让大家更好的了解这所大学的专业排名&#xff0c;下面是学习啦小编给大家带来的丽水学院专业排名&#xff0c;供大家参考!丽水学院王牌专业名单省级重点专业&#x…