16012123 孟想

16012102 丛春艳

码云地址: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:求差值存入另一个数组

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

5:输出得分实现一次游戏

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

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){//判断y是否等于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;
            for(int i=0;i<a.length;i++) {//循环输入数组元素
                a[i] = input.nextInt();
                c[i]=i+1;
            }
            for (int i=0;i<N;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<b.length;i++){
                if(a[i]<=G){//判断
                    a[i]=G-a[i];
                }
                else {
                    a[i]=a[i]-G;
                }
                b[i]=a[i];//将结果存入数组
            }
            for(int i=0;i<b.length;i++) {
                for(int j=i;j<b.length;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;i<c.length;i++){//判断第一次同学得分
                    int grade=0;
                    if(i==0){
                        g[i]=grade+N;
                    }
                    else if(i==N-1){
                        g[i]=grade-2;
                    }
                    else {
                        g[i]=grade+0;
                    }
                    System.out.println("第"+c[i]+"位同学的成绩是"+g[i]);
                }
            }
            else{//之后游戏分数与之前得分相加
                for(int i=0;i<c.length;i++){
                    if(i==0){
                        g[i]+=N;
                    }
                    else if(i==N-1){
                        g[i]-=2;
                    }
                    else{
                        g[i]+=0;
                    }
                    System.out.println("第"+c[i]+"位同学的成绩是"+g[i]);
                }
            }
            x++;
        }
    }
}

 

运行结果截图:

 

 小结感受:经过两天的实训,发现自己知识学习的还是不够牢固,但是两个人合作在我不知道该如何继续编程时,她会给我提出一些建议,在她不清楚的时候我也会和她一起讨论该如何解决问题,两个人一起学习,实验,彼此之间默契十足,真正带来了1+1》2的效果。

 

姓名 风格 团队贡献 优点 缺点 希望她能改正的问题 口头禅
孟想 严谨 50% body 勤快一点 我们真是太优秀了
丛春艳 缜密 50% brain 比我还懒 勤快多一点点 我们真是太优秀了
posted on 2018-12-13 14:20  -_-!!  阅读(150)  评论(0编辑  收藏  举报