四则运算2

一.设计思路

1.输入

1)将条件以0和1的形式输入,通过判断0或1来执行相应的功能;

2.计算

1)建一个主类,在主类中编写方法,其中两个综合方法,分别为整数运算和分数运算,在这两个方法中再调用其他小函数,包括求运算符方法,最大公约数方法,输出方法。

2)是否有乘除法:如果有则将各种符号通过switch语句控制,产生0-4的随机数来控制输出加减法还是输出乘除法;如果没有有乘除法,将上边随机数的范围改为0-2。

3)加减有无负数:在求加减法的函数中加入switch语句,产生0-3的随机数,然后通过判断随机数来确定是否为负数;

5)除法有无余数:在求除法的函数中添加判断求余是否为0;

3.输出

在综合方法中调用输出函数,参数分别是参与运算的数,输出结果;

二.程序代码:

package sizeyunsuan;

import java.util.Random;
import java.util.Scanner;
public class FourOperations {
    public static void main(String[] args){
        Scanner in=new Scanner(System.in);
        FourOperations FO=new FourOperations();
        Random rand=new Random();

        System.out.println("请输入题目的数量:");
        int num=in.nextInt();

        System.out.println("是否有乘除法?(1:有 ,0:没有)");
        int select1=in.nextInt();

        System.out.println("加减有无负数?(1:有 ,0:没有)");
        int select2=in.nextInt();

        System.out.println("除法有无余数?(1:有 ,0:没有)");
        int select3=in.nextInt();

        System.out.println("请输入取值范围上限:");
        int random=in.nextInt();
        int n[]={0};
        for(int i=0;i<num+n[0];i++){
            int key=rand.nextInt();

            if(Math.abs(key%2)==0)
                FO.ZhengShu(n,select1,select2,select3,random);
            if(Math.abs(key%2)==1)
                FO.FenShu(n,select1,select2,select3,random);
        }
        in.close();
    }

    public String JiaJian(){
        String sign=null;
        Random rand=new Random();
        int mark=rand.nextInt();
        switch(Math.abs(mark%2))
        {
        case 0:sign = "+";break;
        case 1:sign = "-";break;
        }
        return sign;
    }
    public String ChengChu(){
        String sign=null;
        Random rand=new Random();
        int mark=rand.nextInt();
        switch(Math.abs(mark%4))
        {
        case 0:sign = "+";break;
        case 1:sign = "-";break;
        case 2:sign = "*";break;
        case 3:sign = "/";break;
        }
        return sign;
    }

    public void OutWay(String dividend,String sign,String divider){

        if(sign=="+")
            System.out.println(dividend + " + " + divider);
        if(sign=="-")
            System.out.println(dividend + "-" + "(" + divider + ")");
        if(sign=="*")
            System.out.println(dividend + " * " + divider);
        if(sign=="/")
            System.out.println(dividend + " / " + divider);

    }
    public void FenShu(int n[],int s1,int s2,int s3,int random){
        String dividend=null;
        String divider=null;
        FourOperations FO=new FourOperations();
        String sign=null;
        Random rand=new Random();
        int dividend1,divider1,dividend2,divider2;
        boolean index=false;

        dividend1=rand.nextInt(random);
        divider1=rand.nextInt(random);
        dividend2=rand.nextInt(random);
        divider2=rand.nextInt(random);
        String dd1=null,dd2=null,dr1=null,dr2=null;
        dd1=String.valueOf(dividend1);
        dd2=String.valueOf(dividend2);
        dr1=String.valueOf(divider1);
        dr2=String.valueOf(divider2);
        if((divider1==0)||(divider2==0)){
            n[0]++;
            index=true;
        }
        else{
            int gcd;
            gcd=GCD(dividend1,divider1);
            dividend1=dividend1/gcd;
            divider1=divider1/gcd;
            gcd=GCD(dividend2,divider2);
            dividend2=dividend2/gcd;
            divider2=divider2/gcd;
            if(s1==1)
                sign=FO.ChengChu();
            else
                sign=FO.JiaJian();
            if(s2==1){
                if(sign=="+"||sign=="-"){
                    int key1=rand.nextInt();
                    switch(Math.abs(key1%3)){
                    case 0:{dividend1=-dividend1;break;}
                    case 1:{dividend1=-dividend1;dividend2=-dividend2;break;}
                    case 2:{dividend2=-dividend2;break;}
                    }
                }
            }
            dividend=dd1+"/"+dr1;
            divider=dd2+"/"+dr2;
            if(sign=="/"){
                if(dividend2==0){
                    n[0]++;
                    index=true;
                }
                if(s3==0){
                    if((divider1*dividend2)%(dividend1*divider2)!=0){
                        n[0]++;
                        index=true;
                        }
                }
            }
            if(!index)
                OutWay(dividend,sign,divider);
        }

    }
    public void ZhengShu(int n[],int s1,int s2,int s3,int random){
        String divider=null;
        String dividend=null;

        FourOperations FO=new FourOperations();
        String sign=null;
        Random rand=new Random();
        int dividend1,divider1;
        dividend1=rand.nextInt(random);
        divider1=rand.nextInt(random);
        boolean index=false;
        if(s1==1)
            sign=FO.ChengChu();
        else
            sign=FO.JiaJian();
        if(s2==1){
            if((sign=="+")||(sign=="-")){
                int key1=rand.nextInt();
                switch(Math.abs(key1%3)){
                case 0:{dividend1=-dividend1;break;}
                case 1:{divider1=-divider1;break;}
                case 2:{dividend1=-dividend1;divider1=-divider1;break;}
                }
            }
        }
        dividend=String.valueOf(dividend1);
        divider=String.valueOf(divider1);
        if(sign=="/"){
            if(divider1==0){
                n[0]++;
                index=true;
            }
            if(s3==0){
                if((dividend1%divider1)!=0){
                    n[0]++;
                    index=true;
                }
            }
        }
        if(!index)
            OutWay(dividend,sign,divider);
    }

    public int GCD(int x,int y){

        int r;
        while(y>0){
            r=x%y;
            x=y;
            y=r;
        }
        return x;
    }
}

三.程序结果截图

4.项目计划总结

时间记录日志

缺陷记录日志

时间: 2024-10-09 03:40:27

四则运算2的相关文章

自动生成小学四则运算题目(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