欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

课堂练习之四则运算加强版

发布时间:2024/4/17 编程问答 40 豆豆
生活随笔 收集整理的这篇文章主要介绍了 课堂练习之四则运算加强版 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

一、程序设计题目要求和设计思想

1、题目

(1)、题目避免重复;  

(2)、可定制(数量/打印方式); 

(3)、可以控制下列参数: 是否有乘除法、是否有括号、 数值范围、加减有无负数、除法有无余数、否支持分数 (真分数, 假分数, …)、是否支持小数 (精确到多少位)、打印中每行的间隔可调整;

2、设计思想

1、题目避免重复; 2、可定制(数量/打印方式): 3、可以控制下列参数(是否有乘除法,是否有括号,数值范围,加减有无负数,除法有无余数、是否支持分数(真分数,假分数)):

设计思路:

1、(任意自定义题目个数)通过输入的数字对应for循环的次数,

2、(是否有乘除法)

3、(是否支持分数)(有/否:1/0):

这两个放在一起实现,两个组合一起可以有四种方式,00,01,10,11

分别对应case语句中的选项,在选则时,0、1是加法,2、3是减法,4、5是乘法,6、7是除法,

奇数是可以产生分数的,

当00时,选择0和2,

当01时,选择1,2,3,4;

当10时,选择0,2,4,6;

当11时,选择全部。

4、(数值的范围) 将传进来的数num3直接当作指数进行运算,产生该数位的最大和最小两个数字,

并通过random_2方法,产生两数之间的随机数。

自定义两数之间的随机数方法random_2思路:

1、先随机产生小于较大数的随机数, 2、判断该随机数是否大于较小数, 3、如果大于则返回该数,否则就通过循环产生另一个随机数,重复判断。

二、程序源代码

