㈠ c语言选票程序怎么编写,用while写法
首先需求分析:
投票人票数多少,一对一投或一对多。
由于你问题需求不明确,我按照投票人每人1票,只给1个候选人投票或弃权。
函数功能分三个,分别:
一、初始化(这个函数改成输入就是信息登记模块)。
二、投票函数(我用随机数实现投票过程)。
三、统计投票结果。
下面是代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#define MCDE 5//候选人数量
#define MVR 100//投票人数量
typedef struct candidate
{
char name[20];//候选人名称
int vote;//得票数
}CDE;
typedef struct voter
{
char name[20];//投票人名称
int vote;//票数
}VTR;
void init(CDE **cdep,VTR **vtrp);//初始化候选人及投票人信息
void tp(CDE *cdes,VTR *vtrs);//开始投票(随机)
void tj(CDE *cdes,VTR *vtrs);//统计投票结果
int main()
{
CDE *cdes=NULL;
VTR *vtrs=NULL;
init(&cdes,&vtrs);
tp(cdes,vtrs);
tj(cdes,vtrs);
return 0;
}
void tj(CDE *cdes,VTR *vtrs)
{
int i=100,index,waiver=0,max=0,inxSave;
while(i>0)
{
index=MVR-i;
if(vtrs[index].vote==-1)
waiver++;
i--;
}
printf(" 共%d人参与投票,%d人弃权 ",MVR-waiver,waiver);
i=MCDE;
while(i>0)
{
index=MCDE-i;
printf("候选人%s得票%d张 ",cdes[index].name,cdes[index].vote);
if(max<cdes[index].vote)
max=cdes[index].vote,inxSave=index;
i--;
}
printf("得票最多的候选人为:%s,%d票 ",cdes[inxSave].name,cdes[inxSave].vote);
}
void tp(CDE *cdes,VTR *vtrs)
{
int i=MVR,index,n,n2;
srand(time(NULL));
while(i>0)
{
index=MVR-i;
if(vtrs[index].vote>0)
{
n=rand()%MCDE;//随机0~MCDE-1,给对应候选人投票
n2=rand()%2;//随机0~1,1投票,0弃权
if(n2)
{
printf("%s给候选人:%s投了%d票 ",vtrs[index].name,cdes[n].name,vtrs[index].vote);
cdes[n].vote+=vtrs[index].vote;
vtrs[index].vote=0;
}
else
{
printf("%s选择弃权 ",vtrs[index].name);
vtrs[index].vote=-1;
}
}
i--;
}
}
void init(CDE **cdep,VTR **vtrp)
{
static CDE cdes[MCDE]={{"小王",0},{"小陈",0},{"小李",0},{"小丽",0},{"小艾",0}};
static VTR vtrs[MVR];
int i=MVR,index;
char strN[20];
while(i>0)
{
index=MVR-i;
strcpy(vtrs[index].name,"投票人");
itoa(index+1,strN,10);
strcat(vtrs[index].name,strN);
vtrs[index].vote=1;
i--;
}
*cdep=cdes,*vtrp=vtrs;
}
㈡ 有三个候选人,每个选民只能投票选一人,要求用C语言编写一个投票系统,不用结构体数组编写
#include"stdio.h"
#include"string.h"
struct People
{
char name[20];
int count;
}leader[3]={"zhang",0,"li",0,"sun",0};
void main()
{
char leader_name[20];
int i,j;
for(i=1;i<=10;i++)
{
scanf("%s",leader_name);
for(j=0;j<3;j++)
if(strcmp(leader_name,leader[j].name)==0)
leader[j].count++;
}
printf("the result:\n");
for(i=0;i<3;i++)
printf("%5s:%d\n",leader[i].name,leader[i].count);
}
㈢ c语言编写一个选票统计程序4个候选人分别用ABCD表示,现有20人进行投票,每人只能选ABCD4个人中的一个
#include<stdio.h>
voidmain()
{
inti=1;
charj;
intnum[4]={0,0,0,0};
printf("共4位候选人,分别为A,B,C,D,开始投票 ");
while(i<=20)
{
printf("请输入第%d个的选票",i);
scanf("%c",&j);
switch(j)
{
case'A':num[0]++;i++;break;
case'B':num[1]++;i++;break;
case'C':num[2]++;i++;break;
case'D':num[3]++;i++;break;
default:printf("选票无效!请重新输入 ");break;
}
getchar();
}
printf("A获得%d张选票 ",num[0]);
printf("B获得%d张选票 ",num[1]);
printf("C获得%d张选票 ",num[2]);
printf("D获得%d张选票 ",num[3]);
}
㈣ c语言 投票程序
给你写一个:
#include<stdio.h>
#define M 100 //投票人数上限
#define N 3 //候选人数
struct
{
char code; //代号
int score; //得分
} candidates[N], st; //候选人结构体数组
int main()
{
char candidate[M][N]; //投票
int n, c=0; //n: 实际投票人数,c: 有效选票
int i,j,k,t;
char tmp[N+1]; //存放投票的中间变量
int s[N]={5,3,2};
for(i=0; i<N; ++i)
{
printf("输入第 %d 个候选人的代号:", i+1);
scanf("%c", &candidates[i].code);
fflush(stdin); //清除回车符
candidates[i].score=0;
}
printf("输入投票人数:");
scanf("%d",&n);
for(i=0; i<n; ++i) //输入选票
{
printf("输入第 %d 张选票:", i+1);
scanf("%s",tmp);
candidate[i][0]=tmp[0];
candidate[i][1]=tmp[1];
candidate[i][2]=tmp[2];
if(tmp[0]==tmp[1] || tmp[1]==tmp[2] || tmp[0]==tmp[2])
printf("该票无效:%s\n", tmp);
else
{
//tmp[0]号候选人加5分;
//tmp[1]号候选人加3分;
//tmp[2]号候选人加2分;
c++;
for(j=0; j<N; ++j)
for(k=0; k<N; ++k)
if(candidates[k].code==tmp[j])
candidates[k].score+=s[j];
}
}
//得分排序
for(i=0; i<N-1; ++i)
{
k=i;
for(j=i+1; j<N; ++j)
if(candidates[j].score>candidates[k].score)
k=j;
st=candidates[i];
candidates[i]=candidates[k];
candidates[k]=st;
}
if(candidates[0].score==candidates[1].score)
printf("前两名得分是否相同,都是 %d 分,重新投票。", candidates[0].score);
else
{
printf("候选人\t得分\n");
for(i=0; i<N; ++i)
printf("%c\t%d\n", candidates[i].code, candidates[i].score);
printf("祝贺 %c 当选冠军!\n", candidates[0].code);
}
return 0;
}
㈤ c语言 选票
。。。。。。。。好复杂
㈥ C程序 C语言 求助: 下面程序的功能是 统计各候选人获得的选票数,请填空 (1)和(2)两处需要填空
你好:
1, "%s"
2.strcmp(temp, list[i].name) == 0
㈦ c语言编程:设计一个投票程序,每输入一个候选人名字,其票数自增一。最后输出各自得票结果
#include <stdio.h>
#include <stdlib.h>
void main()
{int i;int j;int k;int p;int z;int y;
i=0;j=0;k=0;p=0;
start:
printf("******请投票*****\n");
printf("*投1选择后先人张*\n");
printf("*投2选择后先人王*\n");
printf("*投3选择后先人李*\n");
printf("*投4选择后先人赵*\n");
printf("*投5结束投票*****\n");
printf("*****************\n");
scanf("%d",&z);
switch(z)
{case(1):printf("投票成功\n");system("cls");i++;goto start;break;
case(2):printf("投票成功\n");system("cls");j++;goto start;break;
case(3):printf("投票成功\n");system("cls");k++;goto start;break;
case(4):printf("投票成功\n");system("cls");p++;goto start;break;
case(5):
{system("cls");
printf("是否要退出投票\n");
printf("1:确定\n");
printf("2:按错了");
scanf("%d",&y);
if(y==1)
{system("cls");
break;}
else
{system("cls");
goto start;}
}
default:printf("投票有误请重新输入");system("cls");goto start;break;
}
printf("张的票数为%d\n",i);
printf("王的票数为%d\n",j);
printf("李的票数为%d\n",k);
printf("赵的票数为%d",p);
}
㈧ C语言候选人统计选票
#include<stdio.h>
#define num 10//投票人数
struct ban{
char name[10];
int number;
};
1
main()
{
int i,d=0;
struct ban one={"Li",0};
struct ban two={"Zhang",0};
struct ban three={"Wang",0};
printf("支持谁回复对应序号:1.Li 2.Zhang 3.Wang\n");
for(i=0;i<num;i++)
{
to:scanf("%d",&d);
if(d==1)
one.number++;
else if(d==2)
two.number++;
else if(d==3)
three.number++;
else
{
printf("重新输入:");
goto to;
}
}
printf("投票结果:Li:%d票,Zhang:%d票,Wang:%d票\n",one.number,two.number,three.number);
}
㈨ C语言 选票
#include <stdio.h>
#include <string.h>
int max_num(int a, int b)
{
if (a > b)
{
return a;
}
return b;
}
int main()
{
int a[4], i, j, n, big;
memset(a, 0, sizeof(a));//初始化a
scanf("%d",&n);
for (i = 0; i < n; i++)//进行投票,用数组a的下标表示人的代号
{
scanf("%d",&j);
if (j < 1 || j > 3)//容错处理
{
printf("选票错误无此人请重新选择\n");
i--;
continue;
}
a[j]++;
}
big = max_num(max_num(a[1], a[2]), a[3]);
if(big == a[1] && big != a[2] && big != a[3])
{
printf("A\n");
}
else if(big == a[2] && big != a[1] && big != a[3])
{
printf("B\n");
}
else if (big == a[3] && big != a[2] && big != a[1])
{
printf("C\n");
}
else
{
printf("NONE\n");
}
return 0;
}
㈩ 用C语言完成程序,有三个候选人,每次输入一个得票候选人,要求输出名字和票数,设投票10次
#include<stdio.h>
#include<string.h>
intmain()
{inti,j,a[3]={0};
charname[3][9]={"张三","李四","王五"},s[9];
for(i=0;i<10;i++)
{scanf("%s",s);
for(j=0;j<3;j++)
if(strcmp(s,name[j])==0)
a[j]++;
}
for(i=0;i<3;i++)
printf("%s:%d
",name[i],a[i]);
return0;
}