6.具体程序:

#include<stdio.h>
#include<stdlib.h>
#include<math.h>
void Udecide_n();
int Decide_n();
void Delete_n(int n); //申请空间的释放
void Delete_u(); //申请空间的释放
typedef struct Pnode //一个人的信息:输入的数,获得的分数
{
float number; //输入的数
float absoluten_n; //与黄金点差的绝对值
int grade; //获得的分数
}Pnode;
typedef struct PNode
{
float number; //输入的数
float absoluten_n; //与黄金点差的绝对值
int grade; //获得的分数
struct PNode * next;
};
typedef struct Decide_Node //决定进行游戏轮数的结构体
{
float average; //黄金点的值
Pnode *node; //
}Decide_Node;
typedef struct U_decide_Node //未决定进行游戏轮数的结构体
{
float average; //黄金点的值
PNode *node; //每轮数据的成员
struct U_decide_Node *next;
}U_decide_Node;
Decide_Node *Dhead; //决定游戏使用的是结构数组,结构数组的头部
U_decide_Node *udhead, *udnext, *udtail; //未决定的游戏轮数的,游戏每一局由一个结构体来表示,使用结构的3个指针
PNode *phead, *pnext, *ptail; //每一轮游戏下的,参加的游戏的人是不确定得是,使用结构来表示,这里是表示人结构的3个指针
void main()
{
int i;
int n; //知道游戏轮数的 游戏轮数
printf("\t\t\t\t┌───────┐\n");
printf("\t\t\t\t│ │\n");
printf("\t\t\t\t│ 黄金点游戏 │\n");
printf("\t\t\t\t│ │\n");
printf("\t\t\t\t└───────┘\n");;
printf("游戏规则如下:\n");
printf("N个同学(N通常大于10),每人写一个0~100之间的有理数 (不包括0或100)");
printf("交给裁判,裁判算出所有数字的平均值,然后乘以0.618(所谓黄金分割常数)," );
printf("得到G值。提交的数字最靠近G(取绝对值)的同学得到N分,离G最远的同学得到-2分,其他同学得0分。\n");
printf("1.没有决定游戏进行几轮,先来一次\n2.决定游戏进行几轮\n3.退出\n"); //每一轮的次数是N次
next2:printf("请选择选项:");
scanf("%d",&i);
switch (i)
{
case 1: Udecide_n(); break;
case 2:
{
n = Decide_n();

break;
}
case 3:; break;
default:
{
printf("请重新输入\n");
goto next2;
}
}
printf("谢谢惠顾\n");
Delete_n(n); //释放空间
Delete_u(); //释放空间
}
void Delete_n(int n)
{
int i;
for (i = 0; i < n;i++0)

{
free(Dhead[i].node);
}
free(Dhead);
}
int Decide_n()
{
int n; //玩游戏的总轮数
int i; //记录游戏玩到第几轮
int m; //玩一轮游戏,参加游戏的人数
int j; //在一轮游戏中,玩游戏的人
float sum; //一轮游戏中全部输入的数字和,同时也是黄金点的值
float abmax; //输入的数与黄金点相差的绝对值最大值
float abmin; //输入的数与黄金点相差的绝对值最小值
int x; //是否输出每一轮的输入的信息
printf("请输入要进行的轮数:");
scanf("%d", &n);
Dhead = (Decide_Node*)malloc(n*sizeof(Decide_Node));
if (Dhead == NULL)
{
printf("Decide_Node空间申请失败\n");
exit(1);
}
for (i = 0; i < n; i++)
{

printf("请输入有几个人进行游戏:");
scanf("%d", &m);
Dhead[i].node = (Pnode *)malloc(m*sizeof(Pnode));
if (Dhead[i].node == NULL)
{
printf("Dhead[%d].node申请空间失败\n", i);
exit(1);
}
sum = 0;
for (j = 0; j < m; j++)
{
printf("请第%d个人输入数字:", j + 1);
scanf("%f", &Dhead[i].node[j].number);
sum = sum + Dhead[i].node[j].number;
}
sum = sum / j*0.618;
Dhead[i].average = sum;
abmax = 0;
abmin = 100;
for (j = 0; j < m; j++) //计算每一个输入的数字与黄金的绝对值,并且找出最大绝对值和最小绝对值
{
Dhead[i].node[j].absoluten_n = abs(Dhead[i].node[j].number - sum);
if (abmax < Dhead[i].node[j].absoluten_n)
{
abmax = Dhead[i].node[j].absoluten_n;
}
if (abmin>Dhead[i].node[j].absoluten_n)
{
abmin = Dhead[i].node[j].absoluten_n;
}
}
for (j = 0; j < m; j++) //给每一个参加游戏的人打分
{
if (Dhead[i].node[j].absoluten_n == abmax)
{
Dhead[i].node[j].grade = -2;
}
else if (Dhead[i].node[j].absoluten_n == abmin)
{
Dhead[i].node[j].grade = m;
}
else
{
Dhead[i].node[j].grade = 0;
}
}
printf("黄金点值:%.2f\n",Dhead[i].average);
printf("输出各自的得分情况\n");
for (j = 0; j < m; j++)
{
printf("第%d个人得分是;%d\n",j+1,Dhead[i].node[j].grade);
}
next1: printf("是否要输出所有人数的数字\n");
printf("1,是\t\t2,否\n");
printf("请输入选项:");
scanf("%d", &x);
switch (x)
{
case 1:
{
for (j = 0; j < m; j++)
{
printf("第%d个人输入的数是:%d\n", j + 1,(int)Dhead[i].node[j].number);
}
break;
}
case 2:break;
default:
{
printf("输入无效,请重新输入\n");
goto next1;
}
}
}
return n;
}
void Delete_u()
{
udnext = udhead->next;
while (udnext)
{
phead = udnext->node;
pnext = phead->next;
while (pnext)
{
phead->next = pnext->next;
free(pnext);
pnext = phead->next;
}
free(phead);
udhead->next = udnext->next;
free(udnext);
udnext = udhead->next;
}
free(udhead);
}
void Udecide_n()
{
int i; //是否还有下一个人参与游戏在一轮中中的标志
int j; //是否进行下一轮游戏的标志
int n; //每轮游戏参与游戏的人
float sum; //一轮游戏中全部输入的数字和,同时也是黄金点的值
float abmax; //输入的数与黄金点相差的绝对值最大值
float abmin; //输入的数与黄金点相差的绝对值最小值
int x; //是否输出每一轮的输入的信息
udhead = (U_decide_Node *)malloc(sizeof(U_decide_Node));
if (!udhead)
{
printf("udhead空间申请失败\n");
exit(1);
}
udtail = udhead;
while (1)
{
udnext = (U_decide_Node *)malloc(sizeof(U_decide_Node));
if (!udnext)
{
printf("udnext空间申请失败\n");
exit(1);
}
udnext->next = NULL;
udtail->next = udnext;
udtail = udnext;
phead = (PNode *)malloc(sizeof(PNode));
if (!phead)
{
printf("phead空间申请失败\n");
exit(1);
}
phead->next = NULL;
udnext->node = phead;
ptail = phead;
sum = 0;
n = 0;
printf("请至少输入3个数\n");
while (1) //构建每一轮游戏的链表
{
pnext = (PNode *)malloc(sizeof(PNode));
if(!pnext)
{
printf("pnext空间申请失败\n");
exit(1);
}
pnext->next = NULL;
ptail->next = pnext;
ptail = pnext;
printf("请第%d个人输入:",n+1);
scanf("%f",&pnext->number);
n++;
sum = sum + pnext->number;
if (n >=3)
{
next3: printf("是否要再输入:\n");
printf("1.是\t\t2.不是\n");
printf("请选择选项:");
scanf("%d", &i);
if (i == 2)
{
break;
}
else if (i != 1)
{
printf("输入无效请重新输入\n");
goto next3;
}
}
}
sum = sum / n*0.618;
udnext->average=sum;
abmin = 100;
abmax = 0;
pnext = phead->next;
while (pnext) //计算每一个输入的数字与黄金的绝对值,并且找出最大绝对值和最小绝对值
{
pnext->absoluten_n = abs(pnext->number - sum);
if (abmax < pnext->absoluten_n)
{
abmax =pnext->absoluten_n;
}
if (abmin>pnext->absoluten_n)
{
abmin = pnext->absoluten_n;
}
pnext = pnext->next;
}
pnext = phead->next;
while (pnext) // 给每一个参加游戏的人打分
{
if (pnext->absoluten_n == abmax)
{
pnext->grade = -2;
}
else if (pnext->absoluten_n == abmin)
{
pnext->grade = n;
}
else
{
pnext->grade = 0;
}
pnext=pnext->next;
}
printf("黄金点值:%.2f\n", udnext->average);
printf("输出各自的得分情况:\n");
pnext = phead->next;
n = 0;
while(pnext)
{
printf("第%d个人得分是;%d\n", n+1, pnext->grade);
n++;
pnext = pnext->next;
}
next4: printf("是否要输出所有人数的数字:\n");
printf("1,是\t\t2,否\n");
printf("请输入选项:");
scanf("%d", &x);
switch (x)
{
case 1:
{
for (n = 0,pnext=phead->next; pnext; n++, pnext = pnext->next)
{
printf("第%d个人输入的数是:%d\n", n + 1, (int)pnext->number);
}
break;
}
case 2:break;
default:
{
printf("输入无效,请重新输入\n");
goto next4;
}
}
next5: printf("是否要再进行一轮游戏:\n");
printf("1.是\t\t2.不是\n");
printf("请选择选项:");
scanf("%d", &j);
if (j == 2)
{
break;
}
else if (j != 1)
{
printf("输入无效请重新输入\n");
goto next5;
}

}
}

