zoukankan      html  css  js  c++  java
  • 黄金点游戏程序注解

    黄金点游戏介绍说明:

       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("感谢您的使用,我们下次再会
    ");
    }; 

    函数定义以及头文件的说明;

    void main(int argc, char* argv[])
    {
        int n;
        printf("**********欢迎来到黄金点游戏******************
    ");         /*整个程序的游戏界面*/
        printf("**********1 游戏指导说明    **************
    ");
        printf("**********2    开始游戏     ****************
    ");
        printf("**********3    游戏结束      ***************
    ");
        while(1)
        {
            scanf("%d",&n);
            switch(n)        //利用switch函数进行函数的调用
            {    
            case 1:   gameguide();   break;
            case 2:   gamebegin();   break;
            case 3:   gameover();    break;
            }
        }
    }

    此程序为单机,游戏界面的设计以及利用switch函数进行对函数的调用;

    printf("您选择参加的人数是:
    ");
        scanf("%d",&z);       //参加的人数
        printf("请您选择参加的次数:
    ");
        scanf("%d",&h);
        for(j=1;j<=h;j++)     //参加的次数
        {
            for(i=1;i<=z;i++)
            {
                printf("第%d个随机数字是:
    ",i);
                scanf("%f",&a[i]);       //输入每个人数字

    利用双重for循环,进行实现对题目的人数和游戏次数的设计,并且输入数字;

    if(a[i]>100)
                {    
                    printf("请重新输入符合要求的数字");
                          i--;           //如果数字不符合要求,则重新加入
                }
                s=s+a[i];
            }
            g=s/z;
            printf("该组数字的黄金点是:%f
    ",0.618*g);     //求出黄金点数字

    判断输入数字是否合法,如若不合法,则i--,并且提示重新输入,利用s+=s;进行对于黄金点的求算并且答应出来;

    for(i=1;i<=z;i++)
            {
                b[i]=fabs((0.618*g-a[i]));             //求出数字和黄金点的差值,斌且赋值给b[i]
                printf("%f
    ",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
    ",min,c,z);

    再次利用for循环,进行对最小值的查找,然后找出第i个值,并且打印出来,完成整个程序;

    执行程序截图,程序完美运行,实现作业布置要求,如若发现问题,及时跟进博客进度,以及上传coding程序。

    总结:本次的程序可以说并不难写,就是之前自己一直拖拉没有好好的完成,在这个项目的过程中不断地完善自己的编程能力,更加注中对于团队项目的合作以及与团队项目人员的相处,再本次任务中,能够合理的安排每个人员的工作以及扮演好自己的任务,我觉得十分重要,谢谢本次项目的小伙伴以及老师的认真负责,一次不错的编程体验!!!

  • 相关阅读:
    解决PKIX:unable to find valid certification path to requested target 的问题
    Linux 上的常用文件传输方式介绍与比较
    用VNC远程图形化连接Linux桌面的配置方法
    红帽中出现”This system is not registered with RHN”的解决方案
    linux安装时出现your cpu does not support long mode的解决方法
    CentOS SSH配置
    es6扩展运算符及rest运算符总结
    es6解构赋值总结
    tortoisegit安装、clon、推送
    es6环境搭建
  • 原文地址:https://www.cnblogs.com/wangdon/p/5372190.html
Copyright © 2011-2022 走看看