软件工程概论课堂作业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--;
		}
	}

}

  运行截图:

原文地址:https://www.cnblogs.com/xxdcxy/p/6492284.html