week4c:个人博客作业的更多相关文章

  1. 个人博客作业Week1

    个人博客作业Week1 一.问题 通读<构建之法>我有一下几个问题 PM没有参与代码编如何进行管理. 软件工程师的职业资格考试对我们来说很有必要吗. 当我们为用户开发软件时我们需要了解用户 ...

  2. Java课程设计——博客作业教学数据分析系统(201521123084 林正晟)

    #课程设计--博客作业教学数据分析系统(201521123084 林正晟) 1.团队课程设计博客链接 博客作业教学数据分析系统 2.个人负责模块或任务说明 学生登陆界面的前端实现和与数据库的连接 学生 ...

  3. Java课程设计——博客作业教学数据分析系统(201521123091 李嘉廉)

    #课程设计--博客作业教学数据分析系统(201521123084 李嘉廉) 1.团队课程设计博客链接 博客作业教学数据分析系统 2.个人负责模块或任务说明 數據分析 Kmeans聚類算法實現 多元綫性 ...

  4. java课程设计——博客作业教学数据分析系统(201521123083 戴志斌)

    目录 一.团队课程设计博客链接 二.个人负责模块或任务说明 三.自己的代码提交记录截图 四.自己负责模块或任务详细说明 五.课程设计感想 (题外话,终于可以用markdown建目录) 一.团队课程设计 ...

  5. Java课程设计——博客作业教学数据分析系统(201521123082 黄华林)

    Java课程设计--博客作业教学数据分析系统(201521123082 黄华林) 一.团队课程设计博客链接 博客作业教学数据分析系统(From:网络五条狗) 二.个人负责模块或任务说明 1.网络爬虫 ...

  6. Java语言课程设计——博客作业教学数据分析系统(201521123107 张翔)

    #Java语言课程设计--博客作业教学数据分析系统(个人博客) 1.团队课程设计博客链接 [博客作业教学数据分析系统(From:网络五条狗)](http://www.cnblogs.com/fanta ...

  7. 团队作业1——团队展示&博客作业查重系统

    团队展示: 1.队名:六个核桃 2.队员学号: 王婧(201421123065).柯怡芳(201421123067组长).陈艺菡(201421123068). 钱惠(201421123071).尼玛( ...

  8. C语言第七次博客作业--一二维数组

    一.PTA实验作业 题目1:找鞍点 1. 本题PTA提交列表 2. 设计思路 定义n,i,j,ii,jj,a[7][7],flag,max 输入n for i=0 to i=n for j=0 to ...

  9. 2018上C语言程序设计(高级)博客作业样例

    要求一(20分) 完成PTA中题目集名为<usth-C语言高级-第1次作业>中的所有题目. 要求二 PTA作业的总结(20分+30分) 将PTA第1次作业作业中以下2道题的解题思路按照规定 ...

  10. C语言最后一次博客作业

    1.当初你是如何做出选择计算机专业的决定的? 一开始选专业的时候,说实话我很纠结也很迷茫,对我来说,中学时代,似乎就只要考好试,做好题就可以了,对于未来想要做啥并没有那么多的规划和想法,偶尔跟基友畅聊 ...

随机推荐

  1. [Golang学习笔记] 02 命令源码文件

    源码文件的三种类型: 命令源文件:可以直接运行的程序,可以不编译而使用命令“go run”启动.执行. 库源码文件 测试源码文件 面试题:命令源码文件的用途是什么,怎样编写它? 典型回答: 命令源码文 ...

  2. 开发自己的DataSet查看器

    记得在vs2002不是2003上没有DataSet调试器,断点时查看DataSet内容非常麻烦,最后有人开发了第三方工具解决了此问题. 后续的vs版本内部都自带的此工具可查看DataSet/DataT ...

  3. BootStrap 获得轮播中的索引和当前活动的焦点对象

    $('#myCarousel').on('slide.bs.carousel', function (event) { var $hoder = $('#myCarousel').find('.ite ...

  4. 苏州Uber优步司机奖励政策(4月21日)

    滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...

  5. 【HNOI2015】开店

    题面 题解 树链剖分 + 主席树 先考虑一个简单一点的问题: [LNOI2014]LCA 我们考察\(dep[\mathrm{LCA}(i, x)]\)的性质,发现它是\(i\)和\(x\)的链交的长 ...

  6. 微信小程序:设置页面计时自动跳转

    一.功能描述 当出发某一事件后,希望在规定的时间后自动执行另一事件,比如页面跳转功能. 二.代码实现 使用setTimeout函数,单位为毫秒ms setTimeout(function(){ wx. ...

  7. let和var定义变量的区别

    使用 let 语句声明一个变量,该变量的范围限于声明它的块中.  可以在声明变量时为变量赋值,也可以稍后在脚本中给变量赋值. 使用 let 声明的变量,在声明前无法使用,否则将会导致错误. 如果未在  ...

  8. 非局部均值滤波算法的python实现

    如题,比opencv自带的实现效果好 #coding:utf8 import cv2 import numpy as np def psnr(A, B): return 10*np.log(255*2 ...

  9. Wannafly挑战赛18B 随机数

    Wannafly挑战赛18B 随机数 设\(f_i\)表示生成\(i\)个数有奇数个1的概率. 那么显而易见的递推式:\(f_i=p(1-f_{i-1})+(1-p)f_{i-1}=(1-2p)f_{ ...

  10. Storm 第二章 Storm安装

    1 strom集群规划 Nimbus:hadoop1 zookeeper:hadoop2,hadoop3,hadoop4 supervisor:hadoop5,hadoop6,hadoop7 安装文件 ...