C语言 黄金点游戏

  今天用C语言把这个写出来了,虽然c不是很熟,写的还是蛮简单,目前还想写一个判断输入数字是否重复,重复就需要重新输入,由于时间原因,还没有写。

  代码:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>//存储信息的结构体
typedef struct scoreNode{
	double score;
	char name[10];
	struct scoreNode *next;
}scoreNode,*scoreLink;
//寻找与黄金点相隔最近与最远的人(目前还没考虑输入数字相同的情况)最近加一分 最远减一分
void findM(scoreNode *inLink,scoreNode *scLink,double aver){
	char name[10];//存储最近人姓名
	char name1[10];//存储最远
	double temp0,temp1;
	scoreNode *p=NULL;
	p=scLink;
	temp0=temp1=fabs(inLink->score-aver);
	strcpy_s(name,strlen(inLink->name)+1,inLink->name);
	strcpy_s(name,strlen(inLink->name)+1,inLink->name);
	inLink=inLink->next;
	//printf("%lf\n",inLink->score);
	while(inLink){
		double temp2=fabs(inLink->score-aver);
		if(temp0>temp2){
			temp0=temp2;
			strcpy_s(name,strlen(inLink->name)+1,inLink->name);
		}
		if(temp1<temp2){
			temp1=temp2;
			strcpy_s(name1,strlen(inLink->name)+1,inLink->name);
		}
		inLink=inLink->next;
	}
	while(scLink){
		if(strcmp(name,scLink->name)==0){
			scLink->score=scLink->score+1;
		}
		if(strcmp(name1,scLink->name)==0){
			scLink->score=scLink->score-1;
		}
		scLink=scLink->next;
	}
	//打印输出
	while(p){
		printf("%s的得分为:%lf\n",p->name,p->score);
		p=p->next;
	}
}

void goldPoint(){
	int num;
	int time;
	double sum=0;
	double aver;
	int i;
	scoreNode *head,*p,*q,*head0,*q0,*p0;
	head=NULL;
	head0=NULL;
	q=NULL;
	q=head;
	q0=head0;

	printf("请输入参加的人数:\n");
	scanf_s("%d",&num);
	printf("请输入需要进行几轮:\n");
	scanf_s("%d",&time);
	printf("第1轮开始\n");//第一轮需要咩个人输入自己的名字 和自己的数字
	for(i=0;i<num;i++){
		p=(scoreNode *)malloc(sizeof(scoreNode));
		p0=(scoreNode *)malloc(sizeof(scoreNode));
		printf("请输入你的名字:\n");
		scanf_s("%s",p->name,sizeof(p->name));
		printf("请输入你的分数:\n");
		scanf_s("%lf",&p->score,sizeof(p->score));
		p0->next=NULL;
		p->next=NULL;
		if(head==NULL){
			head=p;
			q=p;
		}else{
			q->next=p;
			q=p;
		}
		sum+=p->score;//初始化存放分数的链表
		strcpy_s(p0->name,strlen(p->name)+1,p->name);
		p0->score=0;
		if(head0==NULL){
			head0=p0;
			q0=p0;
		}else{
			q0->next=p0;
			q0=p0;
		}

	}
	aver=sum/num*0.618;
	printf("aver=%lf\n",aver);
	q=head;
	q0=head0;
	findM(q,q0,aver);
	sum=0;
	printf("第1轮结束\n");
	for(i=0;i<time-1;i++){
		printf("第%d轮开始\n",(i+2));
		q=head;
		while(q){
			printf("%s请输入你的分数:\n",q->name);
			scanf_s("%lf",&q->score);
			sum+=q->score;
			q=q->next;
		}
		aver=sum/num*0.618;
		q=head;
		q0=head0;
		findM(q,q0,aver);
		sum=0;
		printf("第%d轮结束\n",(i+2));
	}
	printf("游戏结束\n");
}

void main(){
	goldPoint();
}

  

时间: 2024-10-27 10:40:12

C语言 黄金点游戏的相关文章

纯C语言版黄金点游戏

最近花了一段时间自学TCP/IP网络编程技术,掌握了基于TCP的C/S网络通信模型,熟悉了服务器和客户端软件程序的设计流程,并且利用多线程和互斥锁.条件变量等实现了并发机制. 项目介绍 开发环境:Visual Studio 2013运行环境:Windows 7及以上版本网络模型:使用基于TCP的C/S网络通信模型,实现黄金点游戏框架.语言技术:纯C语言开发,支持多线程,采用互斥锁和条件变量完成线程之间的同步和异步. 程序功能 服务器:用户的连接和断开都有相应的提示.一有新用户连接,服务器自动创建

结队项目(黄金点游戏)

一.项目内容 黄金点游戏是一个数字小游戏,其游戏规则是: N个同学(N通常大于10),每人写一个0~100之间的有理数 (不包括0或100),交给裁判,裁判算出所有数字的平均值,然后乘以0.618(所谓黄金分割常数),得到G值.提交的数字最靠近G(取绝对值)的同学得到N分,离G最远的同学得到-2分,其他同学得0分.玩了几天以后,大家发现了一些很有意思的现象,比如黄金点在逐渐地往下移动. 现在请大家根据这个游戏规则,编一个可以多人一起玩的小游戏程序,要求如下: 1.本作业属于结对编程项目,必须由二

