天天看點

黃金點遊戲程式注解

黃金點遊戲介紹說明:

   N個同學(N通常大于10),每人寫一個0~100之間的有理數 (不包括0或100),交給裁判,裁判算出所有數字的平均值,然後乘以0.618(所謂黃金分割常數),得到G值。送出的數字最靠近G(取絕對值)的同學得到N分,離G最遠的同學得到-2分,其他同學得0分。玩了幾天以後,大家發現了一些很有意思的現象,比如黃金點在逐漸地往下移動。

程式思路:1.利用for循環,scanf輸入可以參加的人數以及每個人的輸入值;

          2.判斷每個人的輸入值是否合法,如果否,請重新輸入,i--;

          3.求出黃金點并且利用fabs函數,把所得值指派給一個新的數組b[];

          4.再次利用for循環,求出最大,最小值,并且求出下角标i的值,并且列印出來;

          5.結束循環,并且列印每次結果。

以下為每小部分程式的注解以及思路:

#include "stdafx.h"
#include "stdio.h"
#include "string.h"
#include "math.h"
void gameguide();         //遊戲介紹說明
void gamebegin();         //遊戲開始
void gameover()
{
    printf("感謝您的使用,我們下次再會\n");
};       

函數定義以及頭檔案的說明;

void main(int argc, char* argv[])
{
    int n;
    printf("**********歡迎來到黃金點遊戲******************\n");         /*整個程式的遊戲界面*/
    printf("**********1 遊戲指導說明    **************\n");
    printf("**********2    開始遊戲     ****************\n");
    printf("**********3    遊戲結束      ***************\n");
    while(1)
    {
        scanf("%d",&n);
        switch(n)        //利用switch函數進行函數的調用
        {    
        case 1:   gameguide();   break;
        case 2:   gamebegin();   break;
        case 3:   gameover();    break;
        }
    }
}
      

此程式為單機,遊戲界面的設計以及利用switch函數進行對函數的調用;

printf("您選擇參加的人數是:\n");
    scanf("%d",&z);       //參加的人數
    printf("請您選擇參加的次數:\n");
    scanf("%d",&h);
    for(j=1;j<=h;j++)     //參加的次數
    {
        for(i=1;i<=z;i++)
        {
            printf("第%d個随機數字是:\n",i);
            scanf("%f",&a[i]);       //輸入每個人數字      

利用雙重for循環,進行實作對題目的人數和遊戲次數的設計,并且輸入數字;

if(a[i]>100)
            {    
                printf("請重新輸入符合要求的數字");
                      i--;           //如果數字不符合要求,則重新加入
            }
            s=s+a[i];
        }
        g=s/z;
        printf("該組數字的黃金點是:%f\n",0.618*g);     //求出黃金點數字      

判斷輸入數字是否合法,如若不合法,則i--,并且提示重新輸入,利用s+=s;進行對于黃金點的求算并且答應出來;

for(i=1;i<=z;i++)
        {
            b[i]=fabs((0.618*g-a[i]));             //求出數字和黃金點的內插補點,斌且指派給b[i]
            printf("%f\n",b[i]);
        }      

利用for循環和fabs函數将(所有數字-黃金點)的內插補點指派給b[],

for(i=1;i<z;i++)
        {
            if(min>b[i])
            {
                min=b[i];         //求出最小值,斌且找出地i個人
                c=i;
            }
        }
        printf("與%f的內插補點最小,是%d個人,得分為:%d\n",min,c,z);      

再次利用for循環,進行對最小值的查找,然後找出第i個值,并且列印出來,完成整個程式;

黃金點遊戲程式注解

執行程式截圖,程式完美運作,實作作業布置要求,如若發現問題,及時跟進部落格進度,以及上傳coding程式。

總結:本次的程式可以說并不難寫,就是之前自己一直拖拉沒有好好的完成,在這個項目的過程中不斷地完善自己的程式設計能力,更加注中對于團隊項目的合作以及與團隊項目人員的相處,再本次任務中,能夠合理的安排每個人員的工作以及扮演好自己的任務,我覺得十分重要,謝謝本次項目的小夥伴以及老師的認真負責,一次不錯的程式設計體驗!!!