四则运算

微信扫一扫,分享到朋友圈

四则运算

博客班级 AHPU软件工程
作业要求 实现小学四则运算并优化
作业目标 熟练掌握代码编写
学号 3180701209

目录

作业目标

写一个能自动生成小学四则运算题目的程序,然后在此基础上扩展:

1)除了整数以外,还要支持真分数的四则运算,例如:1/6+1/8=7/24

2)程序要求能处理用户的输入,判断对错,累积分数

3)程序支持可以由用户自行选择加、减、乘、除运算

4)使用-n参数控制生成题目的个数,例如Myapp.exe -n 10,将生成10个题目

代码

定义变量

Scanner input=new Scanner(System.in);
double count;
int answer,answer1,answer2;
int a;//运算式第一个数字
int b;//运算式第二个数字
int sum;
int[] data=new int[10];//结果数组
int[] data1=new int[10];
int[] data2=new int[10];
String[] data3=new String[30];//运算符数组
int m=10;
int num,num1,num2,num3;

加法

public   void add() {
System.out.println("选择你要做题数目");
Scanner intput=new Scanner(System.in);
num=intput.nextInt();
int i;
for(i=0;i<num/2;i++) {
b=(int) Math.round(Math.random()*10);
a=(int) Math.round(Math.random()*10);
sum=a+b;
data[i]=sum;
data1[i]=a;
data2[i]=b;
data3[i]="+";
}
int a=num-i;
int b=i;
for(;i<b+2*a-1;i+=2)
{
data1[i]=(int) Math.round(Math.random()*10);
data1[i+1]=(int) Math.round(Math.random()*10)+data1[1];
data2[i]=(int) Math.round(Math.random()*10);
data2[i+1]=(int) Math.round(Math.random()*10)+data1[1];
data[i]=(data1[i]*data2[i+1])+(data1[i+1]*data2[i]);
data[i+1]=data1[i+1]*data2[i+1];
int num=data[i]<data[i+1]? data[i]:data[i+1];
int maxb=1;
for (int k = num; k >=2; k--) {
if (data[i]%k==0 && data[i+1]%k==0) {
maxb*=k;
data[i]=data[i]/k;
data[i+1]=data[i+1]/k;
}
}
}
int j;
for(j=0;j<num/2;j++)
{
System.out.print(data1[j]+"+");
System.out.print(data2[j]);
System.out.print("=");
answer1=input.nextInt();
if(answer1==data[j])
{
System.out.println("恭喜答案正确");
count++;
}else {
System.out.println("答案错误");
}
}
b=j;
for(;j<b+2*a-1;j+=2)
{
System.out.print(data1[j]+"/"+data1[j+1]+"+"+data2[j]+"/"+data2[j+1]+"=");
answer1=input.nextInt();
System.out.print("/");
answer2=input.nextInt();
if(answer1==data[j]&&answer2==data[j+1])
{
System.out.println("恭喜答案正确");
count++;
}else {
System.out.println("答案错误");
}
}
System.out.println("一共答对"+count+"道题目");
}

减法

public void min() {
System.out.println("选择你要做题数目");
Scanner intput=new Scanner(System.in);
int num1=intput.nextInt();
if(num1<m-num) {
for(int i=0;i<num1;i++) {
a=(int)(Math.random()*100);
b=(int)(Math.random()*100);
sum=a-b;
data[i]=sum;
data1[i]=a;
data2[i]=b;
data3[i]="-";
}
for(int i=0;i<num1;i++)
{
System.out.print(data1[i]+"-");
System.out.print(data2[i]);
System.out.print("=");
answer=input.nextInt();
if(answer==data[i]) {
System.out.println("恭喜答案正确");
count++;
}else {
System.out.println("答案错误");
}
if(i==num1-1) {
System.out.println("一共答对"+count+"道题目");
}
}
}
}

乘法

public void mult() {
System.out.println("选择你要做题数目");
Scanner intput=new Scanner(System.in);
int num2=intput.nextInt();
if(num2<m-num-num1) {
for(int i=0;i<num2;i++){
a=(int)(Math.random()*8+1);
b=(int)(Math.random()*8+1);
sum=a*b;
data[i]=sum;
data1[i]=a;
data2[i]=b;
data3[i]="*";
}
for(int i=0;i<num2;i++)
{
System.out.print(data1[i]+"*");
System.out.print(data2[i]);
System.out.print("=");
answer=input.nextInt();
if(answer==data[i]) {
System.out.println("恭喜答案正确");
count++;
}else {
System.out.println("答案错误");
}
if(i==num2-1) {
System.out.println("一共答对"+count+"道题目");
}
}
}
}

除法

public void division() {
System.out.println("选择你要做题数目");
Scanner intput=new Scanner(System.in);
int num3=intput.nextInt();
if(num3<m-num-num1-num2) {
for(int i=0;i<num3;i++){
a=(int)(Math.random()*10);
b=(int)(Math.random()*9+1);
sum=a/b;
data[i]=sum;
data1[i]=a;
data2[i]=b+1;
data3[i]="/";
}
for(int i=0;i<num3;i++)
{
int yushu=0;
System.out.print(data1[i]+"/");
System.out.print(data2[i]);
System.out.print("=");
answer=input.nextInt();
System.out.println("是否存在余数,存在:1 不存在:0");
int choice=input.nextInt();
if(choice==1) {
System.out.println("请输入余数:");
yushu=input.nextInt();
}
if(answer==data[i]&&yushu==(data1[i]%data2[i])) {
System.out.println("恭喜答案正确");
count++;
}else {
System.out.println("答案错误");
}
if(i==num3-1) {
System.out.println("一共答对"+count+"道题目");
}
}
}
}

选择运算方式菜单

public    void menu() {
System.out.println("1.加法");
System.out.println("2.减法");
System.out.println("3.乘法");
System.out.println("4.除法");
System.out.println("  请输入:");
String choice1=input.next();
switch(choice1) {
case "1":
add();
break;
case "2":
min();break;
case "3":
mult();break;
case "4":
division();break;
default:
System.out.println("输入错误,请从新输入");
break;
}
}

主方法

public static void main(String[] args) {
// TODO Auto-generated method stub
guocheng h=new guocheng();
int f=1;
while(f==1)
{
h.menu();
System.out.println("请问是否继续输入是,是:1  否:0");
Scanner intput=new Scanner(System.in);
f=intput.nextInt();
}
}

运行截图

作业小结

(1)psp表格

psp2.1 任务内容 计划完成需要的时间(min) 实际完成需要的时间(min)
Planning 计划 100 80
Development 开发 200 250
Analysis 需求分析(包括学习新技术) 20 40
Design Spec 生成设计文档 30 50
Design Review 设计复审 5 10
Coding Standard 代码规范 3 5
Design 具体设计 10 12
Coding 具体编码 80 90
Code Review 代码复审 60 70
Test 测试(自我测试,修改代码,提交修改) 10 15
Reporting 报告 9 6
Test Report 测试报告 3 2
Size Measurement 计算工作量 3 2
Postmortem & Process Improvement Plan 事后总结,并提出过程改进计划 5 3

(2)心得和经验

了解使用markdow编辑器来编写,尝试使用java编写,代码有重复繁琐冗余,需要再加以改进。

微信扫一扫,分享到朋友圈

四则运算

世卫组织:尚无证据表明貂体内变异新冠病毒会影响疫苗效果

上一篇

虎牙回应“员工被HR抬出公司”:行为欠妥 真诚致歉并深刻复盘

下一篇

你也可能喜欢

四则运算

长按储存图像,分享给朋友