四则运算作业

博客班级 计算机18级
作业要求 要求
作业目标 会编写四则运算代码
学号 3180701213
题目要求:
写一个能自动生成小学四则运算题目的程序,然后在此基础上扩展:

除了整数以外,还要支持真分数的四则运算,例如:1/6+1/8=7/24
程序要求能处理用户的输入,判断对错,累积分数
程序支持可以由用户自行选择加、减、乘、除运算
使用-n参数控制生成题目的个数,例如Myapp.exe -n 10,将生成10个题目
整数加法:
"public static void intAdd() {
int x1=(int)(Math.random()100);
int x2=(int)(Math.random()
100);
int answer=x1+x2;
int myAnswer=0;//正确答案
System.out.printf("%d+%d=?\n",x1,x2);
System.out.println("请输入你的答案:");
Scanner s1=new Scanner(System.in);
myAnswer=s1.nextInt();
if(myAnsweranswer) {
n1=n1+1;
score=(float)n1/n100;
System.out.println("恭喜你答对了");
System.out.printf("累计得分%.2f",score);
}
else {
score=(float)n1/n
100;
System.out.printf("抱歉你答错了,正确答案是:%d",answer);
System.out.printf("累计得分%.2f",score);
}
}"
整数减法:
"public static void intSub() {
int x1=(int)(Math.random()100);
int x2=(int)(Math.random()
100);
int answer=x1-x2;
int myAnswer=0;
System.out.printf("%d-%d=?\n",x1,x2);
System.out.println("请输入你的答案:");
Scanner s2=new Scanner(System.in);
myAnswer=s2.nextInt();
if(myAnswer
answer) {
n1=n1+1;
score=(float)n1/n100;
System.out.println("恭喜你答对了");
System.out.printf("累计得分%.2f",score);
}
else {
score=(float)n1/n
100;
System.out.printf("抱歉你答错了,正确答案是:%d",answer);
System.out.printf("累计得分%.2f",score);
}
} "
整数乘法:
"public static void intMul() {
int x1=(int)(Math.random()100);
int x2=(int)(Math.random()
100);
int answer=x1x2;
int myAnswer=0;
System.out.printf("%d
%d=?\n",x1,x2);
System.out.println("请输入你的答案:");
Scanner s3=new Scanner(System.in);
myAnswer=s3.nextInt();
if(myAnsweranswer) {
n1=n1+1;
score=(float)n1/n100;
System.out.println("恭喜你答对了");
System.out.printf("累计得分%.2f",score);
}
else {
score=(float)n1/n
100;
System.out.printf("抱歉你答错了,正确答案是:%d",answer);
System.out.printf("累计得分%.2f",score);
}
}"
整数除法:
"public static void intDiv() {
int x1=(int)(Math.random()*100);
int x2=0;
while(x2
0) {
x2=(int)(Math.random()100);
}
float answer=(float)x1/x2;
float myAnswer=0;
System.out.printf("%d/%d=?\n",x1,x2);
System.out.println("请输入你的答案:");
Scanner s4=new Scanner(System.in);
myAnswer=s4.nextFloat();
//保留两位小数
BigDecimal b=new BigDecimal(answer);
float answer1=b.setScale(2,BigDecimal.ROUND_HALF_UP).floatValue();
if(myAnswer==answer1) {
n1=n1+1;
score=(float)n1/n
100;
System.out.println("恭喜你答对了");
System.out.printf("累计得分%.2f",score);
}
else {
score=(float)n1/n100;
System.out.printf("抱歉你答错了,正确答案是:%.2f",answer);
System.out.printf("累计得分%.2f",score);
}
}"
分数加法:
"public static void decimalAdd() {
int x1=(int)(Math.random()
50)+1;
int x2=(int)(Math.random()50)+1;
int y1=(int)(Math.random()
50)+1;
int y2=(int)(Math.random()50)+1;
int answer=0;
int answer1=0;
answer=x1
y2+y1x2;//答案分子
answer1=x2
y2;//答案分母
System.out.printf("%d/%d+%d/%d=?\n",x1,x2,y1,y2);
System.out.println("请输入你的答案:");
Scanner s5=new Scanner(System.in);
String str=s5.nextLine();
char[] a=str.toCharArray();
int sum=0;//输入的分数是字符串sum表示'/'所在的位置
for(int i=0;i<a.length;i++) {
if(a[i]'/')
{
break;
}
sum++;
}
String f1=str.substring(0, sum);
String f2=str.substring(sum+1,str.length());
int num1=Integer.parseInt(f1);//输入的分子
int num2=Integer.parseInt(f2);//输入的分母
if((answer/num1)
(answer1/num2)) {
n1=n1+1;
score=(float)n1/n100;
System.out.println("恭喜你答对了");
System.out.printf("累计得分%.2f",score);
}
else {
score=(float)n1/n
100;
System.out.printf("抱歉你答错了,正确答案是:%d/%d",answer,answer1);
System.out.printf("累计得分%.2f",score);
}
}"
分数减法:
"public static void decimalSub() {
int x1=(int)(Math.random()50)+1;
int x2=(int)(Math.random()
50)+1;
int y1=(int)(Math.random()50)+1;
int y2=(int)(Math.random()
50)+1;
int answer=0;
int answer1=0;
answer=x1y2-y1x2;//答案分子
answer1=x2y2;//答案分母
System.out.printf("%d/%d-%d/%d=?\n",x1,x2,y1,y2);
System.out.println("请输入你的答案:");
Scanner s6=new Scanner(System.in);
String str=s6.nextLine();
char[] a=str.toCharArray();
int sum=0;//输入的分数是字符串sum表示'/'所在的位置
for(int i=0;i<a.length;i++) {
if(a[i]'/')
{
break;
}
sum++;
}
String f1=str.substring(0, sum);
String f2=str.substring(sum+1,str.length());
int num1=Integer.parseInt(f1);//输入的分子
int num2=Integer.parseInt(f2);//输入的分母
if((answer/num1)
(answer1/num2)) {
n1=n1+1;
score=(float)n1/n
100;
System.out.println("恭喜你答对了");
System.out.printf("累计得分%.2f",score);
}
else {
score=(float)n1/n100;
System.out.printf("抱歉你答错了,正确答案是:%d/%d",answer,answer1);
System.out.printf("累计得分%.2f",score);
}
}"
分数乘法:
"public static void decimalMul() {
int x1=(int)(Math.random()
50)+1;
int x2=(int)(Math.random()50)+1;
int y1=(int)(Math.random()
50)+1;
int y2=(int)(Math.random()50)+1;
int answer=0;
int answer1=0;
answer=x1
y1;//答案分子
answer1=x2y2;//答案分母
System.out.printf("%d/%d×%d/%d=?\n",x1,x2,y1,y2);
System.out.println("请输入你的答案:");
Scanner s7=new Scanner(System.in);
String str=s7.nextLine();
char[] a=str.toCharArray();
int sum=0;//输入的分数是字符串sum表示'/'所在的位置
for(int i=0;i<a.length;i++) {
if(a[i]'/')
{
break;
}
sum++;
}
String f1=str.substring(0, sum);
String f2=str.substring(sum+1,str.length());
int num1=Integer.parseInt(f1);//输入的分子
int num2=Integer.parseInt(f2);//输入的分母
if((answer/num1)
(answer1/num2)) {
n1=n1+1;
score=(float)n1/n
100;
System.out.println("恭喜你答对了");
System.out.printf("累计得分%.2f",score);
}
else {
score=(float)n1/n100;
System.out.printf("抱歉你答错了,正确答案是:%d/%d",answer,answer1);
System.out.printf("累计得分%.2f",score);
}
}"
分数除法:
"public static void decimalDiv() {
int x1=(int)(Math.random()
50)+1;
int x2=(int)(Math.random()50)+1;
int y1=(int)(Math.random()
50)+1;
int y2=(int)(Math.random()50)+1;
int answer=0;
int answer1=0;
answer=x1
y2;//答案分子
answer1=x2y1;//答案分母
System.out.printf("%d/%d÷%d/%d=?\n",x1,x2,y1,y2);
System.out.println("请输入你的答案:");
Scanner s6=new Scanner(System.in);
String str=s6.nextLine();
char[] a=str.toCharArray();
int sum=0;//输入的分数是字符串sum表示'/'所在的位置
for(int i=0;i<a.length;i++) {
if(a[i]'/')
{
break;
}
sum++;
}
String f1=str.substring(0, sum);
String f2=str.substring(sum+1,str.length());
int num1=Integer.parseInt(f1);//输入的分子
int num2=Integer.parseInt(f2);//输入的分母
if((answer/num1)
(answer1/num2)) {
n1=n1+1;
score=(float)n1/n
100;
System.out.println("恭喜你答对了");
System.out.printf("累计得分%.2f",score);
}
else {
score=(float)n1/n100;
System.out.printf("抱歉你答错了,正确答案是:%d/%d",answer,answer1);
System.out.printf("累计得分%.2f",score);
}
}"
主函数:
"public static void main(String[] args) {
Scanner s=new Scanner(System.in);
n=s.nextInt();
int type;//随机选择题目的类型
for(int i=0;i<n;i++) {
type=(int)(Math.random()
10)%8;//随机产生0到7的整数
switch(type) {
case 0://整数加法
Operations.intAdd();
System.out.println("\n");
break;
case 1://整数减法
Operations.intSub();
System.out.println("\n");
break;
case 2://整数乘法
Operations.intMul();
System.out.println("\n");
break;
case 3://整数除法
Operations.intDiv();
System.out.println("\n");
break;
case 4://分数加法
Operations.decimalAdd();
System.out.println("\n");
break;
case 5://分数减法
Operations.decimalSub();
System.out.println("\n");
break;
case 6://分数乘法
Operations.decimalMul();
System.out.println("\n");
break;
case 7://分数除法
Operations.decimalDiv();
System.out.println("\n");
break;
}//switch
}//for
}//main"
运行结果:

