四则运算4

代码还未完全实现,暂且发布以下内容:

  1 //
  2 //四则运算04
  3
  4 import java.util.Scanner;
  5 public class Four_Operation_04 {
  6
  7     static Scanner in=new Scanner(System.in);//定义in为输入
  8
  9     public static void main(String[] args) {
 10         // TODO Auto-generated method stub
 11
 12         System.out.print("请选择:\n1.混合运算;\n2.简单运算。\n");
 13         int k=in.nextInt();                                //k:运算选择
 14         System.out.print("5.请输入打印数量:");
 15         int printNUM=in.nextInt();                         //printNUM:打印数量
 16         System.out.print("请选择:\n计算范围:");
 17         int numF=in.nextInt();                             //numF:计算范围
 18         System.out.print("2.请选择是否有乘除法:\n");
 19         System.out.print("(1):是            (2):否\n");
 20         int ccYN=in.nextInt();                             //ccYN:是否有乘除法
 21
 22         if(k==1)
 23         {
 24             operationComp(numF,ccYN);
 25         }
 26
 27         if(k==2)
 28         {
 29             operationInt(numF,ccYN,printNUM);
 30         }
 31     }
 32
 33     //简单运算
 34     public static void operationInt(int a1,int a2,int a4)
 35     {                               //计算范围   乘除法   打印数量
 36         int fir[]=new int[a4];//第一个数
 37         int mid[]=new int[a4]; //符号转化的中间变量
 38         char fh[]=new char[a4];//符号
 39         int sec[]=new int[a4];//第二个数
 40
 41         int T;//控制重新生成随机数的变量
 42
 43         for(int i=0;i<a4;i++)
 44         {
 45             T=0;
 46
 47             //随机产生
 48             fir[i]=(int)(Math.random()*a1);
 49             mid[i]=(int)(Math.random()*a1);
 50             if(a2==2)//没有乘除法
 51             {
 52                 mid[i]=mid[i]%2;
 53                 if(mid[i]==0)fh[i]=‘+‘;
 54                 if(mid[i]==1)fh[i]=‘-‘;
 55             }
 56             if(a2==1)//有乘除法
 57             {
 58                 mid[i]=mid[i]%4;
 59                 if(mid[i]==0)fh[i]=‘+‘;
 60                 if(mid[i]==1)fh[i]=‘-‘;
 61                 if(mid[i]==2)fh[i]=‘*‘;
 62                 if(mid[i]==3)fh[i]=‘/‘;
 63             }
 64             sec[i]=(int)(Math.random()*a1);
 65
 66             //减法不能有负数
 67             if(fh[i]==‘-‘)
 68             {
 69                 if(fir[i]-sec[i]<0)
 70                     T=1;
 71             }
 72
 73             //是否重复
 74             for(int j=i-1;j>=0;j--)
 75             {
 76                 if(fh[i]==fh[j])
 77                 {
 78                     //判断数字有无相同
 79                     if(fir[i]==fir[j]&&sec[i]==sec[j])
 80                         T=1;
 81                     //加法与乘法前后数字也不能都相同
 82                     if(fh[i]==‘+‘||fh[i]==‘/‘)
 83                     {
 84                         if(fir[i]==sec[j]&&sec[i]==fir[j])
 85                             T=1;
 86                     }
 87                 }
 88             }
 89             if(T==1)i--;
 90         }
 91
 92         //打印
 93         int R=0;
 94         for(int m=0;m<a4;m++)
 95         {
 96             System.out.print(fir[m]);
 97             System.out.print(fh[m]);
 98             System.out.print(sec[m]);
 99             System.out.print("=");
100             String r1=in.next();//用户输入答案
101             int r2=0;
102             String r3 = "";
103
104             if(fh[m]==‘+‘)
105             {
106                 r2=fir[m]+sec[m];
107                 r3=Integer.toString(r2);
108             }
109             if(fh[m]==‘-‘)
110             {
111                 r2=fir[m]-sec[m];
112                 r3=Integer.toString(r2);
113             }
114             if(fh[m]==‘*‘)
115             {
116                 r2=fir[m]*sec[m];
117                 r3=Integer.toString(r2);
118             }
119             if(fh[m]==‘/‘)
120             {
121                 if(fir[m]%sec[m]!=0)//除法运算有余数时,真分数输出
122                 {
123                     //判断能否化简
124                     for(int q=Math.min(fir[m],sec[m]);q>0;q--)
125                     {
126                         if(fir[m]%q==0&&sec[m]%q==0)
127                         {
128                             if(sec[m]/q==1)//当分母化简后等于1
129                                 r3=Integer.toString(fir[m]);
130                             else
131                                 r3=Integer.toString(fir[m]/q)+"/"+Integer.toString(sec[m]/q);
132                         }
133                     }
134
135                 }
136                 if(fir[m]%sec[m]==0)//除法运算没有余数时
137                 {
138                     r2=fir[m]/sec[m];
139                     r3=Integer.toString(r2);
140                 }
141             }
142
143             //判断结果与客户输入是否相同
144             if(r1.equals(r3))
145             {
146                 R++;
147                 System.out.print("正确!继续加油!\n\t^-^\n");
148             }
149             else
150             {
151                 System.out.print("错误!正确答案为:"+r3+"\n");
152             }
153         }
154         System.out.print("正确题目个数:"+R+"个。");
155     }
156     //混合运算
157         public static void operationComp(int b1,int b2)
158         {                               //计算范围   乘除法   负数
159             int num[]=new int[5];       //混合运算的数字部分
160             char fuh[]=new char[4];     //混合运算的符号部分
161             int mid1;                   //符号中间转换变量
162             System.out.print("请输入混合运算复杂度:\n");
163             int numope=in.nextInt();
164             int R=0;//统计计算正确题目个数
165             for(int k=0;k<5;k++)
166             {
167                 for(int j=0;j<4;j++)
168                 {
169                     mid1=(int)(Math.random()*100);
170                     if(b2==1)                        //有无乘除法
171                     {
172                         if(mid1%4==0)
173                             fuh[j]=‘+‘;
174                         if(mid1%4==1)
175                             fuh[j]=‘-‘;
176                         if(mid1%4==2)
177                             fuh[j]=‘*‘;
178                         if(mid1%4==3)
179                             fuh[j]=‘/‘;
180                     }
181                     if(b2==2)
182                     {
183                         if(mid1%2==0)
184                             fuh[j]=‘+‘;
185                         if(mid1%2==1)
186                             fuh[j]=‘-‘;
187                     }
188                 }
189                 for(int i=0;i<5;i++)
190                 {
191                     num[i]=(int)(Math.random()*b1);
192                     if(i>0)
193                     {
194                         if(fuh[i-1]==‘/‘)
195                         {
196                             while(num[i]==0)
197                             {
198                                 num[i]=(int)(Math.random()*b1);//除号后不能有0
199                             }
200                             if(num[i-1]%num[i]!=0)
201                             {
202                                 i=i-2;
203                             }
204                         }
205                     }
206                 }
207
208                 //打印
209                 int N=0;
210                 for(int n=0;n<numope-1;n++)
211                 {
212                     System.out.print(num[n]);
213                     System.out.print(fuh[n]);
214                     N++;
215                 }
216                 System.out.print(num[N]);
217                 System.out.print("=\n");
218
219                 //计算
220                 for(int js=0;js<numope-1;js++)
221                 {
222                     if(fuh[js]==‘*‘||fuh[js]==‘/‘)
223                     {
224                         if(fuh[js]==‘*‘)
225                             num[js+1]=num[js]*num[js+1];
226                         if(fuh[js]==‘/‘)
227                             num[js+1]=num[js]/num[js+1];
228                         num[js]=0;
229                         if(js>0)
230                             fuh[js]=fuh[js-1];
231                         if(js==0)
232                             fuh[js]=‘+‘;
233
234                     }
235                 }
236
237                 for(int js1=0;js1<numope-1;js1++)
238                 {
239                     if(fuh[js1]==‘+‘)
240                         num[js1+1]=num[js1]+num[js1+1];
241                     if(fuh[js1]==‘-‘)
242                         num[js1+1]=num[js1]-num[js1+1];
243                 }
244
245                 int innum=in.nextInt();
246                 if(innum==num[numope-1])
247                     R++;
248             }
249             System.out.print("正确题目个数:"+R);
250         }
251 }

