作業要求來源:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE1/homework/2166
一、題目要求:
像《建構之法》的人物阿超那樣,寫一個能自動生成國小四則運算題目的指令行 “軟體”。
具體要求:任何程式設計語言都可以,指令行程式接受一個數字輸入,然後輸出相應數目的四則運算題目和答案。例如輸入數字是 30, 那就輸出 30 道題目和答案。 運算式子必須至少有兩個運算符,運算數字是在 100 之内的正整數,答案不能是負數。 如:
23 - 3 * 4 = 11
擴充要求:
1) 要求能出和真分數 (二分之一, 十二分之五,等)相關的練習題。
2) 并且要求能處理使用者的輸入,并判斷對錯,打分統計。 要求能處理使用者輸入的真分數, 如 1/2, 5/12 等。
二、耗時統計表(/min):
PSP2.1 | Personal Software Process Stages | Time Senior Student | Time |
Planning | 計劃 | 15 | 8 |
Estimate | 估計這個任務需要多少時間 | 180 | 240 |
Development | 開發 | 60 | 50 |
Analysis | 需求分析 (包括學習新技術) | 10 | 12 |
Design Spec | 生成設計文檔 | 20 | 21 |
Design Review | 設計複審 | 18 | 35 |
Coding Standard | 代碼規範 | 48 | |
Design | 具體設計 | 38 | 42 |
Coding | 具體編碼 | 52 | 120 |
Code Review | 代碼複審 | 45 | 56 |
Test | 測試(自我測試,修改代碼,送出修改) | 36 | |
Reporting | 報告 | 33 | 26 |
測試報告 | 14 | 23 | |
計算工作量 | |||
并提出過程改進計劃 | 30 | 32 |
三、部分代碼:
//讓使用者輸入想要出的題的數字的位數
System.out.println("當M=10時表示一位數的加減運算,M=100時表示兩位數的加減運算...請選擇");
int M=in.nextInt();
an.setM(M);
System.out.println("請輸入需要列印多少道題:");
int N=in.nextInt();
an.setN(N);
an.Showme();
//輸出加減的運算題,并且輸出答案
class Jiajian extends Yunsuan
{
public char o[]={'+','-'};
public void Showme()
{
for(int i=0;i<N;i++)
{
// for(int j=0;j<10;j++)
// {
int a=(int)(Math.random()*M)+1;//随機數種子 *M+1,加一表示非0
int b=(int)(Math.random()*M)+1;
int c=(int)(Math.random()*2);
System.out.print(a);
System.out.print(o[c]);
System.out.print(b+"="+(a+b));
// }
System.out.println();
}
}
}
class Chengchu extends Yunsuan
{
public char p[]={'*','/'};
// public char p_1='*';
public void Showme()
{
for(int i=0;i<N;i++)
{
// for(int j=0;j<10;j++)
// {
int a=(int)(Math.random()*M)+1;
int b=(int)(Math.random()*M)+1;
int c=(int)(Math.random()*2);
System.out.print(a);
System.out.print(p[c]);
if(p[c]=='*') {
System.out.print(b + "=" + (a * b));
System.out.println();
}
else {
double d=a;
double e=b;
double g=d/e;
double f=(double)Math.round(g*100)/100;
System.out.print(b + "="+f );
System.out.println();
}
// }
}
}
}
四、運作結果:
實作四則運算的出題和輸出答案,給使用者