源码:
"package homework;
import java.util.Scanner;
import java.math.BigDecimal;
public class Operations {
static int n=0;//题目的个数
static int n1=0;//答对题目的个数
static float score=0;//得分
public static void intAdd() {
int x1=(int)(Math.random()100);
int x2=(int)(Math.random()
100);
int answer=x1+x2;
int myAnswer=0;//正确答案
System.out.printf("%d+%d=?\n",x1,x2);
System.out.println("请输入你的答案:");
Scanner s1=new Scanner(System.in);
myAnswer=s1.nextInt();
if(myAnsweranswer) {
n1=n1+1;
score=(float)n1/n100;
System.out.println("恭喜你答对了");
System.out.printf("累计得分%.2f",score);
}
else {
score=(float)n1/n
100;
System.out.printf("抱歉你答错了,正确答案是:%d",answer);
System.out.printf("累计得分%.2f",score);
}
}
public static void intSub() {
int x1=(int)(Math.random()100);
int x2=(int)(Math.random()
100);
int answer=x1-x2;
int myAnswer=0;
System.out.printf("%d-%d=?\n",x1,x2);
System.out.println("请输入你的答案:");
Scanner s2=new Scanner(System.in);
myAnswer=s2.nextInt();
if(myAnswer
answer) {
n1=n1+1;
score=(float)n1/n100;
System.out.println("恭喜你答对了");
System.out.printf("累计得分%.2f",score);
}
else {
score=(float)n1/n
100;
System.out.printf("抱歉你答错了,正确答案是:%d",answer);
System.out.printf("累计得分%.2f",score);
}
}
public static void intMul() {
int x1=(int)(Math.random()100);
int x2=(int)(Math.random()
100);
int answer=x1x2;
int myAnswer=0;
System.out.printf("%d
%d=?\n",x1,x2);
System.out.println("请输入你的答案:");
Scanner s3=new Scanner(System.in);
myAnswer=s3.nextInt();
if(myAnsweranswer) {
n1=n1+1;
score=(float)n1/n100;
System.out.println("恭喜你答对了");
System.out.printf("累计得分%.2f",score);
}
else {
score=(float)n1/n
100;
System.out.printf("抱歉你答错了,正确答案是:%d",answer);
System.out.printf("累计得分%.2f",score);
}
}
public static void intDiv() {
int x1=(int)(Math.random()*100);
int x2=0;
while(x2
0) {
x2=(int)(Math.random()100);
}
float answer=(float)x1/x2;
float myAnswer=0;
System.out.printf("%d/%d=?\n",x1,x2);
System.out.println("请输入你的答案:");
Scanner s4=new Scanner(System.in);
myAnswer=s4.nextFloat();
//保留两位小数
BigDecimal b=new BigDecimal(answer);
float answer1=b.setScale(2,BigDecimal.ROUND_HALF_UP).floatValue();
if(myAnswer==answer1) {
n1=n1+1;
score=(float)n1/n
100;
System.out.println("恭喜你答对了");
System.out.printf("累计得分%.2f",score);
}
else {
score=(float)n1/n100;
System.out.printf("抱歉你答错了,正确答案是:%.2f",answer);
System.out.printf("累计得分%.2f",score);
}
}
public static void decimalAdd() {
int x1=(int)(Math.random()
50)+1;
int x2=(int)(Math.random()50)+1;
int y1=(int)(Math.random()
50)+1;
int y2=(int)(Math.random()50)+1;
int answer=0;
int answer1=0;
answer=x1
y2+y1x2;//答案分子
answer1=x2
y2;//答案分母
System.out.printf("%d/%d+%d/%d=?\n",x1,x2,y1,y2);
System.out.println("请输入你的答案:");
Scanner s5=new Scanner(System.in);
String str=s5.nextLine();
char[] a=str.toCharArray();
int sum=0;//输入的分数是字符串sum表示'/'所在的位置
for(int i=0;i<a.length;i++) {
if(a[i]'/')
{
break;
}
sum++;
}
String f1=str.substring(0, sum);
String f2=str.substring(sum+1,str.length());
int num1=Integer.parseInt(f1);//输入的分子
int num2=Integer.parseInt(f2);//输入的分母
if((answer/num1)
(answer1/num2)) {
n1=n1+1;
score=(float)n1/n100;
System.out.println("恭喜你答对了");
System.out.printf("累计得分%.2f",score);
}
else {
score=(float)n1/n
100;
System.out.printf("抱歉你答错了,正确答案是:%d/%d",answer,answer1);
System.out.printf("累计得分%.2f",score);
}
}
public static void decimalMul() {
int x1=(int)(Math.random()50)+1;
int x2=(int)(Math.random()
50)+1;
int y1=(int)(Math.random()50)+1;
int y2=(int)(Math.random()
50)+1;
int answer=0;
int answer1=0;
answer=x1y1;//答案分子
answer1=x2
y2;//答案分母
System.out.printf("%d/%d×%d/%d=?\n",x1,x2,y1,y2);
System.out.println("请输入你的答案:");
Scanner s7=new Scanner(System.in);
String str=s7.nextLine();
char[] a=str.toCharArray();
int sum=0;//输入的分数是字符串sum表示'/'所在的位置
for(int i=0;i<a.length;i++) {
if(a[i]'/')
{
break;
}
sum++;
}
String f1=str.substring(0, sum);
String f2=str.substring(sum+1,str.length());
int num1=Integer.parseInt(f1);//输入的分子
int num2=Integer.parseInt(f2);//输入的分母
if((answer/num1)
(answer1/num2)) {
n1=n1+1;
score=(float)n1/n100;
System.out.println("恭喜你答对了");
System.out.printf("累计得分%.2f",score);
}
else {
score=(float)n1/n
100;
System.out.printf("抱歉你答错了,正确答案是:%d/%d",answer,answer1);
System.out.printf("累计得分%.2f",score);
}
}
public static void decimalSub() {
int x1=(int)(Math.random()50)+1;
int x2=(int)(Math.random()
50)+1;
int y1=(int)(Math.random()50)+1;
int y2=(int)(Math.random()
50)+1;
int answer=0;
int answer1=0;
answer=x1y2-y1x2;//答案分子
answer1=x2y2;//答案分母
System.out.printf("%d/%d-%d/%d=?\n",x1,x2,y1,y2);
System.out.println("请输入你的答案:");
Scanner s6=new Scanner(System.in);
String str=s6.nextLine();
char[] a=str.toCharArray();
int sum=0;//输入的分数是字符串sum表示'/'所在的位置
for(int i=0;i<a.length;i++) {
if(a[i]'/')
{
break;
}
sum++;
}
String f1=str.substring(0, sum);
String f2=str.substring(sum+1,str.length());
int num1=Integer.parseInt(f1);//输入的分子
int num2=Integer.parseInt(f2);//输入的分母
if((answer/num1)
(answer1/num2)) {
n1=n1+1;
score=(float)n1/n
100;
System.out.println("恭喜你答对了");
System.out.printf("累计得分%.2f",score);
}
else {
score=(float)n1/n100;
System.out.printf("抱歉你答错了,正确答案是:%d/%d",answer,answer1);
System.out.printf("累计得分%.2f",score);
}
}
public static void decimalDiv() {
int x1=(int)(Math.random()
50)+1;
int x2=(int)(Math.random()50)+1;
int y1=(int)(Math.random()
50)+1;
int y2=(int)(Math.random()50)+1;
int answer=0;
int answer1=0;
answer=x1
y2;//答案分子
answer1=x2y1;//答案分母
System.out.printf("%d/%d÷%d/%d=?\n",x1,x2,y1,y2);
System.out.println("请输入你的答案:");
Scanner s6=new Scanner(System.in);
String str=s6.nextLine();
char[] a=str.toCharArray();
int sum=0;//输入的分数是字符串sum表示'/'所在的位置
for(int i=0;i<a.length;i++) {
if(a[i]'/')
{
break;
}
sum++;
}
String f1=str.substring(0, sum);
String f2=str.substring(sum+1,str.length());
int num1=Integer.parseInt(f1);//输入的分子
int num2=Integer.parseInt(f2);//输入的分母
if((answer/num1)
(answer1/num2)) {
n1=n1+1;
score=(float)n1/n
100;
System.out.println("恭喜你答对了");
System.out.printf("累计得分%.2f",score);
}
else {
score=(float)n1/n100;
System.out.printf("抱歉你答错了,正确答案是:%d/%d",answer,answer1);
System.out.printf("累计得分%.2f",score);
}
}
public static void main(String[] args) {
Scanner s=new Scanner(System.in);
n=s.nextInt();
int type;//随机选择题目的类型
for(int i=0;i<n;i++) {
type=(int)(Math.random()
10)%8;//随机产生0到7的整数
switch(type) {
case 0://整数加法
Operations.intAdd();
System.out.println("\n");
break;
case 1://整数减法
Operations.intSub();
System.out.println("\n");
break;
case 2://整数乘法
Operations.intMul();
System.out.println("\n");
break;
case 3://整数除法
Operations.intDiv();
System.out.println("\n");
break;
case 4://分数加法
Operations.decimalAdd();
System.out.println("\n");
break;
case 5://分数减法
Operations.decimalSub();
System.out.println("\n");
break;
case 6://分数乘法
Operations.decimalMul();
System.out.println("\n");
break;
case 7://分数除法
Operations.decimalDiv();
System.out.println("\n");
break;
}//switch
}//for
}//main
}
"
总结:总的来说题目不算太难,这个题目为我新学的java语言复习了一遍,尤其是字符串和数字操作。

psp2.1 任务内容 计划完成需要的时间 实际完成需要的时间
planning 计划 15 14
estimate 估计这个任务需要多少时间,并规划大致工作步骤 15 30
development 开发 20 25
analysis 需求分析 16 8
design spec 生成设计文档 21 12
design review 设计复审 6 5
coding standard 代码规范 5 3
design 具体设计 10 16
coding 具体编码 35 37
code review 代码复审 6 8
test 测试 10 6
reporting 报告 6 8
test reporting 测试报告 3 2
size measurement 计算工作量 3 2
postmortem & process improvement plan 总结并提出改进计划 5 8
posted @ 2020-11-07 19:51  592晚安  阅读(142)  评论(0)    收藏  举报