C语言学生投票系统(隐藏投票过程)

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");
        }
     }
}

以上代码主要含有四个函数,分别是标号,统计,投票和记录最终结果的函数,因为定义的时候方便看就拿拼音写了函数名。

下面是这个程序的运行实例在这里插入图片描述
在无人问津之时,即是登峰造极之日。

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值