《四则运算》2

题目要求:随机产生30个的四则运算

  1. 题目避免重复;
  2. 可定制(数量/打印方式);
  3. 可以控制下列参数;

是否有乘除法、数值范围、加减有无负数、除法有无余数、是否支持分数(真分数,假分数,...);(5选4)

设计思想:

在上一篇已经写出了,在这里就不多做介绍。重点要说的是我在编程过程中遇到的问题。我用的JAVA技术,首先考虑是if条件语句。不断的向下分层。第一个问题就是在打印题目的过程中无法确定每行打印题目数。后来研究了下。才发现应该打印题目不换行。根据打印的题目数换行。

源代码:

import java.util.Random;
import java.util.Scanner;

public class main {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int a,b,c,m,n,min,max;
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入要打印题目的数量和每行要印的的一模数量:");
		m = sc.nextInt();
		n = sc.nextInt();
		System.out.println("请输入数值的范围:");
		min = sc.nextInt();
		max = sc.nextInt();
		System.out.println("请输入是否有乘数法:(有输入1.反之输入2)");
		a = sc.nextInt();
		System.out.println("请输入加减法是否有负数:(有输入1.反之输入2)");
		b = sc.nextInt();
		System.out.println("请输入除法是否有余数:(有输入1.反之输入2)");
		c = sc.nextInt();
		sc.close();
		if(a==1)//有乘数法
		{
			if(b==1)//有乘数法。加减法有负数
			{
				if(c==1)//有乘数法。加减法有负数。除法有余数
				{
					for(int i=0;i<m;i++)
					{
						Random rand = new Random();
						int firstnum = rand.nextInt(max)+min;
						int secondnum = rand.nextInt(max)+min;
						int num = rand.nextInt(4)+1;
						if(num==1)
							System.out.print(firstnum+" + "+secondnum+" =       ");
						if(num==2)
							System.out.print(firstnum+" - "+secondnum+" =       ");
						if(num==3)
							System.out.print(firstnum+" * "+secondnum+" =       ");
						if(num==4)
							System.out.print(firstnum+" / "+secondnum+" =       ");
						if((i+1)%n==0){System.out.println(" ");}
					}
				}
				if(c==2)//有乘数法。加减法有负数。除法无余数
				{
					for(int i=0;i<m;i++)
					{
						Random rand = new Random();
						int firstnum = rand.nextInt(max)+min;
						int secondnum = rand.nextInt(max)+min;
						int num = rand.nextInt(4)+1;
						if(num==1)
							System.out.print(firstnum+" + "+secondnum+" =       ");
						if(num==2)
							System.out.print(firstnum+" - "+secondnum+" =       ");
						if(num==3)
							System.out.print(firstnum+" * "+secondnum+" =       ");
						if(num==4){
							if(firstnum%secondnum!=0)
							{
								i=i-1;
							}
							else{System.out.print(firstnum+" / "+secondnum+" =       ");}
						if((i+1)%n==0){System.out.println(" ");}
						}
					}
				}
			}
			if(b==2)//有乘数法。加减法无负数
			{
				if(c==1)//有乘数法。加减法无负数。除法有余数
				{
					for(int i=0;i<m;i++)
					{
						Random rand = new Random();
						int firstnum = rand.nextInt(max)+min;
						int secondnum = rand.nextInt(max)+min;
						int num = rand.nextInt(4)+1;
						if(num==1)
							System.out.print(firstnum+" + "+secondnum+" =       ");
						if(num==2)
						{
							int l;
						    l=firstnum-secondnum;
							if(l<0){
								i=i-1;
							}
							if(l>=0){
								System.out.print(firstnum+" - "+secondnum+" =       ");
							}
						}
						if(num==3)
							System.out.print(firstnum+" * "+secondnum+" =       ");
						if(num==4)
							System.out.print(firstnum+" / "+secondnum+" =       ");
						if((i+1)%n==0){System.out.println(" ");}
					}
				}
				if(c==2)//有乘数法。加减法无负数。除法无余数
				{
					for(int i=0;i<m;i++)
					{
						Random rand = new Random();
						int firstnum = rand.nextInt(max)+min;
						int secondnum = rand.nextInt(max)+min;
						int num = rand.nextInt(4)+1;
						if(num==1)
							System.out.print(firstnum+" + "+secondnum+" =       ");
						if(num==2)
						{
							int l;
						    l=firstnum-secondnum;
							if(l<0){
								i=i-1;
							}
							if(l>=0){
								System.out.print(firstnum+" - "+secondnum+" =       ");
							}
						}
						if(num==3)
							System.out.print(firstnum+" * "+secondnum+" =       ");
						if(num==4){
							if(firstnum%secondnum!=0)
							{
								i=i-1;
							}
							else{System.out.print(firstnum+" / "+secondnum+" =       ");}
						if(i%n==0){System.out.print("\n");}
					}
				}
			}
		}
		if(a==2)//无乘数法
		{
			if(b==1)//没有乘数法加减法有负数
			{
				if(c==1||c==2){
				for(int i=0;i<m;i++)
				{
					Random rand = new Random();
					int firstnum = rand.nextInt(max)+min;
					int secondnum = rand.nextInt(max)+min;
					int num = rand.nextInt(2)+1;
					if(num==1)
						System.out.print(firstnum+" + "+secondnum+" =       ");
					if(num==2)
						System.out.print(firstnum+" - "+secondnum+" =       ");
					if((i+1)%n==0){System.out.println(" ");}
				}
				}

			}
			if(b==2)//没有乘数法,加减法无负数
			{
				if(c==1||c==2){
				for(int i=0;i<m;i++)
				{
					Random rand = new Random();
					int firstnum = rand.nextInt(max)+min;
					int secondnum = rand.nextInt(max)+min;
					int num = rand.nextInt(2)+1;
					if(num==1){
						System.out.print(firstnum+" + "+secondnum+" =       ");}
					if(num==2)
					{
						int l;
					    l=firstnum-secondnum;
						if(l<0){
							i=i-1;
						}
						if(l>=0){
							System.out.print(firstnum+" - "+secondnum+" =       ");
						}
					}
					if((i+1)%n==0){System.out.println("");}
				}
				}
			}

		}

	}
}
}

  运行结果:

