实训一

16012102丛春艳,16012123孟想,码云地址:https://gitee.com/c_cy/shixunyi

1.黄金点

阿超的课都是下午两点钟,这时班上不少的同学都昏昏欲睡,为了让大家兴奋起来,阿超让同学玩一个叫“黄金点”的游戏:N个同学(N通常大于10),每人写一个0~100之间的有理数 (不包括0或100),交给裁判,裁判算出所有数字的平均值,然后乘以0.618(所谓黄金分割常数),得到G值。提交的数字最靠近G(取绝对值)的同学得到N分,离G最远的同学得到-2分,其他同学得0分。记录每一次游戏每名同学的数字和分数。

结对编程过程照片

实训一_第1张图片           实训一_第2张图片        实训一_第3张图片

import java.util.Scanner;
public class Gold1 {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.print("开始游戏输入1:");          //判断是否开始游戏
        int y=input.nextInt();
        System.out.print("请输入有几位玩家:");         //输入玩家人数
        int N=input.nextInt();
        double[] a = new double[N];              //记录玩家输入的数
        int c[]=new int[N];                  //记录第几位同学
        int x=1;                         //记录游戏轮次
        int g[]=new int[N];                  //用来存储每人的成绩
        while(y==1){                      //判断是否等于1,等于1进入循环
            System.out.println(""+x+"次游戏");
            System.out.println("继续游戏请输入1,否则输入任意数");
            int z=input.nextInt();              //用来判断是否跳出循环
            if(z!=1){                      //如果z不等于1
                break;                      //跳出循环
            }
            System.out.println("请每位玩家输入0~99间的数");
            int sum=0;                      //用来求和
            double G=0;                      //用来记录G值for(int i=0;i input.nextInt();
                c[i]=i+1;                    //输入这是第几位同学
            }
            for (int i=0;i){                //循环输出
                System.out.printf("第%d位同学:",c[i]);    
                System.out.println(a[i]);
                sum+=a[i];                    //求和
            }
            G=sum/N*0.618;                    //求黄金点
            double b[]=new double[N];              //记录输入数与黄金点的差值
            for(int i=0;i){                     
                if(a[i]<=G){                   //使差值是正数           
                    a[i]=G-a[i];
                }
                else {
                    a[i]=a[i]-G;
                }
                b[i]=a[i];                    //将差值赋给b
            }
            for(int i=0;i) {            
                for(int j=i;j) {
                    if(b[i] > b[j]) {             //排序(从小到大)   
                        double e = b[i];           //如果差值因排序交换了
                        b[i] = b[j];
                        b[j] = e;
                        int f=c[i];              //将第几位同学也交换
                        c[i]=c[j];
                        c[j]=f;
                        int h=g[i];              //将同学的成绩也交换
                        g[i]=g[j];
                        g[j]=h;
                    }
                }
                System.out.printf("第%d位同学:",c[i]);    //输出第几位同学
                System.out.println(b[i]);            //输出差值
            }
            if(x==1){                        //计算第一轮游戏每位同学得分
                for(int i=0;iint grade=0;                  //给成绩一个初始值
                    if(i==0){                    //如果距离黄金点最近
                        g[i]=grade+N;                //成绩+N
                    }
                    else if(i==N-1){                //如果距离黄金点最远
                        g[i]=grade-2;                //成绩-2
                    }
                    else {                      //其余玩家
                        g[i]=grade+0;                //成绩+0
                    }
                    System.out.println(""+c[i]+"位同学的成绩是"+g[i]);  //输出
                }
            }
            else{                          //除第一轮每一轮的成绩
                for(int i=0;i){
                    if(i==0){                    //如果距离黄金点最近
                        g[i]+=N;                  //ta上一次的成绩+N
                    }
                    else if(i==N-1){                //如果距离黄金点最远
                        g[i]-=2;                  //ta上一次的成绩—2
                    }
                    else{                      //其余玩家
                        g[i]+=0;                  //ta上一次的成绩+0
                    }
                    System.out.println(""+c[i]+"位同学的成绩是"+g[i]); //输出
                }
            }
            x++;                            //轮次+1
        }
    }
}

 解题思路

1.先让玩家输入数字存入数组

2.求和,求黄金点

3.求差值存入另一个数组

4.将差值排序,差值交换时,位置和成绩随之交换

5.输出得分,实现一次游戏

6.实现多轮游戏,并可结束

运行结果截图

实训一_第4张图片

小结感受

经过两天的实训,我觉得1+1>2,有的时候自己想不通的问题她可以一针见血地指出,互相交流彼此的想法,优化程序,使程序更加完善,彼此之间更加默契,两个人经常针对一个问题有不同的想法,在想不通时总可以彼此鼓励找到解决的方法!

姓名

 风格  团队贡献  优点  缺点  希望她能改正的问题  口头禅
 丛春艳  缜密  50%  brain  懒  勤快一点  我们真是太优秀了
 孟想  严谨  50%  body  比我还懒  勤快多一点点  我们真是太优秀了

你可能感兴趣的:(实训一)