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

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

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

题目中最多包含一对括号,此程序唯一的遗憾就是有时候计算结果会很大例如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,一经查实,立即删除!

相关文章

javaScript实现E-mail 验证

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

电子门锁没电的解决办法

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

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

组合数学部分&#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;代码的掌控范围会受到限…

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

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

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

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

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

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

【前端面试题】2021/3/12挺经典的面试题,这个经历很深刻。

今天面试去啦&#xff0c;填了职业性格测试&#xff0c;人格测试及招聘的基本经历信息&#xff0c;面试官是技术头头&#xff0c;柔中带钢&#xff0c;问题润物细无声的感觉&#xff0c;很考验基本功。 上午10:30面试了一个达达的前端&#xff0c;采用的是线上腾讯会议的方式&a…

html5 ios cookie,ios – WKWebView,获取所有cookie

我想从WKWebView获取所有cookie.为什么&#xff1f;我已经启动了一个使用基于Web的身份验证的项目.因此,我应该拦截cookie以确保用户已登录并用于其他目的.另一种情况 – 想象一下,如果用户登录,而不是“杀死”应用程序 – 由于存储此cookie会话的一些延迟将丢失:(.The problem…

【前端面试题】2021/3/15面试题

最近在boss直聘上投了很多简历&#xff0c;记录一下今天的面试题&#xff0c;这个好几个都是电话直接打过来问时间方便&#xff1f;我一回答方便就直接开始丢题目&#xff0c;我也不知道哪个公司的。感觉公司不是很正规的感觉&#xff0c;感觉那边有个问题题库&#xff0c;面试…

javafx打包路径问题_关于JavaFX的最常见问题

javafx打包路径问题上周&#xff0c;我在斯德哥尔摩的Jfokus 2012上做了一个关于JavaFX的演讲&#xff0c;当时我意识到每次活动都会问三个问题。 似乎有一个普遍的兴趣&#xff0c;所以我尝试在这篇文章中回答他们&#xff08;尽可能的说实话&#xff09;&#xff1a; iPad或其…

【前端面试题】关于一些js的一些面试题(金融行业),我和面试官扯了三个小时

今天去面试了一家金融公司&#xff0c;招聘比较着急&#xff0c;一面后直接二面等结果&#xff0c;这种公司一般对js要求比较高&#xff0c;笔试题基本都是js相关的题&#xff0c;针对公司的客户要求也会做一些jquery,vue.react相关的插件&#xff0c;H5及webAPP。下面直接说题…

上海大学计算机学院客座教授,刘云虹教授受聘上海大学外国语学院客座教授并做学术讲座...

11月29日14:00&#xff0c;南京大学外国语学院副院长、博士生导师刘云虹教授被我院聘为客座教授并做主题为《中国文学外译与翻译历史观》的学术讲座。学院副院长苗福光教授主持&#xff0c;副院长邓志勇教授(主持工作)为刘教授颁发了聘书。讲座从刘教授自己的学术研究领域和起点…

安徽阜阳计算机高中学校排名,安徽阜阳排名靠前的三大高中,有争议?2020年高考成绩说话!...

安徽省阜阳市&#xff0c;古称汝阴&#xff0c;阜阳历史悠久、文化璀璨、人才辈出&#xff0c;有阜阳剪纸等国家非物质文化遗产&#xff0c;也是管仲、鲍叔牙等历史名人的故乡&#xff1b;阜阳风景秀丽&#xff0c;辖区内有诸多知名景点&#xff0c;其中八里河风景区为国家AAAA…

数组练习2

结对开发&#xff1a;张哲 张晓菲 题目&#xff1a;返回一个数组中子数组最大和&#xff0c;数组可以首尾相连。 一、实验思路 本次实验在第一次的基础上增加了一些难度&#xff0c;数组可以首尾相连组成一个环&#xff0c;我们两个经过思考和讨论后得到一个方法&#xff1a; …

Java 8中最快的垃圾收集器是什么?

OpenJDK 8具有几种垃圾收集器算法&#xff0c;例如Parallel GC &#xff0c; CMS和G1 。 哪一个最快&#xff1f; 如果默认的GC从Java 8中的并行GC更改为Java 9中的G1&#xff08;当前建议&#xff09;&#xff0c;将会发生什么&#xff1f; 让我们对其进行基准测试。 基准方法…

【粉丝需求】如何把一个前端网页都搞下来?

一般比较简单的就是展示型网站,这类网站 最好仿制,如果带后台的不太好获取完整后台代码,但是搞一下前端代码还是可以的。一般前端不管用什么框架,基础元素由html+css+javaScript组成。 声明:本文仅仅提供一种思路,如有对站点侵权的地方,请联系博主删除。 我用的是HB-X,…

九、其他常用命令

一、挂载命令 可以理解为windows当中的分配盘符操作 1.查询与自动挂载 [rootlocalhost ~]# mount #查询系统中已经挂载的设备 [rootlocalhost ~]# mount –a #依据配置文件/etc/fstab的内容&#xff0c;自动挂载一遍 只要按照对应的格式将相应的分区添加到list中&#xff0c;那…

【ECharts系列|01入门】 从入门到天黑【入门级教程实战】

ECharts 是一个使用 JavaScript 实现的开源可视化库&#xff0c;涵盖各行业图表&#xff0c;满足各种需求。 ECharts 遵循 Apache-2.0 开源协议&#xff0c;免费商用。 ECharts 兼容当前绝大部分浏览器&#xff08;IE8/9/10/11&#xff0c;Chrome&#xff0c;Firefox&#xff0…