当前位置:首页 » 编程语言 » c语言程序投票
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言程序投票

发布时间: 2022-12-17 21:40:58

1. 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);
}

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

3. C语言编写投票及排序系统(框架)

#include <stdio.h>
#include <stdlib.h>

typedef struct node
{ // 候选人结构
char name[8];
int num;
int score;
int tax;
}Node;

void shellSort( Node **, int );

int main(void)
{
int n = 0;
Node * pArray[9]={};//指针数组,长度9
int count = 0;
//int status = 1;
int vote = -1;

printf("Input the number of the candidates(1-9):\n");
scanf("%d", &n);
while(getchar()!='\n')
{
;
}

while (n>9 || n<1)
{
if (n>9)
{
printf("No, there cannot be so many candidates. Retry.\n");
}
else
{
printf("No candidates? It cannot be! Retry!\n");
}
scanf("%d", &n);
while(getchar()!='\n')
{
;
}
}

for (count=0; count<n; count++)
{
pArray[count] = (Node *)malloc(sizeof(Node));
pArray[count]->num = count+1;
pArray[count]->tax = 0;
pArray[count]->score = 0;
printf("Input No.%d candidate's name:\n", count+1);
gets(pArray[count]->name);
}

while (vote)
{
printf("Now, let us vote:\n*************\n");
for (count=0; count<n; count++)
{
printf("%d. %s\n", count+1, pArray[count]->name);
}
printf("0.quit\n*************\n");
scanf("%d", &vote);
while(getchar()!='\n')
{
;
}

while (vote<0 || vote>n)
{
printf("No joke, thank you. Revote.\n");
scanf("%d", &vote);
while(getchar()!='\n')
{
;
}

}
if (vote>0&&vote<=n)
{
pArray[vote-1]->score++;
}
}

printf("Finish voting. Let's find the winner......\n\n");

shellSort( pArray, n );

for (count=0; count<n; count++)
{
pArray[count]->tax=count+1;
printf("%d. %s %d votes.\n", count+1, pArray[count]->name, pArray[count]->score);
}

for(count=0; count<n; count++)
{
free(pArray[count]);
pArray[count] = NULL;
}

return 0;
}

void shellSort( Node *p[], int len )
{
const int Length = len;
int i = 0;
int j = 0;
int gap = 0;
Node *temp = NULL;

gap = Length/2;

while (gap>0)
{
for (i=gap; i<Length; i++)
{
j = i - gap;
temp = *(p+i);

while ( (j>=0) && (p[j]->score < temp->score) )
{
*(p+j+gap) = *(p+j);
j = j - gap;
}

*(p+j+gap) = temp;
}
gap /= 2;
}
}

运行与输入方式:

1.程序提示,输入候选人人数, 输入数字(1-9),大于9或小于1或者输入不合法字符会提示错误。

2.程序提示依次输入候选人名字,不能超过7个字符(少了点,你题目给的,数组拉长点会更安全些)

3.按照程序提示的数字开始投票,或者退出。

4.投票过程结束后,程序调用shellSort(希尔排序)函数对所有参选人按照得票数目进行降序排序,并将排序结果输出。

目前没有发现什么严重bug,你先用着,如果出现bug再告诉我,我再改,写了一个多小时,累啊。

4. 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;

}

5. c语言程序设计 投票程序

#include<stdio.h>
int main()
{
int a_score=0,b_score=0,c_score=0,max_score,number,number_,i,j,k,count=0;;
char vote[100][3],c;
printf("投票人数:");
scanf("%d",&number);
i=0;
number_=number;
while(number-->0)
{
for(j=0;j<3;j++)
{
do{
c=getchar();
}while(isspace(c));
for(k=0;k<j;k++)
if(c==vote[i][k])
{

printf("该票无效!\n");
i--;
count++;
break;
}
if(k>=j)
vote[i][j]=c;
}
i++;

}
for(i=0;i<number_-count;i++)
{
for(j=0;j<3;j++)
switch(j)
{
case 0:switch(vote[i][j])
{
case 'a':a_score+=5;break;
case 'b':b_score+=5;break;
case 'c':c_score+=5;break;
default :break;
}
break;
case 1:switch(vote[i][j])
{
case 'a':a_score+=3;break;
case 'b':b_score+=3;break;
case 'c':c_score+=3;break;
default :break;
}
break;
case 2:switch(vote[i][j])
{
case 'a':a_score+=2;break;
case 'b':b_score+=2;break;
case 'c':c_score+=2;break;
default :break;
}
break;
default:break;
}
}
printf("三位候选人得分:\na:%d\nb:%d\nc:%d\n",a_score,b_score,c_score);
if(a_score>b_score&&a_score>c_score)
{
printf("祝贺a当选冠军\n");
}
else if(b_score>a_score&&b_score>c_score)
{
printf("祝贺b当选冠军\n");
}
else if(c_score>a_score&&c_score>b_score)
{
printf("祝贺c当选冠军\n");
}
else
printf("重新投票\n");
getch();
return 0;
}
希望对你有所帮助,花了我点时间,呵呵!

6. C语言投票程序

提示输入,可以直接输入下标,0~2。
这样就不需要判断了。还能避免输入错误。
提示输入的文字建议用循环动态生成。这样方便后期扩展,比如变成5个人。
提示输入的文字大致可以这样写:
把数组大小定义成常量,方便修改,比如#define SIZE 3
printf("请输入对应数字,为下列人物投票:");
for(i=0;i<SIZE;i++)
printf("%d:%s ",i,arr[i].name);
这样后面输入只要输入结构数组下标,就可以直接++,无需判断。

7. 投票程序 C语言

#include<stdio.h>
#include<stdlib.h>

void max(int a,int b,int c);
int main(){
int a=0,b=0,c=0;
char Mr[3];
int count;

printf("请输入投票的次数:");
scanf("%d",&count);

while(count--){
printf("请输入您的投票顺序:");
for(int i=0;i<3;i++)
{
fflush(stdin);
scanf("%c",&Mr[i]);
}

if(Mr[0]=='a')
a+=5;
else if(Mr[0]=='b')
b+=5;
else if(Mr[0]=='c')
c+=5;

if(Mr[1]=='a')
a+=3;
else if(Mr[1]=='b')
b+=3;
else if(Mr[1]=='c')
c+=3;

if(Mr[2]=='a')
a+=2;
else if(Mr[2]=='b')
b+=2;
else if(Mr[2]=='c')
c+=2; }

max(a,b,c);
system("pause");
}

void max(int a,int b,int c){
int temp;
if(a>b) temp=a;
else temp=b;

if(temp>c)
{
if(temp==a)
printf("足球先生是:a\n");
else printf("足球先生是:b\n");
}
else printf("足球先生是:c\n");
}

每输入一个字符以回车结束。
解题思想不如楼上,但楼上的有错误,解决办法是在do--while 循环中的scanf语句之前加上fflush(stdin);

输入字符是也是每个字符均以回车结束,而不是“中间用空格间隔”。

8. 投票程序 C语言

http://..com/question/165146028.html

9. C语言经典候选人投票问题

......
//#if(1)
int m=0;
for (i = 1; i < 3; i++)
{
if (leader[m].count < leader[i].count)
m=i;
}
printf("得票最多的是:%s\n", leader[m].name);
//#endif
return 0;
}

10. 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]);

}