结对项目----c语言黄金点游戏

    游戏规则: N个同学(N通常大于10),每人写一个0-100之间的有理数 (不包括0或100),
交给裁判,裁判算出所有数字的平均值,然后乘以0.618(所谓黄金分割常数),得到G值。
提交的数字最靠近G(取绝对值)的同学得到N分,离G最远的同学得到-2分,其他同学得0分。
玩了几天以后,大家发现了一些很有意思的现象,比如黄金点在逐渐地往下移动。
经过不断的努力,由于能力不足,只能写出这样的代码,此代码还有一点瑕疵。
#include<stdio.h> #include<stdlib.h> #include<string.h> int point() { int i,j,k,M,N; int max = 0, min = 0; int m[100], n[100]; double average, G,sum = 0.0; int score[100]; printf("欢迎来到黄金点游戏! "); printf("请输入游戏轮数: "); scanf_s("%d", &M); printf("请输入游戏人数: "); scanf_s("%d", &N); memset(score,0,sizeof(int)*N); for (i = 0; i < M; i++) { printf(" 第%d轮游戏: ",i+1); for (j = 0; j < N; j++) { printf("请输入一个0-100的数: "); scanf_s("%d",&m[j]); sum = sum + m[j]; average = sum/N; G = average*0.618; n[j] = m[j] - G; n[j]=(n[j]>0) ? n[j] : n[j]*(-1); max=(n[j]<n[max]) ? max:j; min=(n[j]<n[min]) ? j:min; } //printf(" %d ",max); //printf("%d ",min); score[max]-=2; score[min]+=2; for(k=0;k<N;k++) { printf("第%d人本轮后总分数为%d: ",k+1,score[k]); } sum = 0; printf("黄金点是%f", G); max=0; min=0; } return 0; } int main() { point(); system("pause"); }
游戏源码已上传GitHub: https://github.com/sacfwe/GoldGame
注:本博客为原创,转载请申明

  

原文地址:https://www.cnblogs.com/qiangzai/p/7601986.html