结对项目名称:黄金分割点游戏(单机)

运行环境:vs

编译语言:c语言

项目分析:

实现的功能:用户可以选择继续游戏并且可以保存之前获得的分数,但是为了游戏的公平性,游戏的参数人数一开始用户确定以后就不能够改变。

Github地址:http://github.com/Yu0Ci/Project/blob/master/结对项目(陈香宇&蔡春燕).txt

总结与心得:此次项目主要是由玩家先输入游戏人数n,然后再由玩家输入自己理想的数字,同时再由电脑随机产生n-1个数字,这样可以很好的避免保持先后的顺序从而导致的不公平。通过此次项目感觉自己的逻辑能力变得更强了,对于指针的用法也很熟悉了,以及数字的简单存储之类的,从中也锻炼了与伙伴结对合作的能力,希望下次可以再接再厉做得更好。

代码:

#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#include <time.h>
struct Grade
{
int grade;
struct Grade * next;
};
struct Figure
{
int figure;
struct Figure * next;
};
struct Grade * point(int N,int n,char name[50],int count,struct Grade *head);
void main()
{
//count 统计玩家游戏的次数
int c, N,n,count;
struct Grade *head_g,*x,*y;
char name[50];
count=0;
int i;
head_g=NULL;
x=NULL;
printf("**************************欢迎来到黄金点游戏直播现场**************************\n");
printf("规则是这样的,\nN位玩家,\n每位请写出1-100间的整数,\n提交的数字最靠近G点(黄金点)的人得N分\n\n\n\n");
printf("************************** 请输入玩家姓名: **************************\n");
scanf("%s",name); printf("************************** 请输入游戏人数: **************************\n");
scanf("%d",&N);
if(!(N>=1))
{
printf("%s玩家输入错误\n",name);
exit(1);
}
do
{
printf("请%s玩家输入你想输入的数字(1~100)\n",name);
scanf("%d",&n);
if((n>=1)&&(n<=100))
{
if(count==0)
{
for(i=0;i<N;i++)
{
y=(struct Grade*)malloc(sizeof(struct Grade));
y->grade=0;
y->next=NULL;
if(head_g==NULL)
{head_g=y; x=y;}
else
{x->next=y;x=y;}
} }
count=count+1;
head_g=point(N,n,name,count,head_g);
}
else
exit(1);
printf("^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ 诸位客官要不要继续玩?^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ \n");
printf("继续请扣1,反之退出游戏\n");
scanf("%d",&c);
}while(c==1); }
struct Grade * point(int N,int n,char name[50],int count,struct Grade *head_g)
{
struct Figure *head_p,*q,*p;
struct Grade *x;
double G,ave,amax,amin;
srand(unsigned(time(NULL)));
int i;
ave=n;
head_p=NULL;
p=NULL;
q=(struct Figure*)malloc(sizeof(struct Figure));
q->figure=n;
q->next=NULL;
head_p=q;
p=q;
for(i=1;i<N;i++)
{ q=(struct Figure*)malloc(sizeof(struct Figure));
q->figure=rand()%101;
q->next=NULL;
if((p->figure)==0)
{
p->figure=1;
}
if(head_p==NULL)
{
q->figure=n;
head_p=q;
p=q;
} p->next=q;
p=q; ave=ave+(p->figure);
printf("第%d号玩家的数字是%d\n",i+1,p->figure);
}
ave=ave/N;
G=0.618*ave;
printf("该组数据的平均值%lf:\n",ave);
printf("该组数据的黄金点为%lf:\n",G);
p=head_p;
amin=fabs((p->figure)-G);
amax=fabs((p->figure)-G);
p=p->next;
while(p!=NULL)//找到amax amin
{
if(fabs((p->figure)-G)<amax)
{
amax=fabs((p->figure)-G);
}
if(fabs((p->figure)-G)>amin)
{
amin=fabs((p->figure)-G);
}
p=p->next;
}
p=head_p;
x=head_g;
while(p!=NULL)//打分
{
if(amax==fabs((p->figure)-G))
{
x->grade=(x->grade)+2;
}
if(amin==fabs((p->figure)-G))
{
x->grade=(x->grade)-1;
}
p=p->next;
x=x->next; }
x=head_g;
printf("%s玩家的得分为%d(即第1号玩家的得分)\n",name,x->grade);
x=x->next;
for(i=1;i<N;i++)
{
if((x->grade)!=0)
{
printf("第%d号玩家的得分为%d\n",i+1,x->grade);
}
x=x->next;
}
printf("其余客官得分为0分。\n"); return head_g; }

  