1 /* 2 需求:每天出30道四则运算题目给小学生做 3 */ 4 import java.util.*; 5 class Rand 6 { 7 public static void sop(Object obj) 8 { 9 System.out.print(obj); 10 } 11 public static int random_1(int n)//随机产生一个0--n之间的数 12 { 13 return new Random().nextInt(n); 14 } 15 16 public static int random_2(int n1,int n2)//产生n1--n2随机数的方法 17 { 18 int temp = 0,b = 0; 19 while((temp=new Random().nextInt(n2))>=n1)//如果产生的随机数大于n1,就将其返回,否则就继续 20 { 21 b = temp; 22 } 23 if(b==0) 24 b = b + 2*n1; 25 return b; 26 } 27 28 public static void main(String[] args) 29 { 30 sop("<---小学生二年级课后作业,每天30道四则运算练习--->"); 31 32 System.out.print("\r\n1、请输入今日想完成的题目数量:"); 33 34 Scanner sc = new Scanner(System.in); 35 int num = sc.nextInt(); 36 37 System.out.print("\r\n2、请选择是否有乘除运算:(有/否:1/0):"); 38 39 Scanner sc1 = new Scanner(System.in); 40 int num1 = sc1.nextInt(); 41 42 System.out.print("\r\n3、请选择是否需要真分数运算:(有/否:1/0):"); 43 44 Scanner sc2 = new Scanner(System.in); 45 int num2 = sc2.nextInt(); 46 47 System.out.print("\r\n4、请输入每行打印的个数:"); 48 49 Scanner sc4 = new Scanner(System.in); 50 int num4 = sc4.nextInt(); 51 52 System.out.print("\r\n5、请选择需要几位数的运算:(请输入大于1的位数,\r\n如不需要定制,输入1,随机产生不大于1000的运算):"); 53 54 Scanner sc3 = new Scanner(System.in); 55 int num3 = sc3.nextInt() - 1; 56 57 int count = 0,d1,d2,k1,k2,k3,k4;//计数器 58 59 for (int i=0;i<num ;i++ ) 60 { 61 if(num3==0)//如果输入为1,就将随机产生不大于1000的数 62 { 63 d1 = random_1(1000); 64 d2 = random_1(1000); 65 k1 = random_1(1000); 66 k2 = random_1(1000); 67 k3 = random_1(1000); 68 k4 = random_1(1000); 69 } 70 else 71 { 72 d1 = random_2((int)Math.pow(10,num3),(int)Math.pow(10,num3+1)-1);//自定义的产生随机数 73 d2 = random_2((int)Math.pow(10,num3),(int)Math.pow(10,num3+1)-1); 74 k1 = random_2((int)Math.pow(10,num3),(int)Math.pow(10,num3+1)-1); 75 k2 = random_2((int)Math.pow(10,num3),(int)Math.pow(10,num3+1)-1); 76 k3 = random_2((int)Math.pow(10,num3),(int)Math.pow(10,num3+1)-1); 77 k4 = random_2((int)Math.pow(10,num3),(int)Math.pow(10,num3+1)-1); 78 } 79 80 81 int k = 0,r = 0;//声明两个变量 82 if(num1==0 && num2==0)//都没有 83 { 84 r = random_1(4); 85 if(r%2!=0)//将产生的奇数随机数取出 86 k=r; 87 if(k==0)//即使已经将k判断为奇数了,但还是会等于0,所以就再判断一次,如果为0,就将其+1; 88 ++k; 89 } 90 91 else if(num1==0 && num2==1)//没乘除,有分数 92 k = random_1(4); 93 else if(num1==1 && num2==0)//有乘除,没分数 94 { 95 r = random_1(8); 96 if(r%2!=0) 97 k=r; 98 if(k==0) 99 ++k; 100 } 101 else//都有 102 k = random_1(8); 103 104 switch(k)//前两个是加法,2,3是减法,4,5是乘法,6,7是除法 105 { 106 case 0: 107 sop(zhenfenshu(k1,k2)+" + "+zhenfenshu(k3,k4)+" = \t"); 108 break; 109 case 1: 110 sop(d1+" + "+d2+" = \t"); 111 break; 112 case 2: 113 sop(zhenfenshu(k1,k2)+" - "+zhenfenshu(k3,k4)+" = \t"); 114 break; 115 case 3: 116 jianfa(d1,d2); 117 break; 118 case 4: 119 sop(zhenfenshu(k1,k2)+" * "+zhenfenshu(k3,k4)+" = \t"); 120 break; 121 case 5: 122 sop(d1+" * "+d2+" = \t"); 123 break; 124 case 6: 125 sop(zhenfenshu(k1,k2)+" ÷ "+zhenfenshu(k3,k4)+" = \t"); 126 break; 127 case 7: 128 chufa(d1,d2); 129 break; 130 131 132 default: 133 sop("duang,duang,daung"); 134 break; 135 } 136 count++; 137 if(count%num4==0) 138 System.out.println(); 139 } 140 141 sop("以上共有:"+count+"道题。"); 142 143 } 144 public static void jianfa(int a,int b)//因为小学二年级没有学负数,所以相减不能为负数 145 { 146 if(a>=b) 147 sop(a+" - "+b+" = \t"); 148 else 149 { 150 sop(b+" - "+a+" = \t"); 151 } 152 153 } 154 155 public static void chufa(int a,int b)//为了使除法有意义,除数不能为零, 156 { 157 if(b>0) 158 sop(a+" ÷ "+b+" = \t"); 159 //如果除数为零,就将其加上10,再进行运算 160 else 161 { 162 b = b + 10; 163 sop(a+" ÷ "+b+" = \t"); 164 } 165 166 } 167 public static String zhenfenshu(int a,int b)//产生真分数的方法 168 { 169 if(a<=b) 170 return a+"/"+b; 171 else 172 return b+"/"+a; 173 } 174 }

三、运算结果截图

(只有加减法,没有分数,所有的数都是四位的)

(有乘除,没分数,两位数运算)

(有乘除,也有分数,两位数)

(在自定义数的位数,输入1,就是产生小于1000的随机数)

四、总结

  在对该程序进行修改的过程中,只实现了一部分的功能,虽然可以做一些简单的定制功能,
还存在不少的缺陷和bug,比如没有实现小数的运算,但是我感觉比较好的就是,
可以自定义两个数,产生这两个数之间的随机数,希望在下面可以继续将本程序
再加改进,功能更加完善。

 

 

时间安排:

一、项目计划总结:

 

周活动总结表

姓名:                                          日期:

日期       任务

听课

编写程序

阅读课本

准备考试

 

 

日总计

周日

 

 

 

 

 

 

 

周一

 

 

 

 

 

 

 

周二

 100

 30

 30

 

 

 

 160

周三

 

 150

 30

 

 

 

 180

周四

 

 120

 40

 

 

 

 160

周五

 100

 120

 40

 

 

 

 160

周六

 

 180

 40

 

 

 

 220

周总结

 200

 600

 180

 

 

 

 980

阶段时间和效率                                            周数(上一次周活动表的周数+1):

不包括上一周在内的累计时间                                                                         

总计

 200

 600

 180

 

 

 

 980

平均

 200

 600

 180

 

 

 

 980

最大

 200

 600

 180

 

 

 

 980

最小

 200

 600

 180

 

 

 

 989

以前各周的累计时间                                                                                    

总计

 

 

 

 

 

 

 

平均

 

 

 

 

 

 

 

最大

 

 

 

 

 

 

 

最小

 

 

 

 

 

 

 

二、时间记录表:

学生          郭健豪                                                   日期       2015.3.15                

教师        王建民                                             课程           PSP       

日期

开始时间

结束时间

中断时间

净时间

活动

备注

 3.10

 19:20

20:00

 10

 30

 编程

 

 3.11

 15:00

18:20

 50

 150

 编程、看书

 

 3.12

 18:30

21:30

 20

 160

 编程、看书

 

 3.13

 19:00

21:30

 20

 130

 编程、看书

 

 3.14

 9:00

11:20

 30

 180

编程。看书

 

 

 

 

 

 

 

 

 

三、缺陷记录日志:

学生        郭健豪    

日期       2015.3.15 

教员       王建民   

程序号                

日期

编号

类型

引入阶段

排除阶段

修复时间

修复缺陷

 3.11

 

 

 

 

 

 

 想自定义一个方法,可以随机输入两个数,产生这两个数之间的随机数,但是不能将得到的这个数返回,这个问题一直困扰着我。

 3.12

 

 

 

 

 

 

 在今天晚上,我继续想昨天的这个没有解决的问题,经过将近一个小时的思考和调试,最终我给设了一个中间变量,将该数给返回出来,

 

转载于:https://www.cnblogs.com/KevinBin/p/4339680.html

总结

以上是生活随笔为你收集整理的课堂练习之四则运算加强版的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。