Fork me on GitHub

作业1-四则运算

| 这个作业属于哪个课程 | <https://edu.cnblogs.com/campus/ahgc/AHPU-SE-19/> |  

|----------------------- |------------------------------|   

| 这个作业要求在哪里 | <https://edu.cnblogs.com/campus/ahgc/AHPU-SE-19/homework/11376> |  

| 这个作业的目标 | <写一则四则运算的代码,并且通过这次的编写学会如何去开发一个程序的过程,对每个环节有一个初步的了解,并且通过规范的流程去完成(小型简单的)程序 > |  

| 学号 | <3190704106> |  

package exp13;

public class ChangeToFenshuDemo {
	public static int getGongYueShu(int a, int b) {//求两个数的最大公约数  
        int t = 0;  
        if(a < b){  
        t = a;  
        a = b;  
        b = t;  
        }  
        int c = a % b;  
        if(c == 0){  
            return b;  
        }else{  
            return getGongYueShu(b, c);  
        }  
    }  

    public static String toFenshu(String xiaoshu) {   //转化为分数
  
        String[] array = new String[2];  
        array = xiaoshu.split("\\.");  
        int a = Integer.parseInt(array[0]);//获取整数部分  
        int b = Integer.parseInt(array[1]);//获取小数部分  
        int length = array[1].length();  
        int FenZi = (int) (a * Math.pow(10, length) + b);  
        int FenMu = (int) Math.pow(10, length);  
        int MaxYueShu = getGongYueShu(FenZi, FenMu);  
        return new String(FenZi / MaxYueShu + "/" + FenMu / MaxYueShu);  
    }  
  

}

  

package exp13;

import java.util.Scanner;
public class CT {
	public static String str = "";
    public static int num = 5;
    public static int num_i = 0;
    public static int numberRange = 100;
    public static double sum = 0;
private static void Get1() {
        str = "";
        sum = 0;
        num_i = num;//清零
        Produce1(); 
    }
    
    private static void Get2() {
    	str = "";
        sum = 0;
        num_i = num;//清零
        Produce2();
    }

    private static void Produce1() {
        //
        if( num_i > 1 ) {
            int j = num_i;//记录这是第几层调用。
            num_i--;
            Produce1();//递归
            
            int w=1+(int)(Math.random()*numberRange);//随机生成一个数
            int t=1+(int)(Math.random()*100);
            int f=1+(int)(Math.random()*100);//运算符控制
            
            if(t>50)//新数往右加
            {
                if(f>50) {
                    sum = sum + w;
                    str = str + "+" + String.valueOf( w );
                }
                else {
                    sum = sum - w;
                    str = str + "-" + String.valueOf( w );        
                }
            }
            else//否则 新数往左加
            {
                if(f>50) {
                    sum = w + sum;
                    str = String.valueOf( w ) + "+" + str;    
                }
                else {
                    if( j < 3 ) {
                        sum = w - sum;
                        str = String.valueOf( w ) + "-" + str;
                    }
                    else {
                        sum = w - sum;
                        str = String.valueOf( w ) + "-" + "(" +str+ ")";
                        //向左添减法的时候加括号,打破顺序计算模式。
                    }
                }
            }
        }
        else if( num_i == 1 ) {
            //最后一层,也是输出的第一层
            int w=1+(int)(Math.random()*numberRange);
            sum = sum + w;
            str = str + String.valueOf( w );
        }
    }
    
    private static void Produce2() {
    	if( num_i > 1 ) {
            int j = num_i;//记录这是第几层调用。
            num_i--;
            Produce2();//递归
            
            double w=Math.random();//随机生成一个数
            int t=1+(int)(Math.random()*100);//向左生成,还是向右生成,类似于树。
            int f=1+(int)(Math.random()*100);//运算符控制
            
            if(t>50)//新数往右加
            {
                if(f>50) {
                    sum = sum + w;
                    str = str + "+" + ChangeToFenshuDemo.toFenshu((""+(w+0.01)).substring(0, 4));
                }
                else {
                    sum = sum - w;
                    str = str + "-" + ChangeToFenshuDemo.toFenshu((""+(w+0.01)).substring(0, 4));        
                }
            }
            else//否则 新数往左加
            {
                if(f>50) {
                    sum = w + sum;
                    str = ChangeToFenshuDemo.toFenshu((""+(w+0.01)).substring(0, 4)) + "+" + str;    
                }
                else {
                    if( j < 3 ) {
                        sum = w - sum;
                        str = ChangeToFenshuDemo.toFenshu((""+(w+0.01)).substring(0, 4)) + "-" + str;
                    }
                    else {
                        sum = w - sum;
                        str = ChangeToFenshuDemo.toFenshu((""+(w+0.01)).substring(0, 4)) + "-" + "(" +str+ ")";
                        //向左添减法的时候加括号,打破顺序计算模式。
                    }
                }
            }
        }
        else if( num_i == 1 ) {
            //最后一层,也是输出的第一层
            double w=Math.random();
            sum = sum + w;
            str = str + ChangeToFenshuDemo.toFenshu((""+(w+0.01)).substring(0, 4));
        }
	}

	public static void main(String[] args) {
	    System.out.println("共10道题目:");
		System.out.println("请输入你计算的正确答案");
		System.out.println("注意:结果保留1位小数!");
		Scanner in = new Scanner(System.in);
		double answer = 0;
		double result = 0;
		String[] question = new String[10];
		int Number = 0;
		int answerTrue = 0;
		boolean flag;
		for(;;) {
			answer = 0; result = 0; flag = true; str="";
			if((Number + 1)%5 != 0) {
				Get1();
			} else {
				Get2();
			}
			for(int j = Number-1; j >= 0; j --) {
				if(question[j].equals(str)) {
					flag = false; break;
				}
			}
			if(!flag) continue;
			else {question[Number] = new String(str); Number++;}
			System.out.print("" + Number + ". " + str+" = ");
			answer = in.nextDouble();
			if(!str.isEmpty()) {
				result = Arithmetic.arithmetic(str);
			}
			if(answer == result) {
				System.out.println("   ");
				answerTrue++;
			} else {
				System.out.println("    " + "  正确答案:" + result);
			}
			
			if(Number == 10) break;         // 满10个跳出
		}
		
		System.out.println("你的正确概率:" + answerTrue + "/10");
		in.close();
	}
	
}  

 

 

psp2.1 任务内容 计划完成需要的时间(min) 实际完成需要的时间(min)
Planning 计划 5
Estimate 估计这个任务需要多少时间,并规划大致工作步骤 8 15
Development 开发 120 125
Analysis 需求分析(包括学习新技术) 15
Design Spec 生成设计文档 10
Design Review 设计复审 5
Coding Standard 代码规范 2
Design 具体设计 10 12 
Coding 具体编码 40 45
Code Review 代码复审 5
Test 测试(自我测试,修改代码,提交修改) 10 15 
Reporting 报告 10 15 
Test Report 测试报告 5 3
Size Measurement 计算工作量 4
Postmortem & Process Improvement Plan 事后总结,并提出过程改进计划 5
posted @ 2020-10-26 20:05  serin  阅读(233)  评论(0)    收藏  举报