當前位置:首頁 » 編程語言 » 候選人選票c語言
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

候選人選票c語言

發布時間: 2022-10-14 21:35:35

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