四则运算四

一、详细要求:

1、 生成的题目中计算过程不能产生负数,也就是说算术表达式中如果存在形如e1 − e2的子表达式,那么e1 ≥ e2。

2、生成的题目中如果存在形如e1 ÷ e2的子表达式,那么其结果应是真分数。

3、每道题目中出现的运算符个数不超过3个,括号不限。

4、程序一次运行生成的题目不能重复,即任何两道题目不能通过有限次交换+和×左右的算术表达式变换为同一道题目。

例如,23 + 45 = 和45 + 23 = 是重复的题目,6 × 8 = 和8 × 6 = 也是重复的题目。

3+(2+1)和1+2+3这两个题目是重复的,由于+是左结合的,1+2+3等价于(1+2)+3,也就是3+(1+2),也就是3+(2+1)。但是1+2+3和3+2+1是不重复的两道题,因为1+2+3等价于(1+2)+3,而3+2+1等价于(3+2)+1,它们之间不能通过有限次交换变成同一个题目。

5、把程序变成一个网页程序或智能手机程序, 用户通过设定参数,就可以得到各种题目,并可实现在线答题并评判。

二、代码

  1 #include<iostream.h>
  2 #include<stdlib.h>
  3 #include<time.h>
  4 #include<math.h>
  5 int main()
  6 {
  7     double Ques1=1;
  8     int Ques01;
  9     int Ques2=1;
 10     int Ques3=100;
 11     char Ques4=‘y‘;
 12     int Ques5=1;
 13     char Ques6=‘n‘;
 14     char Ques7=‘n‘;
 15 Again:
 16     cout<<"请输入题目数量:";
 17     cin>>Ques1;
 18     Ques01=floor(Ques1);
 19     cout<<"请输入每行打印题目数(1-5):";
 20     cin>>Ques2;
 21     cout<<"请输入算式中数值的最大值:";
 22     cin>>Ques3;
 23     while(1)
 24     {
 25         cout<<"运算中需要乘除法吗?y:需要;n:不需要";
 26         cin>>Ques4;
 27         cout<<"减法运算需要有负数吗?y:需要;n:不需要";
 28         cin>>Ques7;
 29         cout<<"行间距(正整数):";
 30         cin>>Ques5;
 31         srand(time(NULL));
 32         if(Ques4==‘y‘)
 33         {
 34             while(1)
 35             {
 36                 if(Ques1<1)
 37                 {
 38                     cout<<"输入有误,请重新输入题目数量:";
 39                     cin>>Ques1;
 40                     Ques01=floor(Ques1);
 41                 }
 42                 else
 43                 {
 44                     for(int j=0;j<Ques01;j++)
 45                     {
 46                         if(j!=0&&j%Ques2==0)
 47                         {
 48                             for(int i=0;i<Ques5;i++)
 49                             {
 50                                 cout<<endl;
 51                             }
 52                         }
 53                         int num1=rand()%Ques3;
 54                         int num2=rand()%Ques3;
 55                         int sign=rand()%4;
 56                         switch(sign)
 57                         {
 58                         case 0:
 59                             cout<<j+1<<":"<<" "<<num1<<"+"<<num2<<"="<<"\t";
 60                             break;
 61                         case 1:
 62                             if(Ques7==‘y‘)
 63                             {
 64                                 cout<<j+1<<":"<<" "<<num1<<"-"<<num2<<"="<<"\t";
 65                             }
 66                             else
 67                             {
 68                                 if(num1>num2)
 69                                 {
 70                                     cout<<j+1<<":"<<" "<<num1<<"-"<<num2<<"="<<"\t";
 71                                 }
 72                                 else
 73                                 {
 74                                     cout<<j+1<<":"<<" "<<num2<<"-"<<num1<<"="<<"\t";
 75                                 }
 76                             }
 77                             break;
 78                         case 2:
 79                             cout<<j+1<<":"<<" "<<num1<<"*"<<num2<<"="<<"\t";
 80                             break;
 81                         case 3:
 82                             if(num2!=0)
 83                             {
 84                                 cout<<j+1<<":"<<" "<<num1<<"/"<<num2<<"="<<"\t";
 85                             }
 86                             else
 87                             {
 88                                 j--;
 89                             }
 90                             break;
 91                         }
 92                     }
 93                     break;
 94                 }
 95             }
 96             break;
 97         }
 98         if(Ques4==‘n‘)
 99         {
100             while(1)
101             {
102                 if(Ques01<1)
103                 {
104                     cout<<"输入有误,请重新输入题目数量:";
105                     cin>>Ques1;
106                     Ques01=floor(Ques1);
107                 }
108                 else
109                 {
110                     for(int j=0;j<Ques01;j++)
111                     {
112                         if(j!=0&&j%Ques2==0)
113                         {
114                             for(int i=0;i<=Ques5;i++)
115                             {
116                                 cout<<endl;
117                             }
118                         }
119                         int num1=rand()%Ques3;
120                         int num2=rand()%Ques3;
121                         int sign=rand()%2;
122                         switch(sign)
123                         {
124                         case 0:
125                             cout<<j+1<<":"<<" "<<num1<<"+"<<num2<<"="<<"\t";
126                             break;
127                         case 1:
128                             if(Ques7==‘y‘)
129                             {
130                                 cout<<j+1<<":"<<" "<<num1<<"-"<<num2<<"="<<"\t";
131                                 break;
132                             }
133                             else
134                             {
135                                 if(num1>num2)
136                                 {
137                                     cout<<j+1<<":"<<" "<<num1<<"-"<<num2<<"="<<"\t";
138                                     break;
139                                 }
140                                 else
141                                 {
142                                     cout<<j+1<<":"<<" "<<num2<<"-"<<num1<<"="<<"\t";
143                                     break;
144                                 }
145                             }
146                             break;
147                         }
148                     }
149                 }
150                 break;
151             }
152             break;
153         }
154
155         else
156         {
157             cout<<"输入有误,请按要求输入!"<<endl;
158         }
159     }
160     cout<<endl;
161     while(1)
162     {
163         cout<<"还需要继续出题还是退出?(y:继续出题;n:退出)";
164         cin>>Ques6;
165         if(Ques6==‘y‘)
166         {
167             goto Again;
168         }
169         if(Ques6==‘n‘)
170         {
171             goto Exit;
172         }
173         else
174         {
175             cout<<"输入有误,请重新输入:";
176         }
177     }
178 Exit:
179     return 0;
180 }

