代码改变世界

实训一

2018-12-13 15:54  QM!  阅读(192)  评论(0编辑  收藏  举报

码云地址:https://gitee.com/iseekun99/training_a_golden_point

题目:黄金点

阿超的课都是下午两点钟,这时班上不少的同学都昏昏欲睡,为了让大家兴奋起来,阿超让同学玩一个叫“黄金点”的游戏:

N个同学(N通常大于10),每人写一个0~100之间的有理数 (不包括0或100),交给裁判,裁判算出所有数字的平均值,然后乘以0.618(所谓黄金分割常数),得到G值。提交的数字最靠近G(取绝对值)的同学得到N分,离G最远的同学得到-2分,其他同学得0分。记录每一次游戏每名同学的数字和分数。

设计思路:从控制台输入N个同学进行游戏,每位同学需要输入数字,求出黄金点G,用Math.abs(x)取最靠近G的绝对值,得到最大和最小值,当同学输入的数字与G值相差与最大值相等时,得到-2分,与最小值相等时得到N分,其他同学均的0分。

import java.util.*;
public class HJD {
    public static void main(String[] args) {
        //int total[]=new int[100];
        int b =100;
        double value[]=new double[100];
        int grade[][]=new int[100][100];
        System.out.println("****黄金点****");
        for(int j=1;j<=100;j++){
        Scanner HJD =new Scanner(System.in);

        Scanner HJD1 =new Scanner(System.in);
        System.out.println("输入玩家人数:\n当玩家人数为0时结束游戏");
        //for(int j=1;j<=100;j++){
        int n=HJD1.nextInt();//输入玩家人数 
        if(n==0){break;}
        int sum=0;
        for (int i=0;i<n;i++)
        {
            int h=i+1;
            System.out.print("第"+h+"名同学:");
            int m=HJD1.nextInt();
            value[i]=m;
            sum+=m;
        }
        //System.out.print(sum);
        double G=(sum/n)*0.618;    
        double max=0.0;
        double min=Math.abs(value[1]-G);
        System.out.println(G);    
        for(int l=1;l<=n;l++)
            {
                if(Math.abs(value[l]-G)>=max)
                {
                    max=Math.abs(value[l]-G);
                }
            
                if(Math.abs(value[l]-G)<=min)
                {
                    min=Math.abs(value[l]-G);    
                }
                
            }
            //System.out.println(max);    
            //System.out.println(min);    
            for(int m=1;m<=n;m++)
            {
                if(Math.abs(value[m]-G)==max)
                {
                    grade[j][m]=-2;
                    //System.out.println("最远"+grade[j][m]);
                }
                if(Math.abs(value[m]-G)==min)
                {
                    grade[j][m]=n;
                    //System.out.println("最近"+grade[j][m]);
                }
                if(Math.abs(value[m]-G)!=max&&Math.abs(value[m]-G)!=min)
                {
                    grade[j][m]=0;
                    //System.out.println("其他"+grade[j][m]);
                }
            }
            
            for(int p=0;p<=n-1;p++)
            {
                int q=p+1;
                System.out.println("第"+q+"名游戏玩家所得分数为:"+grade[j][p]);
            }
        }
        System.out.println("****游戏结束***");
    }
}

运行结果:

 

 

 小结感受:经过两天的实训发现自己掌握的知识太欠缺,通过和伙伴的合作解决了很多问题,是一次知识积累与运用 创造的过程, 今后要好好学习 认真写笔记 认真听课 认真学习。

姓名 风格 团队贡献 优点 缺点 希望对方提高的地方 口头禅
胡文媛 眉清目秀 提供思路

认真理智

优点太多 再细心一点 知道了知道了
曲梦 开朗乐观 实际操作 团结活力 知识点掌握欠缺 多练习多操作 知道了知道了