时间: 2024-08-01 14:31:44

四则运算4的相关文章

自动生成小学四则运算题目(C语言)

这个简易四则运算是我在百度上找的博主叫53余雅诗的一篇c语言代码,网址为http://www.cnblogs.com/ys1101/p/4368103.html,功能是可以选择加减乘除进行简易的四则运算,判断对错.我在VS2017上编译没有bug,因为功能只有整数运算,所以我在此基础上加了真分数的四则运算以及统计得分等,最后成功运行程序.我把我的源代码放在github上,地址为https://github.com/xiaofancheng/helloworld.

四则运算题目生成程序

a.需求分析 看了大家对于本课程的目标和规划,很多同学都希望能提高自己的实践能力,没有捷径可走,就是练习.练习再练习!那么就从第一个个人项目开始吧,用一周的时间完成一个基于控制台的四则运算程序,实现一个自动生成小学四则运算题目的命令行程序 从<构建之法>第一章的 "程序" 例子出发,像阿超那样,花二十分钟写一个能自动生成小学四则运算题目的命令行 "软件",满足以下需求: 除了整数以外,还要支持真分数的四则运算,真分数的运算,例如:1/6 + 1/8 =

四则运算题目生成程序(基于控制台)

题目描述: 能自动生成小学四则运算题目的命令行 "软件",满足以下需求: 除了整数以外,还要支持真分数的四则运算,真分数的运算,例如:1/6 + 1/8 = 7/24 运算符为 +, ?, ×, ÷ 并且要求能处理用户的输入,并判断对错,打分统计正确率 要求能处理用户输入的真分数, 如 1/2, 5/12 等 使用 -n 参数控制生成题目的个数,例如执行下面命令将生成10个题目 功能设计: 1.  通过随机数的生成,实现+, ?, ×, ÷的确定 2.  +, ?, ×, ÷分别赋予整

