软件工程概论课堂作业1
题目要求:
像二柱子那样,花二十分钟写一个能自动生成三十道小学四则运算题目的 “软件”。
要求:除了整数以外,还要支持真分数的四则运算(需要验证结果的正确性)、
题目避免重复、可定制出题的数量。
(有能力者改编成网页版)
程序设计思想:首先设置四个随机数,分别为分子和分母,通过分子是否可以整除分子判断出这个数是否为整数,通过分子小于分母控制生成的真分数。
再生成一个1-4的随机数,分别代表四则运算的四个运算符号,从而生出完整的运算题目。
最后通过数组实现查重功能,定义一个string类型的q1赋值成运算题目,进去数组,在数组中进行比较查看是否重复。
代码如下:
package si;
import java.util.Scanner;
public class yunsuan {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("请输入出题数量:");
Scanner num=new Scanner(System.in);
int n = num.nextInt();
//这个数组是用来存放已经出好的题
String timu[]=new String [n];
for(int i=0;i<n;i++)
{
int z1,z2;//用来判断是整数还是真分数
int x1=(int)(Math.random()*100);//分子
int y1=(int)(Math.random()*100+1);//分母
z1=x1/y1;
int x2=(int)(Math.random()*100);//分子
int y2=(int)(Math.random()*100+1);//分母
z2=x2/y2;
if((x1%y1==0)&&(x2%y2==0))
{
int a=(int)(Math.random() * 4);//用来判断四则运算的符号
String q1="";
if(a==3&&z2==0) i--;
else{
if(a==0) q1=z1+"+"+z2+"=";
if(a==1) q1=z1+"-"+z2+"=";
if(a==2) q1=z1+"*"+z2+"=";
if(a==3&&(z2!=0)) q1=z1+"/"+z2+"=";
int j;
for(j=0;j<i;j++)
{
if(q1.equals(timu[j]))
{
i--;
break;
}
}
if(j==i){
timu[i]=q1;
System.out.println(q1);}
}
}
else if((x1<y1)&&(x2%y2==0)&&x1!=0)
{
String q1="";
int a=(int)(Math.random() * 4);//用来判断四则运算的符号
if(x2==0&&a==3) i--;
else{
if(a==0) q1=x1+"/"+y1+"+"+z2+"=";
if(a==1) q1=x1+"/"+y1+"-"+z2+"=";
if(a==2) q1="("+x1+"/"+y1+")"+"*"+z2+"=";
if(a==3&&(z2!=0)) q1="("+x1+"/"+y1+")"+"/"+z2+"=";
int j;
for(j=0;j<i;j++)
{
if(q1.equals(timu[j]))
{
i--;
break;
}
}
if(j==i){
timu[i]=q1;
System.out.println(q1);}
}
}
else if((x1%y1==0)&&(x2<y2))
{
String q1="";
int a=(int)(Math.random() * 4);//用来判断四则运算的符号
if(x2==0&&a==3) i--;
else{
if(a==0) q1=z1+"+"+x2+"/"+y2+"=";
if(a==1) q1=z1+"-"+x2+"/"+y2+"=";
if(a==2) q1=z1+"*"+"("+x2+"/"+y2+")"+"=";
if(a==3&&(z2!=0)) q1=z1+"/"+"("+x2+"/"+y2+")"+"=";
int j;
for(j=0;j<i;j++)
{
if(q1.equals(timu[j]))
{
i--;
break;
}
}
if(j==i){
timu[i]=q1;
System.out.println(q1);}
}
}
else if((x1<y1)&&(x2<y2)&&x1!=0)
{
String q1="";
int a=(int)(Math.random() * 4);//用来判断四则运算的符号
if(x2==0&&a==3) i--;
else{
if(a==0) q1=x1+"/"+y1+"+"+x2+"/"+y2+"=";
if(a==1) q1=x1+"/"+y1+"-"+x2+"/"+y2+"=";
if(a==2) q1="("+x1+"/"+y1+")"+"*"+"("+x2+"/"+y2+")"+"=";
if(a==3&&(z2!=0)) q1="("+x1+"/"+y1+")"+"/"+"("+x2+"/"+y2+")"+"=";
int j;
for(j=0;j<i;j++)
{
if(q1.equals(timu[j]))
{
i--;
break;
}
}
if(j==i){
timu[i]=q1;
System.out.println(q1);}
}
}
else i--;
}
}
}
运行截图:


浙公网安备 33010602011771号