C语言学生投票系统
代码仅供参考和学习,写的功能并不完善,有很多瑕疵,不要盲目使用。
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<conio.h>
int n;
struct persion
{
int bianhao;
char name[30];
int count;
}vote[100];
//自我定义函数
void bianhao(struct persion *vote)
{
int i;
for(i=0;i<n;i++)
{
printf("请输入编号:");
scanf("%d",&vote[i].bianhao);
printf("请输入姓名:");
scanf("%s",vote[i].name);
}
}
//投票函数
void toupiao(struct persion *vote)
{
char c;
int i=0;
int m=1;
vote[i].count=0;
printf("--------请输入您想投的人的编号--------\n");
printf("----------输入0时将结束投票----------\n");
printf("--------请第一位同学开始投票--------\n");
next:
c=getch();
i=c-48;
i-=1;
while(i!=-1)
{
if(i>=0&&i<n)
{
printf("*\n");
vote[i].count++;
m++;
printf("投票成功,请第%d位同学进行投票\n",m);
}
//printf("投票成功,请第%d位同学进行投票\n",m);
if(i<0||i>=n)
printf("您输入的编号不存在,请重新输入。\n");
goto next;
}
}
//最终函数
void zuizhong(struct persion *vote)
{
int flag=0,i=0,max=vote[0].count;
int v=0; //默认最大值是一号选手,所以下标为0,max为vote[0].count
for(;i<=n;i++)
{
if(max<vote[i].count){ //如果有更大的票数
max=vote[i].count; // 更新最大票数
v=i; //记录对应下标
}
}
for(i=0;i<=n;i++)
{
if(max==vote[i].count) //如果发现一个票数一样的
{
if(v!=i) //假如这个票数一样的不是自己
{
//printf("有重复\n");
flag = 1; //标记一下,有重复
printf("票数相同的有%s和%s\n",vote[v].name,vote[i].name);
}
}
}
if (!flag) //仅flag=0,即没有重复的时候,!flag=1,此时输出优胜者的票数
printf("优胜者是%s,他的票数为%d",vote[v].name,max);
}
//统计函数
void tongji(struct persion *vote)
{
int i;
for(i=0;i<n;i++)
printf("编号:%d 姓名:%s\n",vote[i].bianhao,vote[i].name);
}
int main()
{
int menu;
while (1)
{
printf("*——*******菜单*******——*\n");
printf("*——*1.输入候选人信息*——*\n");
printf("*——* 2.开始投票 *——*\n");
printf("*——*3.查看候选人信息*——*\n");
printf("*——* 4.结束投票 *——*\n");
printf("*——******************——*\n");
printf("请输入编号1-3进行操作:");
scanf("%d",&menu);
switch(menu)
{
case 1:
{
printf("请输入候选人数:");
scanf("%d",&n);
bianhao(vote);
break;
}
case 2:
toupiao(vote);
break;
case 3:
tongji(vote);
break;
case 4:
zuizhong(vote);
exit(0);
default:printf("输入有误,请重新输入。\n");
}
}
}
以上代码主要含有四个函数,分别是标号,统计,投票和记录最终结果的函数,因为定义的时候方便看就拿拼音写了函数名。
下面是这个程序的运行实例
在无人问津之时,即是登峰造极之日。