结对项目——黄金分割点游戏(陈香宇&蔡春燕)的更多相关文章

  1. Week3结对项目-数独游戏

    题目要求 1)在文章开头给出Github项目地址.(1') 2)在开始实现程序之前,在下述PSP表格记录下你估计将在程序的各个模块的开发上耗费的时间.(0.5') 3)看教科书和其它资料中关于Info ...

  2. 结对编程——Java实现黄金分割点游戏

    这是我和队员根据老师要求自创的一个人机黄金分割点游戏.这个小游戏在Windows10 下开发,用Eclipse做开发工具,实现语言是Java. 利用目前自己所学的Java知识实现了一人登录,电脑自行匹 ...

  3. [2017BUAA软工助教]结对项目小结

    2017BUAA结对项目小结 一.作业链接 http://www.cnblogs.com/jiel/p/7604111.html 二.评分细则 1.注意事项 按时间完成并提交--正常评分 晚交一周以内 ...

  4. # 2019-2020-4 《Java 程序设计》结对项目总结

    2019-2020-4 <Java 程序设计>结对项目阶段总结---<四则运算--整数> 一.需求分析 实现一个命令行程序 要求: 自动生成小学四则运算题目(加,减,乘,除): ...

  5. [buaa-SE-2017]结对项目-数独程序扩展

    结对项目-数独程序扩展 step1~step3:github:SE-Sudoku-Pair-master step4:github:SE-Sudoku-Pair-dev-combine step5:g ...

  6. [2017BUAA软工]结对项目:数独扩展

    结对项目:数独扩展 1. Github项目地址 https://github.com/Slontia/Sudoku2 2. PSP估计表格 3. 关于Information Hiding, Inter ...

  7. 结对项目作业报告——四则运算web项目

    成员:顾思宇2016011993 程羚2016012050   1.仓库地址:https://git.coding.net/DandelionClaw/WEB_Calculator.git 注: 本项 ...

  8. 结对项目:四则运算web

    1)Coding.Net项目地址 https://git.coding.net/DandelionClaw/WEB_Calculator.git 注:本项目为web端,并且需要连接SQL Server ...

  9. 陈新宇:CKafka在人脸识别PAAS中的应用

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文首发在云+社区,未经许可,不得转载. 我叫陈新宇,在格灵深瞳负责数据流的研发,首先特别感谢如今老师,他们把Kafka一个优秀的消息中间件 ...

随机推荐

  1. MySQL中MyISAM与InnoDB区别及选择(转)

    InnoDB: 支持事务处理等 不加锁读取 支持外键 支持行锁 不支持FULLTEXT类型的索引 不保存表的具体行数,扫描表来计算有多少行 DELETE 表时,是一行一行的删除 InnoDB 把数据和 ...

  2. C++ STL 顺序容器--list + 关联容器

    list 双向链表,可以双向遍历,既指向前驱节点,又指向后继但不能随机访问任意元素,可动态增加或者减少元素,内存管理自动完成,增加任何元素都不会使迭代器失效, 删除元素时,除了指向当前被删元素的迭代器 ...

  3. K8S学习笔记之二进制部署Kubernetes v1.13.4 高可用集群

    0x00 概述 本次采用二进制文件方式部署,本文过程写成了更详细更多可选方案的ansible部署方案 https://github.com/zhangguanzhang/Kubernetes-ansi ...

  4. windbg无故不显示command窗口

    原文最早发表于百度空间2010-02-05 有的dump可以显示,有的不行……上网找了一通没有收获,自己搞了一下,终于在点击“window”——“cascade floating windows”后出 ...

  5. Redis 分布式缓存 Java 框架

    为什么要在 Java 分布式应用程序中使用缓存? 在提高应用程序速度和性能上,每一毫秒都很重要.根据谷歌的一项研究,假如一个网站在3秒钟或更短时间内没有加载成功,会有 53% 的手机用户会离开. 缓存 ...

  6. 分布式系列 - dubbo服务telnet命令

    dubbo服务发布之后,我们可以利用telnet命令进行调试.管理.Dubbo2.0.5以上版本服务提供端口支持telnet命令,下面我以通过实例抛砖引玉一下: 1.连接服务 测试对应IP和端口下的d ...

  7. Learning-Python【3】:Python中的基本运算符

    一.算数运算 二.比较(关系)运算 比较运算只能在同类型之间进行,其中 int 与 float 同属于数字类型 三.赋值运算 1.增量赋值 2.链式赋值 3.交叉赋值 交换两个数的值,通常要借助第三个 ...

  8. Vue常见组件

    每一个组件都是一个vue实例 每个组件均具有自身的模板template,根组件的模板就是挂载点 每个组件模板只能拥有一个根标签 子组件的数据具有作用域,以达到组件的复用 根组件 <div id= ...

  9. vs2015调试iisexpress无法启动的问题解决方案整理

    我上传的项目代码被同事下载之后使用iisexpress调试一直报错,iisexpress无法启动只能用自己本地的iis,我本地的代码却没问题,试了两种解决办法,问题解决了,在此记录一下也总结一下 方法 ...

  10. sony Z5P 刷rec、root的方法

    想root需要刷第三方recovery,刷recovery需要先解锁.但如果直接解锁,会丧失相机算法.屏幕超逼真模式,所以不能直接来. 大体步骤就是解完锁后自己做个内核刷进去,欺骗系统让他觉得没解锁. ...