足球先生投票c语言程序设计,C语言课程设计报告—投票程序足球先生[精品].doc...

C语言课程设计报告—投票程序足球先生[精品]

前言

编程实践是学习程序设计语言中的一个重要环节,许多同学在学习了课程设计这门课程后往往来不及消化以及应用所学知识。为了提高同学程序设计能力,强化同学们的理论应用于实际的能力,提高分析问题与解决问题的能力,故开设程序设计的课程使同学们的程序设计能力上一个新的台阶。

设计题目:投票程序——足球先生投票

一、程序要求

设有代号为 a,b,c,的三个足球先生候选人,根据投票者在选票上对他们的编号的填写顺序分别记分为5、3、2。请编程从键盘上输入投票人数和投票结果。统计他们的得分,并输出哪位当选为足球先生。(注意:若一张选票中有两个相同的代号,该选票作废;若最终前两名得分相同则要重新投票。)

二、设计分析

本程序中要求候选人有编号和得票数,且每张选票上要同时写上三个候选人的编号,最终输出谁是获胜者。因此可以用结构体来存储候选人的信息。唱票中要求相对应的编号分别记分为5、3、2,因此在记分程序中可以用一个条件表达式来进行统计得分。统计结果中若前两名有相同的得票数则要求重新投票。为此要求把三个后选人的总得分进行比较,则可以用一个判断语句来判断,简单明了。

三、程序设计总思路

定义结构体存放候选人的信息,包括编号和得分。输入投票总人数和投票结果,然后根据人数和投票结果进行统计得分,把选票中有相同编号的去掉,只统计没有相同编号的票数。然后对最终的分数进行比较,若存在前两名的得分情况一样,则需要重新投票,否则输出谁是获胜者。结构体定义为

struct houxuanren{

int id;

int point;

}hxr[3];

唱票情况的数据结构:

if(x!=y&&x!=z&&y!=z) //判断输入的投票中不能有重复的编号//

{hxr[0].point+=(x=='a'?5:(y=='a'?3:(z=='a'?2:0))); //第一个候选人的得分情况和算法//

hxr[1].point+=(x=='b'?5:(y=='b'?3:(z=='b'?2:0))); //第二个候选人的得分情况和算法//

hxr[2].point+=(x=='c'?5:(y=='c'?3:(z=='c'?2:0))); //第三个候选人的得分情况和算法//

比较总得分与是否要进行重新投票的数据结构为:

for(i=0;i<3;i++)

{ if(temp

{temp=hxr[i].point;

j='a'+i;

}

printf("people %c point %d\n",'a'+hxr[i].id,hxr[i].point);

} if(((hxr[0].point==hxr[1].point)&&hxr[0].point>hxr[2].point&&hxr[1].point>hxr[2].point)||( (hxr[0].point==hxr[2].point)&&hxr[0].point>hxr[1].point&&hxr[2].point>hxr[1].point)||((hxr[1].point==hxr[2].point)&&hxr[1].point>hxr[0].point&&hxr[2].point>hxr[0].point))

printf("重新投票\n"); //若有前两名得分相同进行重新投票//

else{

printf("获胜者是 people %c\n",j);

}

getch();

}

主函数设计流程:

具体的算法有:

if(x!=y&&x!=z&&y!=z)//判断选票情况,每张选票中的号码不能有相同的候选人号码否则作废//

{ hxr[0].point+=(x=='a'?5:(y=='a'?3:(z=='a'?2:0))); //第一个候选人的得分情况和算法//

hxr[1].point+=(x=='b'?5:(y=='b'?3:(z=='b'?2:0))); //第二个候选人的得分情况和算法//

hxr[2].point+=(x=='c'?5:(y=='c'?3:(z=='c'?2:0))); //第三个候选人的得分情况和算法//

printf(" point: %d %d %d\n",hxr[0].point,hxr[1].point,hxr[2].point);

continue;

若第一个选票对应为abc则对应的候选人分别得分为5,3,2。依次类推。

输入数据显示的结果如下:

图A            图B             图C

图A中输入了数据显示出谁是获胜者;图B中前两名的得分相同显示重新投票;图C中有不含B的投票但满足题意。图A和图B输入的规范的数据,图C输入中含不规范的数据但不影响结果。

后记

C语言程序是一种

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
针对投票系统源代码 仅供参考 一、课程设计目的和任务 为完成对十佳运动员的选拔,故设计此程序通过众人对20位候选人投票表决,选出其中票数最高的前十位,定为十佳运动员。这就要求本程序要能够录入20位候选人的名单,包括起编号和姓名,然后程序可以接受用户的投票,并且自动作出票数统计并输出最后的票数由高到低的排序结果。 二、分析与设计 1.程序的基本功能: (1)查看十佳运动员的候选名单。 (2) 接受用户的投票。 (3) 自动统计用户投票并输出排序结果。 (4) 添加一个管理员,可以录入候选者名单。 (5) 退出程序。 2.系统总框图: 3.定义的函数及说明: 本程序由11个函数构成 back_sel()---用来返回用户菜单 display1()------用来显示用户菜单 f_read()-------用来读出候选人名单 admirin_save()-----管理员输入数据并将数据存盘 admirin()------管理员录入数据界面 admir()——管理员界面登录 paixv()-----查看十佳候选人排名,票数由高到低 write()------调用此函数来写入票数 voting()------投票界面,进行对候选者的投票 select()-------首页界面选择 Main()---主函数。 4.算法设计: 本程序主要运用线性表的顺序存储结构,从而很容易的对数组进行操作。同时对于票数的统计排序方面采用比较经典的“冒泡法”来完成,从而优化了整个程序体,降低时间复杂度。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值