import java.util.Scanner; public class computePlus { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub Scanner in=new Scanner(System.in); System.out.println("请输入生成题目的个数"); int work=in.nextInt(); System.out.println("请输入算式中的数字个数"); int n=in.nextInt(); int num[]=new int[n]; int max,min; System.out.println("请输入数值范围"); min=in.nextInt(); max=in.nextInt(); System.out.println("是否有乘除法(是:1 否:2)"); int choice1=in.nextInt(); if(choice1==1) { System.out.println("除法是否有余数(是:1 否:2)"); int choice2=in.nextInt(); for(int x=0;x<work;x++) { num=CreateRandom(n,max,min); int operate1=1+(int)(Math.random()*2); if(operate1==1) multiply(num,n); if(operate1==2) { if(choice2==1) { for(int i=0;i<n-1;i++) ModDivide(num[i],num[i+1]); } if(choice2==2) { for(int i=0;i<n-1;i++) NoModDivide(num[i],num[i+1]); } } } } if(choice1==2) { System.out.println("减法有无负数(是:1 否:2)"); int choice3=in.nextInt(); for(int x=0;x<work;x++) { num=CreateRandom(n,max,min); int operate2=1+(int)(Math.random()*2); if(operate2==1) { if(choice3==1) plus(num,n); if(choice3==2) Nplus(num,n,max,min); } if(operate2==2) decrease(num,n); } } } //加法 public static void plus(int a[],int n) { long sum=0; for(int m=0;m<n;m++) { sum=sum+a[m]; } for(int i=0;i<n-1;i++) System.out.print(a[i]+"+"); System.out.print(a[n-1]+"="+sum); System.out.println(); } //有负数减法 public static void decrease(int a[],int n) { long sum=a[0]; for(int m=1;m<n;m++) { sum=sum-a[m]; } for(int i=0;i<n-1;i++) System.out.print(a[i]+"-"); System.out.print(a[n-1]+"="+sum); System.out.println(); } //无负数减法 public static void Nplus(int a[],int n,int max,int min) { long sum=a[0]; for(int m=1;m<n;m++) { sum=sum-a[m]; } if(sum>=0) { for(int i=0;i<n-1;i++) System.out.print(a[i]+"-"); System.out.print(a[n-1]+"="+sum); System.out.println(); } else { int b[]=CreateRandom(n,min,max); Nplus(b,n,max,min); } } //乘 public static void multiply(int a[],int n) { long sum=1; for(int m=0;m<n;m++) { sum=sum*a[m]; } for(int i=0;i<n-1;i++) System.out.print(a[i]+"*"); System.out.print(a[n-1]+"="+sum); System.out.println(); } //分数除法 public static void divide(int a[],int n) { long fz=a[0]; long fm=1; for(int m=1;m<n;m++) { fm=fm*a[m]; } String result=simplify(fz,fm); for(int i=0;i<n-1;i++) System.out.print(a[i]+"/"); System.out.print(a[n-1]+"="+result); System.out.println(); } //分数化简 public static String simplify(long fz,long fm) { int max=0; for(int i=0;i<100;i++) { int n=i+1; if(fz%n==0&&fm%n==0) max=n; } return (String)(fz/max+"/"+fm/max); } //生成随机数 public static int[] CreateRandom(int n,int max,int min) { int[] num=new int[n]; for(int i=0;i<n;i++) { num[i]=min+(int)(Math.random()*(max-min)); } return num; } //余数除法 public static void ModDivide(int m,int n) { System.out.println(m+"÷"+n+"="+m/n+"余"+m%n); } //无余数除法 public static void NoModDivide(int m,int n) { System.out.println(m+"÷"+n+"="+m/n); } }
运行结果截图
设计思路
先根据算式数字多少生成随机数,再套用有关运算的方法,最终完成实验。我的程序不能完成括号和多种运算符的混合运算,以后我会继续改进。
时间记录日志
日期 | 开始时间 | 结束时间 | 中断时间 | 净时间 | 活动 | 备注 | C | U |
3.6 | 14:00 | 16:00 | 120分钟 | 软件工程概论 | 二柱子计算题第二弹 | |||
3.7 | ||||||||
3.8 | 14:00 | 17:00 | 60分钟 | 120分钟 | 软件工程概论作业 | 二柱子计算题构建框架和方法 | ||
3.9 | ||||||||
3.10 | 18:00 | 19:30 | 90分钟 | 软件工程概论作业 | 程序错误修改 | |||
周活动总结表
听课 | 编写程序 | 阅读课本 | 准备考试 | 总计 | |
周日 | |||||
周一 | 50 | 60 | 40 | 150 | |
周二 | 50 | 50 | 100 | ||
周三 | 50 | 70 | 120 | ||
周四 | 50 | 50 | 100 | ||
周五 | 50 | 40 | 50 | 140 | |
周六 | |||||
周总结 | 250 | 170 | 190 | 610 |