三、运行结果

四、总结

对于函数的使用不够娴熟,所以功能都是在主函数中实现的。

时间: 2024-10-12 08:19:46

四则运算四的相关文章

补结对编程(四则运算)

结对编程(四则运算)结对伙伴:刘芳芳.于淼主要用java实现编码内容:给小学生出题的四则运算四种运算1-加法2-减法3-乘法4-除法0-退出 四则运算PSP 类别 开始时间 结束时间 间隔时间 累计净时间 四则运算分析 7:30 8:00 0 30分 编码 8:00 10:43 0 2小时43分 总结 10:43 10:50 0 7分 补充代码函数进度 代码如下:循环遍历运算字符串: 1 private static String interceptOperation(String operat

补四则运算

给小学生出题的四则运算四种运算1-加法2-减法3-乘法4-除法0-退出四则运算PSP 类别 开始时间 结束时间 间隔时间 累计净时间 四则运算分析 7:30 8:00 0 30分 编码 8:00 10:43 0 2小时43分 总结 10:43 10:50 0 7分 补充代码函数进度 2.功能需求(1) 除法可以有余数,要求用户输入商和余数.注意被除数不能为0,除数要大于被除数:(2) 加法运算流程:系统出题,用户给出答案,若答案正确,询问用户是否继续?若用户回答继续,则出下一题,否则返回主菜单:

软件工程结对作业01

一.题目: 结对项目开发-四则运算四 把程序变成一个网页程序,用户通过设定参数,就可以得到各种题目,并可实现在线答题并评判. 注:这是一个两人结对开发的项目,开发人员:曾凯    刘雨鑫 二.程序设计思想: (1)功能分析: 1.这是一个可以在线答题的web版四则运算程序,用户可以通过设点一些参数来生成题目,然后回答这些题目,提交后程序检查回答的正确性,然后将题目的回答情况通过页面显示的方式反馈给用户. 2.由于参数设置导致交互不太方便,用户需要考虑参数如何搭配,由此实现按照年级答题,用户只需要

MathExam V2.0

# 隔壁村小学的小朋友都羡慕哭了2.0版 一.预估与实际 PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟) Planning 计划 15 20 ? Estimate ? 估计这个任务需要多少时间 800 1000 Development 开发 600 600 ? Analysis ? 需求分析 (包括学习新技术) 30 60 ? Design Spec ? 生成设计文档 20 30 ? Design Review ? 设计复审 1

结对作业---四则运算(Core 第四组)

----by core 第四组 ( 邹卫其 范力 ) 一.项目介绍 1. 能自动生成小学四则运算题目并给出答案,生成题目时可以选择下列参数: 1)生成题目数量 2)每道题目中运算数数量 3)运算数数值范围 4)运算符种类(  +  -  *  /  ^  ) 5)运算数类型(整数,小数,分数) 6)运算数精度(保留到小数点后几位) 2. 将四则运算的计算功能包装在一个模块中( Class或DLL) 3. 将Core模块通过一定的API 接口( Application Programming In

编译原理实战入门:用 JavaScript 写一个简单的四则运算编译器(四)结语

四则运算编译器,虽然说功能很简单,只能编译四则运算表达式.但是编译原理前端部分几乎都有涉及,词法分析,语法分析,还有代码生成. 再复杂的编译器.再简单的编译器,功能上是差不多的,只是复杂的编译器实现上会更困难. 这个系列的文章是为了帮助你入门,在这个基础上再去看编译原理相关书籍,不至于打瞌睡. 如果你对编译原理很有兴趣,并且想更深一步的学习,在这里强烈推荐你看一本书--我心目中的神书--<计算机系统要素-从零开始构建现代计算机>. 这本书神在哪? 神在它通俗易懂,对小白足够友好,但又不过分肤浅

作业四: 结对编程项目---四则运算

队友  史劭聪 import java.awt.BorderLayout; import java.awt.Container; import java.awt.FlowLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; im

作业四:结对编程——四则运算

项目名称:结对编程——四则运算(GUI) 同学小伙伴:张富彬 博客园地址:http://www.cnblogs.com/legend07/ GitHub代码地址:https://github.com/8561549/Arithmetic2.0/tree/master/Arithmetic2.0 需求分析: 首先是实现GUI的界面设计,主要有两个窗体,一个窗体进行参数设计,另一个窗体负责显示题目.两个窗体之间实现自由跳转.在参数设置窗口可以获取各个控件中的信息,能对出题窗口的出题情况进行限制,其中

作业四——结对编程四则运算

1. 结对编程项目---四则运算 此次编程项目的结队伙伴是方春阳 学号:130201129 计科13-1 博客地址 http://www.cnblogs.com/fcy29/ 根据要求我们设计了以下程序: 主界面: 在该页面下,可以看到此四则运算的主要功能,可以自行选择数的范围,系统默认值为1-100之间,超出这个范围并未得以实现,输入要生成题目的数量,然后按要求选择在算式中是否有乘除.负数.括号及真分数等功能,选择完成后,选好生成方式,点击确定.就可在框中自动生成算式.单击退出按钮便可退出该程