作业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 | 5 |
| Estimate | 估计这个任务需要多少时间,并规划大致工作步骤 | 8 | 15 |
| Development | 开发 | 120 | 125 |
| Analysis | 需求分析(包括学习新技术) | 15 | 5 |
| Design Spec | 生成设计文档 | 10 | 5 |
| Design Review | 设计复审 | 5 | 5 |
| Coding Standard | 代码规范 | 2 | 2 |
| Design | 具体设计 | 10 | 12 |
| Coding | 具体编码 | 40 | 45 |
| Code Review | 代码复审 | 5 | 7 |
| Test | 测试(自我测试,修改代码,提交修改) | 10 | 15 |
| Reporting | 报告 | 10 | 15 |
| Test Report | 测试报告 | 5 | 3 |
| Size Measurement | 计算工作量 | 4 | 3 |
| Postmortem & Process Improvement Plan | 事后总结,并提出过程改进计划 | 5 | 2 |

浙公网安备 33010602011771号