投票选班长-期末项目

来源:互联网 发布:有个淘宝的软件是什么 编辑:程序博客网 时间:2024/03/29 19:16

投票选班长-期末项目

第一部分案例描述

 

       案例目的

有一个班采用民主投票方法推选班长,班长候选人共4位,每个人代号分别为1234。每名同学填写一张选票,写上同意作为班长的一位候选人的代号。统计每一位班长候选人所得到的选票数,其中每张选票上的所填代号由键盘输入,数字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;}

0 0