编程总结:

怎么说呢,刚开始看到这个题目的时候觉得很难,但是根据老师的教的方法,一点点的思考,设计编程思想,看似很难的问题迎刃而解。以后每一个程序写之前,我都要先写设计思想。

时间表:

时间: 2024-08-04 22:33:30

《四则运算》2的相关文章

《大话操作系统——做坚实的工程实践派》(2)

 <大话操作系统--做坚实的工程实践派>(2)

《大话操作系统——做坚实的工程实践派》(硬件篇)

 很多朋友需要PDF,经过这几天的辛苦校对,当然目前只校对了一部分,那就先发这一部分的PDF PDF:<大话操作系统--做坚实的工程实践派>(硬件篇)下面是一部分PDF的截图,可以先预览一下

《大话操作系统——做坚实的工程实践派》(5)

有人说我不是只会玩X86吗?我现在铁板钉钉的申明:我其实兼通:ARM.IA-32.IA-32e.AMD64, ?了解MIPS,但没做过MIPS因为确实没有相应的MIPS硬件平台. ?

《大话操作系统——做坚实的工程实践派》(9)

20年前,对操作系统来说,虚拟内存是个高大上的玩意,它不仅仅是具备内存保护的功能,也给应用程序的独立开发带来了方便 ,其实它的底层逻辑是一个叫MMU的东西完成了一些重要的工作--

《大话操作系统——做坚实的工程实践派》(4)

 操作系统内核必须要关注一个具体硬件平台的设备

《大话操作系统——做坚实的工程实践派》(6)

 继续写硬件体系,这个不写完,不会写操作系统内核,因为根基不正,则难于达到上层境界.

《大话操作系统——做坚实的工程实践派》(1)

1《大话操作系统——做坚实的工程实践派》(8.1)(指令集未完待续)

大多数情况,操作系统内核用纯C语言是写不了的,因为有些关键功能,重要代码段,还是得用汇编指令干上一把才行, 本书不会过于详细的介绍ARM920T处理器所有的指令以及每条指令所有的详细使用方式.因为,一.篇幅所限,二.本书不是介绍某一特定处理器的指令集的专著.但是也不用害怕,笔者会尽量做到写操作系统内核时足够使用.

《大话操作系统——做坚实的工程实践派》(7)

 写操作系统内核需要了解一个具体计算平台的CPU,包括这个CPU里的寄存器和异常中断处理机制

《大话操作系统——做坚实的project实践派》(2)

?? ?<大话操作系统--做坚实的project实践派>(2)? 原文地址:https://www.cnblogs.com/llguanli/p/8451832.html