结对编程——黄金点游戏

结对编程项目-黄金点游戏 一.项目描述:黄金点游戏是一个数字小游戏,其游戏规则是: N个同学(N通常大于10),每人写一个0-100之间的有理数 (不包括0或100),交给裁判,裁判算出所有数字的平均值,然后乘以0.618(所谓黄金分割常数),得到G值.提交的数字最靠近G(取绝对值)的同学得到N分,离G最远的同学得到-2分,其他同学得0分.玩了几天以后,大家发现了一些很有意思的现象,比如黄金点在逐渐地往下移动. 现在请大家根据这个游戏规则,编一个可以多人一起玩的小游戏程序,要求如下: 1.本作业

黄金点游戏(js+css)

一.项目描述:黄金点游戏 黄金点游戏是一个数字小游戏,其游戏规则是: N个同学(N通常大于10),每人写一个0-100之间的有理数 (不包括0或100),交给裁判,裁判算出所有数字的平均值,然后乘以0.618(所谓黄金分割常数),得到G值.提交的数字最靠近G(取绝对值)的同学得到N分,离G最远的同学得到-2分,其他同学得0分.玩了几天以后,大家发现了一些很有意思的现象,比如黄金点在逐渐地往下移动. 现在请大家根据这个游戏规则,编一个可以多人一起玩的小游戏程序,要求如下: 1.本作业属于结对编程项

结对编程黄金点游戏

此次结对编程我是与同班的王鑫同学一组,题目是设计一个黄金点游戏,本来看老师建议界面和服务器的设计,想用java来写,但是我俩对于java不太熟悉,忙活了两天没有结果,干脆用我二人共同会的语言C语言来实现,所以我二人决定通过C语言来实现这个游戏. 题目要求设计的游戏的规则为:有N个同学(N通常大于10),每人写一个0~100之间的有理数 (不包括0或100),交给裁判,裁判算出所有数字的平均值,然后乘以0.618(所谓黄金分割常数),得到G值.提交的数字最靠近G(取绝对值)的同学得到N分,离G最远

黄金点游戏

一.项目描述:黄金点游戏 黄金点游戏是一个数字小游戏,其游戏规则是: N个同学(N通常大于10),每人写一个0-100之间的有理数 (不包括0或100),交给裁判,裁判算出所有数字的平均值,然后乘以0.618(所谓黄金分割常数),得到G值.提交的数字最靠近G(取绝对值)的同学得到N分,离G最远的同学得到-2分,其他同学得0分.玩了几天以后,大家发现了一些很有意思的现象,比如黄金点在逐渐地往下移动. 现在请大家根据这个游戏规则,编一个可以多人一起玩的小游戏程序,要求如下: 1.本作业属于结对编程项

结队编程:黄金点游戏

一.题目描述 黄金点游戏是一个数字小游戏,其游戏规则是: N个同学(N通常大于10),每人写一个0-100之间的有理数 (不包括0或100),交给裁判,裁判算出所有数字的平均值,然后乘以0.618(所谓黄金分割常数),得到G值.提交的数字最靠近G(取绝对值)的同学得到N分,离G最远的同学得到-2分,其他同学得0分.玩了几天以后,大家发现了一些很有意思的现象,比如黄金点在逐渐地往下移动. 现在请大家根据这个游戏规则,编一个可以多人一起玩的小游戏程序,要求如下: 1.本作业属于结对编程项目,必须由二

结对编程-黄金点游戏之旅[一]

黄金点游戏 游戏描述:黄金点游戏是一个数字小游戏,其游戏规则是N个同学(N通常大于10),每人写一个0-100之间的有理数 (不包括0或100),交给裁判,裁判算出所有数字的平均值,然后乘以0.618(所谓黄金分割常数),得到G值.提交的数字最靠近G(取绝对值)的同学得到N分,离G最远的同学得到-2分,其他同学得0分.玩了几天以后,大家发现了一些很有意思的现象,比如黄金点在逐渐地往下移动. 游戏机制设计:采用B/S模式,由客户端发起请求参加游戏,服务端接收请求处理,当满足游戏结算条件的时候向客户

结对编程:黄金点游戏

一.游戏内容 黄金点游戏是一个数字小游戏,其游戏规则是: N个同学(N通常大于10),每人写一个0~100之间的有理数 (不包括0或100),交给裁判,裁判算出所有数字的平均值,然后乘以0.618(所谓黄金分割常数),得到G值.提交的数字最靠近G(取绝对值)的同学得到N分,离G最远的同学得到-2分,其他同学得0分.玩了几天以后,大家发现了一些很有意思的现象,比如黄金点在逐渐地往下移动. 二.程序实现功能 每次输入N个数字,计算出平均值和G点,输入数字最靠近G的同学得N分,离G最远的同学得到-2分