投票选班长-期末项目
投票选班长-期末项目
第一部分案例描述
案例目的
有一个班采用民主投票方法推选班长,班长候选人共4位,每个人代号分别为1,2,3,4。每名同学填写一张选票,写上同意作为班长的一位候选人的代号。统计每一位班长候选人所得到的选票数,其中每张选票上的所填代号由键盘输入,数字0作为输入终止标志。
要求输出选票统计结果及最终哪位候选人当选为班长。求获得选票最多的候选人的功能要求用函数实现。
案例难度
★★
案例覆盖技能点
a) 函数
b) 数组
c) 循环与选择
d) 数据类型
e) C语言综合知识的运用
推荐案例完成时间
共2次课程
适用课程和对象
C语言程序设计(A)
第二部分 需求和开发环境
使用技术和开发环境
Visual Studio C++ 6.0
#include <algorithm>
#include <iostream>
#include <cstring>
#include <cstdlib>
#include <cstdio>
#include <queue>
#include <cmath>
#include <map>
using namespace std;
int fnum[4];//声明一个统计候选人票数的存储数组
void showMain() //将提示信息封装到一个函数中,方便在主函数中调用
{
printf("开始选举。请注意:有效候选人的代号为1,2,3,4。\n");
}
void showResult() //展示选举结果函数
{
int i;
printf("选举结果如下:\n");
for(i=0;i<4;i++)
{
printf("%d : %d\n",i+1,fnum[i]);//输出统计的结果,注意下标i+1代表候选人编号;
}
}
void Process()
{
int i,j;
int max=0;
int flag;//标记候选人票数最多的变量
for(i=0;i<4;i++)
{
if(fnum[i]>max)
{
max=fnum[i];
flag=i; //标记票数最多人的编号,记录下来
}
}
/*for(i=0;i<3;i++)
{
for(j=0;j<3-i;j++)
{
if(fnum[j]<fnum[j+1])
{
swap(fnum[j],fnum[j+1]);
}
}
}*/
printf("选举最终结果是:候选人代号是%d的同学当选班长\n",flag+1);
//printf("%d\n",max);
}
int main()
{
int num1=0,num2=0,num3=0,num4=0;//统计票数的变量进行初始化为0;
int num;
showMain();
while(1) //将输入部分放入死循环中,使投票人进行循环输入;
{
fnum[4]=0;
printf("请输入班长候选人代号(数字0结束):");
scanf("%d",&num);
if(num==0)
{
printf("选举结束\n");
break;
}
if(num==1)
{
num1++;
}
if(num==2)
{
num2++;
}
if(num==3)
{
num3++;
}
if(num==4)
{
num4++;
}
if(num!=1 && num!=2 && num!=3 && num!=4)
{
printf("此选票无效\n");
}
}
fnum[0]=num1;
fnum[1]=num2;
fnum[2]=num3;
fnum[3]=num4; //将4个候选人的票数分别放到一个fnum[]数组中
showResult();
Process();
return 0;
}