个人作业1——四则运算题目生成程序(基于控制台)

码市地址:https://coding.net/u/H1159650478/p/huangrui/git/blob/master/软件工程.txt
1、 a、需求分析: 除了整数以外,还要支持真分数的四则运算,真分数的运算,例如:1/6 + 1/8 = 7/24
运算符为 +, −, ×, ÷ 并且要求能处理用户的输入,并判断对错,打分统计正确率。
要求能处理用户输入的真分数, 如 1/2, 5/12 等
使用 -n 参数控制生成题目的个数,例如执行下面命令将生成10个题目 Myapp.exe -n 10
b、功能设计: 1.产生随机数。
2.随机进行整数和真分数的运算并且可以判断正确并给出正确答案。
3.可以算出正确率。
c、设计实现: 我是用eclipse软件写的java代码。由于知识掌握的不够好,所以我是用比较繁琐的switch来完成整数和分数的四则运算,一共用到8个case。然后运用了Random完成了随机数的生成,最后当程序跳出while循环后进行了正确率的运算,整个编程也写完了。
d、代码说明:
这段代码实现了我要自主做的题目数,并实现了用while循环使题目随机生成。

		int c = 0;
		while (c < x) {
			Random r = new Random();
			int i;// 分子
			int j;
			int d;// 分母
			int e;

这段代码就是用switch和case开始了四则运算。

 			switch (s) {
			case 0: {
				i = r.nextInt(23);// 随机数在0到23之间产生
				j = r.nextInt(23);
				System.out.print(+i + "+" + j + "=");
				Scanner sc = new Scanner(System.in);
				int str = 0;
				str = sc.nextInt();
				int sum = i + j;
				if (str == sum) {
					System.out.println("correct");
					a++;
					c++;
				} else {
					System.out.println("wrong");
					int p = i + j;
					System.out.println("the right answer is:" + p);
					c++;
				}
			}
				break;

这段代码就是这次编程我觉得最难的地方了,用到辗转相除法求最大公约数。

					int n1 = i * e;
					int m1 = j * d;
					int k = m1 % n1;
					int l = n1;
					int o = 0;
					if (k == 0) {
						m1 = m1 / n1;
						n1 = 1;
					} else {
						while (m1 % k != 0 || n1 % k != 0) {
							o = k;
							k = l % k;
							l = o;

						} 
						m1 = m1 / k;
						n1 = n1 / k;
					}// 辗转相除求出最大公约数 

e、测试运行:

正确错误都有显示出来,最后计算出来对的正确率。
2、展示PSP

3、小结:这次作业对我而言很有挑战,真的发现自己差了很多。而且以前的知识由于没有巩固忘记的也很快,所以编程很吃力。虽然思路简单但是知识储存太少,导致编程的工作量增加了很多。说实话一开始随机数怎么做都完全不知道,这次的收获大概在于学懂了一点点随机生成吧,当然也向同学们寻求了很多帮助,希望下次作业可以再有进步。

posted on 2017-03-08 01:20  爱尔兰爱故事  阅读(141)  评论(2编辑  收藏  举报

导航