课后作业:四则运算
package songgeierzhuerzi;
import java.util.Scanner;
class sizeyunsuan
{
public static void main(String []args)
{
Scanner scan=new Scanner(System.in);
System.out.println("请输入想要输出的题目数目:");
int w1=scan.nextInt();
System.out.println("请输入每行想要输出的题目数目:");
int w2=scan.nextInt();
int a1,a2;
int b1,b2,b3;
int w3[]=new int[100];
int w4[]=new int[100];
int w5[]=new int[100];
int w6[]=new int[100];
int w7[]=new int[100];
int w8[]=new int[100];
int w9[]=new int[100];
int w10[]=new int[100];
char wen[]= {'+','-','*','/'};
nn:for(a1=1;a1<=w1;)
{
for(a2=1;a2<=w2;)
{
b1=(int)(Math.random()*100);
b2=(int)(Math.random()*100);
b3=(int)(Math.random()*4);
if(b3==0)
{
if(w3[b1]==1)
{
if(w4[b2]==1)
{
continue;
}
}
else
{
w3[b1]=1;
w4[b2]=1;
}
}
if(b3==1)
{
if(b1>=b2)
{
if(w5[b1]==1)
{
if(w6[b2]==1)
{
continue;
}
}
else
{
w5[b1]=1;
w6[b2]=1;
}
}
else
continue;
}
if(b3==2)
{
if((b1*b2)/100==0)
{
if(w7[b1]==1)
{
if(w8[b2]==1)
{
continue;
}
}
else
{
w7[b1]=1;
w8[b2]=1;
}
}
else
continue;
}
if(b3==3)
{
if(b2!=0&&b1%b2!=0)
{
continue;
}
if(b2==0)
{
continue;
}
if(w9[b1]==1)
{
if(w10[b2]==1)
{
continue;
}
}
else
{
w9[b1]=1;
w10[b2]=1;
}
}
if(true)
{
if(a2!=w2)
System.out.print(a1+": "+b1+wen[b3]+b2+"= ");
else
System.out.println(a1+": "+b1+wen[b3]+b2+"= ");
}
if(a1==w1)
break nn;
++a1;
++a2;
}
}
}
}
思路:该代码中,由于生成的随机数为0~99的数,共100个,4种运算法则,所以建立8个容量为100的一位数组,每两组对应算法前后的两个数,对每个数进行查重,每出现一个数,在数组的对应位置输入数字1,若两个数同时为1则continue跳出循环产生新的随机数。这样能保证相同算法的情况下不产生相同的运算。最后的++a1和++b1放在第二个for循环内,这样在满足每行个数的同时还能保证题前的序号不因为continue而跳过去。
这个程序来自于大佬同学,我自己并没有形成一个成熟的思路,在请教,分析,问了他的思路之后我又重新整理了一下思路,发现主要原因除了编的少想得少之外,还是因为对数组的运用不够熟练,今后要加以练习。