第一周 结对编程四则运算

项目需求:程序随机生成四则运算计算题,并在用户填写答案后判断答案正误. 结对成员:李峤 任务分配:算法思想及采用的主要函数由李峤负责. 部分代码输入及结果测试由本人负责. 大体分成两个模块 :1.随机生成四则运算计算题 2.判断录入答案正误 主要代码如下: 1 #include<stdio.h> 2 #include<string.h> 3 #include<time.h> 4 #include<stdlib.h> 5 int main() 6 { 7 ch

判断随机生成的四则运算结果

功能:1.随机生成一个四则运算 2.用户输入式子结果后判断是否正确(结果取整) #include<stdio.h> #include<string.h> #include<stdlib.h> #include<stack> using namespace std; int n,t,n1; struct ZX { char a; bool b;//if b=0 括号 if b=1 数字 } ; stack<ZX>s1; void atersz(ZX

四则运算作业初步_064121陶源

这个四则运算的功能很有限,只能进行两个数的加减乘除四种运算,能显示最简分数结果,但没法将能化为整数的分数变成整数,比如6/3,最后会显示成2/1. 代码类型是C++,技巧上,参考了网上的operator重载操作符这个技巧,自己本不知道这个知识点. 分数化简的过程自己也是参考了其他资源,然后自己仔细阅读并理解,在旁边用例子注释. 编译平台是在Mac OS系统的Xcode上编译的,第一次在非vc++平台上编译. 代码:                                        

二柱子四则运算3

二柱子四则运算3 可怜的二柱子……又一次被坑了…… 老师又在上次的“二柱子四则运算2”的基础上增添了要求,如下: 1.学生写的程序必须能判定用户的输入答案是否正确.直到题目结束,告诉用户做对了几道题. 2.程序必须能处理四种运算的混合模式. 注意:连续的减法和除法,应该遵守左结合的规定. 连续除法要打括号,否则会引起歧义. 一.实验思路 二.实验源代码 三.实验总结和反思 最后,附上我和我的小伙伴的工作照……没有正脸.老师们不要介意啦啦啦~~~~ 小伙伴博客内容页:http://www.cnbl

软件工程第一次作业,小学生四则运算的出题程序

一.背景 阿超有个儿子上小学二年级,老师每天让家长给孩子出30道加减法题,虽然不多,但是每天都做也算是个负担,阿超作为一个老牌程序员当然想用计算机来解决这个小问题,目前对于这个问题对于任何语言都不是问题,比如: C/C++.C#.Java.Python.VB.JavaScript.Perl…… 具体要求如下: 能自动生成小学四则运算题目(注意是给小学生用的,要是结果出现负数的话他们会迷茫的!) 除了整数外,还要支持真分数的四则运算 请大家用任何一种自己擅长的语言来编写这段程序,并把程序的介绍和自

软件工程之四则运算--Github

由于现在配置问题,然后借用同学电脑将代码上传至Github,网址为:https://github.com/be821/RealFour 参考相关Github文档: 1. http://my.oschina.net/u/1050949/blog/194536?fromerr=IBt08Hdf 2. http://www.linuxidc.com/Linux/2013-06/85372p3.htm 3. http://blog.csdn.net/yanzi1225627/article/detail

四则运算封装

form1 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.IO; namespace 四则运算 { public partial class Form1