一.结对信息
2252418 盛宇伟
2252436 董朝
二.题目要求
小学老师要每周给同学出300道四则运算练习题。
这个程序有很多种实现方式:
C/C++
C#/VB.net/Java
Excel
Unix Shell
Emacs/Powershell/Vbscript
Perl
Python
两个运算符,100 以内的数字,不需要写答案。
需要检查答案是否正确,并且保证答案在 0..100 之间
尽可能地多设置一些条件
请两位同学以结对编码(一个同学coding,另一个同学在旁边审核代码,之后再交换角色)的方式完成本次实验,并把程序、运算结果、博客体会等截屏发到其中一位同学的博客上,并在博客中体现另一位同学的学号(仅学号不体现姓名)
三.设计思路分析
1.根据题目要求,算式形式应为【1-99】 运算符 【1-99】运算符 【1-99】= 结果
2.随机生成题目的同时,也生成答案,在选择显示答案后,将题目和答案同时输出
3.设计简单的控制台程序,有3个功能,分别为答案,题目,退出,以满足基本的需求
四.分工安排
由2252436董朝同学编写代码大体框架,我对来编写一些函数,在编程过程中互相检查,完成后,由董朝同学进行测试,我来编写博客
五.代码
`import java.text.DecimalFormat;
import java.util.Random;
import java.util.Scanner;
public class chuti {
static double[] one=new double[500];
static double[] two=new double[500];
static double[] there=new double[500];
static int[] aaa=new int[500];
static int[] bbb=new int[500];
static double[] sum=new double[500];
static double[] yousum=new double[500];
static String[] saaa=new String[500];
static String[] sbbb=new String[500];
static String[] laber=new String[500];
public static void printone( int number1){
System.out.println(number1+"道100以内的四则运算题目输出:");
System.out.println("----------------------------");
for(int i=0;i<number1;i++){
Random r1=new Random();
one[i]=r1.nextInt(100);
two[i]=r1.nextInt(100);
there[i]=r1.nextInt(100);
//1=*,2=/,3=+,4=-。
aaa[i]=r1.nextInt(4)+1;
bbb[i]=r1.nextInt(4)+1;
if(bbb[i]==1||bbb[i]==2){
if(bbb[i]==1){
sum[i]=two[i]*there[i];
}else if(bbb[i]==2){
sum[i]=two[i]/there[i];
}
if(aaa[i]==1){
sum[i]=sum[i]*one[i];
}else if(aaa[i]==2){
sum[i]=sum[i]/one[i];
}else if(aaa[i]==3){
sum[i]=sum[i]+one[i];
}else if(aaa[i]==4){
sum[i]=sum[i]-one[i];
}
}else{
if(aaa[i]==1){
sum[i]=one[i]*two[i];
}else if(aaa[i]==2){
sum[i]=one[i]/two[i];
}else if(aaa[i]==3){
sum[i]=one[i]+two[i];
}else if(aaa[i]==4){
sum[i]=one[i]-two[i];
}
if(bbb[i]==1){
sum[i]=sum[i]*there[i];
}else if(bbb[i]==2){
sum[i]=sum[i]/there[i];
}else if(bbb[i]==3){
sum[i]=sum[i]+there[i];
}else if(bbb[i]==4){
sum[i]=sum[i]-there[i];
}
}
//
if(aaa[i]==1){
saaa[i]="*";
}else if(aaa[i]==2){
saaa[i]="/";
}else if(aaa[i]==3){
saaa[i]="+";
}else if(aaa[i]==4){
saaa[i]="-";
}
//
if(bbb[i]==1){
sbbb[i]="*";
}else if(bbb[i]==2){
sbbb[i]="/";
}else if(bbb[i]==3){
sbbb[i]="+";
}else if(bbb[i]==4){
sbbb[i]="-";
}
//打印,选择0到1000的数
DecimalFormat de=new DecimalFormat("#0");
if(sum[i]<=1000&&sum[i]>=0){
if(i%5==0&&i!=0){
System.out.println();
}
System.out.print(de.format(one[i])+saaa[i]+de.format(two[i])+sbbb[i]+de.format(there[i])+"=\t\t");
}else{
i--;
}
}
System.out.println();
System.out.println("----------------------------");
System.out.println("题目输出完毕");
}
public static void answerone(int number1){
System.out.println(number1+"道100以内的四则运算题目答案:");
System.out.println("---------------------------");
DecimalFormat de=new DecimalFormat("#0");
DecimalFormat df=new DecimalFormat("#0.00");
for(int i=0;i<number1;i++){
if(i%5==0&&i!=0){
System.out.println();
}
System.out.print(de.format(one[i])+saaa[i]+de.format(two[i])+sbbb[i]+de.format(there[i])+"="+df.format(sum[i])+"\t\t");
}
System.out.println();
System.out.println("----------------------------");
System.out.println("答案显示完毕");
}
public static void chaeck(int number1){
System.out.println("3.检查。请输入下列题目答案:");
int cnt=0;
Scanner scanner=new Scanner(System.in);
DecimalFormat de=new DecimalFormat("#0");
for(int i=0;i<number1;i++){
if(i%5==0&&i!=0){
System.out.println();
}
System.out.print(de.format(one[i])+saaa[i]+de.format(two[i])+sbbb[i]+de.format(there[i])+"= ");
yousum[i]=scanner.nextDouble();
String str = String.format("%.2f",sum[i]);
sum[i] = Double.parseDouble(str);
if(yousum[i]==sum[i]){
cnt++;
laber[i]="true";
}else{
laber[i]="false";
}
}
System.out.println("--------------------------");
System.out.println("显示答题结果为:");
for(int i=0;i<number1;i++){
if(i%5==0&&i!=0){
System.out.println();
}
System.out.print(de.format(one[i])+saaa[i]+de.format(two[i])+sbbb[i]+de.format(there[i])+"="+de.format(yousum[i])+" ("+laber[i]+")\t\t");
}
System.out.println();
System.out.println("题目总数:"+number1);
System.out.println("答对题目: "+cnt);
double count;
count=(double)cnt/(double)number1;
if(count>0.6){
System.out.println("答题答的不错,继续加油哦!");
}else{
System.out.println("争取答的更好,还要加油哦!");
}
}
public static void setQuestion(){
System.out.println("要出题的数目为:");
Scanner scanner=new Scanner(System.in);
int number1=scanner.nextInt();
printone(number1);
//answerone(number1);
chaeck(number1);
}
public static void pint(){
System.out.println("-----------------------------------");
System.out.println("| 出题系统 |");
System.out.println("| 1.答案 2.核对 |");
System.out.println("| 3.结束 |");
System.out.println("------------------------------------");
}
public static void main(String[] args){
Scanner scanner=new Scanner(System.in);
int number1;
System.out.println("要出题的数目为:");
number1=scanner.nextInt();
printone(number1);
while(true){
pint();
int cnt=scanner.nextInt();
if(cnt==1){
answerone(number1);![](/i/l/?n=24&i=blog/3398630/202404/3398630-20240424211155493-574335144.png)
}else if(cnt==2){
chaeck(number1);
}else{
break;
}
}
}
}
`
六.运行截图
七.实验体会
结对编程对于我和搭档来说确实是一种比较新颖的体验,往日的编程一般都是由自己完成,而就是这样,寻找代码中的漏洞也是一件非常麻烦的事情,但是令我没有想到的是,在结对编程的过程中,只要能够在一旁观察搭档的语法输入,寻找漏洞要比自己编写时方便许多,这或许就是灯下黑的原因吧。而在另外一方面,通过结对编程,我和队友可以交流彼此的知识经验,以及编程习惯,也是通过交流,让我和搭档也能够从这次较为简单的编程中收获良多。