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

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<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]; //将差值赋给b } 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; //成绩+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<c.length;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.实现多轮游戏,并可结束
运行结果截图

小结感受
经过两天的实训,我觉得1+1>2,有的时候自己想不通的问题她可以一针见血地指出,互相交流彼此的想法,优化程序,使程序更加完善,彼此之间更加默契,两个人经常针对一个问题有不同的想法,在想不通时总可以彼此鼓励找到解决的方法!
|
姓名 |
风格 | 团队贡献 | 优点 | 缺点 | 希望她能改正的问题 | 口头禅 |
| 丛春艳 | 缜密 | 50% | brain | 懒 | 勤快一点 | 我们真是太优秀了 |
| 孟想 | 严谨 | 50% | body | 比我还懒 | 勤快多一点点 | 我们真是太优秀了 |
浙公网安备 33010602011771号