投票评选十佳运动员
更新时间:2024-04-02 06:28:01 阅读量: 综合文库 文档下载
- 投票评选规则推荐度:
- 相关推荐
十佳运动员评选活动
一、功能要求
某市体委与电视台联合举办十佳运动员有奖评选活动,具体说明如下
(1)体委组织有关人士评出了如表1所示的20个候选人名单
运动员编号 运动员姓名 运动员编号 运动员姓名
(2)电视台在网上设立了投票站供市民投票,以便用计算机进行统计和核对。选票格式如表2所示
选票编号 0000001 投票人姓名 投票人地址 拟选运动员编号
选票号为7位数字,有效的运动员编号是01~20
(3)计算机统计的具体任务是
① 统计出各候选人的得票数,并根据得票数排定名次,选出十佳人员
② 根据命中率选出10个获奖的参选者,并排定名次
命中率=命中分+次序分
命中分:选中十佳中的一个即得10分,选中n个得n╳10分(不考虑次序)
次序分:选票中的第一个运动员与十佳中的第一名相符(简称选中第一名)得9分
选中第二名得8分,……,选中第十名的0分
(4)编写出完成以上统计任务的程序
具体要求如下
1 候选人数据和选票数据应以文本文件的方式分别存放在两个文件中,选票中参选
的地址可以不考虑
2程序中,对选票数据要求采用结构体作数据结构
3 程序除能完成统计功能外,应具有核对选票数据的功能,并且每一功能的实现要
用选择菜单的方式进行(使用简单的文本菜单),菜单包含以下几项
a. 统计
b. 核对选票
c. 退出
4 各个功能以及相对独立的任务要求编写成独立的函数,主函数只用于管理菜单和
织调用个功能函数
5统计结果除在屏幕显示外,还要求输出到文件中 最好用上链表
#include
/* 存储运动员信息的文件 */ #define DATA1 \ /* 存储选票信息的文件 */ #define DATA2 \
typedef struct sportsman {
int number;
char name[21]; int tickets;
struct sportsman *next; } sportsman;
typedef struct ticket {
char ticknum[8]; char votername[21]; char voteraddr[51]; int sportsman; int scores; struct ticket *next; } ticket;
int SIZE1, SIZE2;
sportsman *head1, *tail1; ticket *head2, *tail2;
void init(); void cleanup(); void create(); void process(); sportsman *sortlist1(); ticket *sortlist2(); void showdetail(); void showtop10(); void clearlist();
void init() {
SIZE1 = sizeof(sportsman);
SIZE2 = sizeof(ticket);
head1 = tail1 = (sportsman *)malloc(SIZE1); head2 = tail2 = (ticket *)malloc(SIZE2); memset(head1, 0, SIZE1); memset(head2, 0, SIZE2); }
void create() {
FILE *infile = fopen(DATA1, \
if (infile == NULL)
{
printf(\无法打开文件1\\n\ cleanup(); exit(1); } while (1) {
char nm[21]; int num;
memset(nm, 0, 21); num = 0;
fscanf(infile, \
if (num == 0) break;
sportsman *node = (sportsman *)malloc(SIZE1); node->number = num; node->tickets = 0;
fscanf(infile, \ tail1->next = node; tail1 = node; }
tail1->next = NULL; fclose(infile);
infile = fopen(DATA2, \
if (infile == NULL) {
printf(\无法打开文件2\\n\
cleanup(); exit(1); } while (1) {
char num[8];
memset(num, '\\0', 8); fscanf(infile, \
if (num[0] == '\\0') break;
ticket *node = (ticket *)malloc(SIZE2); memset(node, 0, SIZE2);
strcpy(node->ticknum, num);
fscanf(infile, \&node->sportsman); tail2->next = node; tail2 = node; }
fclose(infile); }
void clearlist() {
sportsman *q1, *p1; q1 = p1 = head1->next; ticket *q2, *p2;
q2 = p2 = head2->next;
while (p1 != NULL) {
q1 = q1->next; free(p1); p1 = q1; }
while (p2 != NULL) {
q2 = q2->next; free(p2); p2 = q2; }
tail1 = head1; tail2 = head2; head1->next = NULL; head2->next = NULL; }
void cleanup() {
free(head1); free(head2); }
sportsman *sortlist1(sportsman *head) {
sportsman *cursor, *first, *tail, *prev, *max; first = NULL;
while (head != NULL)
{
for (cursor = max = head; cursor->next != NULL; cursor = cursor->next) {
if (cursor->next->tickets > max->tickets) {
prev = cursor; max = cursor->next; } }
if (first == NULL) first = tail = max;
else
tail = tail->next = max;
if (max == head) head = head->next; else if (prev)
prev->next = max->next; }
if (first != NULL) {
tail->next = NULL; tail1 = tail; }
return first; }
ticket *sortlist2(ticket *head) {
ticket *cursor, *first, *tail, *prev, *max; first = NULL;
while (head != NULL)
{
for (cursor = max = head; cursor->next != NULL; cursor = cursor->next) {
if (cursor->next->scores > max->scores) {
prev = cursor;
max = cursor->next; } }
if (first == NULL) first = tail = max; else
tail = tail->next = max;
if (max == head) head = head->next; else if (prev)
prev->next = max->next; }
if (first != NULL) {
tail->next = NULL; tail2 = tail; }
return first; }
void process() {
if (head1->next != NULL || head2->next != NULL) clearlist();
create();
sportsman *p1 = head1->next; ticket *p2; int score = 9;
while (p1 != NULL) {
p2 = head2->next;
while (p2 != NULL)
{
if (p2->sportsman == p1->number) ++p1->tickets;
p2 = p2->next; }
p1 = p1->next; }
head1->next = sortlist1(head1->next); p2 = head2->next;
while (p2 != NULL && score > 0) {
p1 = head1->next;
while (p1 != NULL)
{
if (p2->sportsman == p1->number) {
p2->scores += score; break; }
p1 = p1->next; }
--score;
p2 = p2->next; }
head2->next = sortlist2(head2->next);
showtop10(); }
void showtop10()
{
printf(\最佳前10名运动员名单:\\n\ sportsman *p1 = head1->next; int i = 0;
ticket *p2 = head2->next;
while (p1 != NULL && i < 10)
{
printf(\ p1 = p1->next; ++i; }
printf(\最佳前10名投票人名单:\\n\ i = 0;
while (p2 != NULL && i < 10) {
printf(\ p2 = p2->next; ++i; } }
void showdetail() {
printf(\详细投票信息:\\n\ int pagesize = 10;
ticket *p1 = head2->next;
while (p1 != NULL) {
printf(\选票编号: %s\\n\ printf(\投票人姓名:%s\\n\ printf(\投票人住址:%s\\n\
int sportsman = p1->sportsman; printf(\运动员编号:\
if (sportsman < 10)
printf(\ else
printf(\
if (--pagesize == 0)
{
pagesize = 10;
printf(\按任意键继续。。。\ getch(); }
p1 = p1->next; } }
void main()
{
printf(\欢迎使用简单投票系统\\n\ char choice; init();
while (1)
{
printf(\功能选择:\\n\
printf(\统计\\tb. 核对选票\\tc. 退出\\n\ choice = getchar(); while (getchar() != '\\n');
switch (choice) {
case 'a': process(); break; case 'b':
showdetail(); break; case 'c': cleanup(); exit(0);
}
printf(\按任意键继续。。。\
getchar(); system(\ } }
正在阅读:
投票评选十佳运动员04-02
初级保育员理论试题及答案(含答案)04-18
2016年河南省中级抹灰工试题03-22
《孔孟两章》知识点整理02-20
劳务合同范本简易版04-15
复旦大学汪涌豪中国文学传统课堂笔记第三节06-14
复原力_父母教养方式与大学生压力的研究06-08
2013年教师继续教育考试《教师专业标准解读》-中学教师 学案,笔05-21
02保育员中级技能复习资料-15版01-08
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 十佳
- 运动员
- 评选
- 投票
- 吉大16秋学期《计算机网络基础》在线作业二满分答案
- 2018岳阳市专业技术人员培训 创新引领开放崛起 拓展富民强生之路
- 汉丰一校2017年上期教师命题竞赛活动方案
- 系统及设备部件关键性评估操作规程
- 06-07(2)概率统计试卷(A卷)
- 实验报告
- 滚动轴承技术术语(中英文)
- 从技术骨干到管理人员的转变之我见
- 国网2014真题
- CANopen从站协议在stm32分析和说明
- 高 等 教 育 学- 上海交通大学医学院精品课程
- 昆明市人民政府办公厅关于印发昆明市主城区集体土地房屋拆迁补偿
- 浅谈原平炕围画 - 图文
- 管理学1
- 公园晨练管理
- 世界水利发展史
- 乙二醇装置2#乙烯管线隔离动火工艺处理方案
- 2018最新版自查报告范本范文-国资委抓好中秋、国庆、古尔邦节期
- 劳动监察仲裁调研题目选
- 仓储物流RFID市场竞争格局与投资机会分析报告 - 目录 - 图文