A. c语言编写的投票程序
我这个比二楼的要简单一些.你在定义中加入整形flag=0;
以下是在for语句中的修改:
for(j=0;j<2;j++)
{
scanf("%d",&k);
if(k==flag) //判断是否和先前输入一样
{
printf("errer!\nselect again please:");
j=j-1;
}
else
{
flag=k;
switch(k)
{
case 6001:
count1++;
break;
case 6002:
count2++;
break;
case 6003:
count3++;
break;
case 6004:
count4++;
break;
case 6005:
count5++;
break;
case -1:
exit();
default:
break;
}
if(j==1)//加入的两行,flag置0
flag=0;
}
}
B. c语言编写一个选票统计程序4个候选人分别用ABCD表示,现有20人进行投票,每人只能选ABCD4个
摘要 main()
C. C语言编写一个模拟投票系统
#define PRT(j,k) printf("j的票数为%d",k); 这里你如果想要J显示你想要的内容的话直接 把j放在双引号的外面就可以了, #define PRT(j,k) printf(j“的票数为%d",k); 但是这里注意的是你传入的j的值就一定要是字符串形式的,就比如 调用PRT(”jack“,10) 那么显示出来就会是 jack的票数为10 调试了一下发现要把hxr定义为hxr[2]才行 想了下也就是hxr要把\0也接收到才行 首先你定义hxr为char型,一个char型,你需要使用 %c 去接受,改成scanf("%c",&hxr); 还有 scanf以后注意谨慎使用,用多了以后你会发现 scanf会很容出问题。
D. 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;
}
E. C语言投票程序
提示输入,可以直接输入下标,0~2。
这样就不需要判断了。还能避免输入错误。
提示输入的文字建议用循环动态生成。这样方便后期扩展,比如变成5个人。
提示输入的文字大致可以这样写:
把数组大小定义成常量,方便修改,比如#define SIZE 3
printf("请输入对应数字,为下列人物投票:");
for(i=0;i<SIZE;i++)
printf("%d:%s ",i,arr[i].name);
这样后面输入只要输入结构数组下标,就可以直接++,无需判断。
F. 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;
}
G. C语言投票程序编写
楼上不是用C语言写的,而是C++
而且楼上的结果是不正确的,比如说输入四个abc,一个cba,应该是a位冠军,但是楼上的显示是c为冠军
下面是我的程序,经过初步的测试是符合要求的
#include"stdio.h"
int main()
{
char a[3];
int n,i,j,na=0,nb=0,nc=0;
printf("请输入投票的人数\n");
scanf("%d",&n);
getchar(); //getchar是为了读取输入的回车,保证后面读取的正确
for(i=1;i<=n;i++)
{
printf("请第%d位投票:\n",i);
gets(a); //输入时中间不要加空格
if(a[0]==a[1]||a[1]==a[2]||a[0]==a[2])
{
printf("此票无效\n");
}
else
{
if(a[0]=='a')na+=5;
if(a[0]=='b')nb+=5;
if(a[0]=='c')nc+=5;
if(a[1]=='a')na+=3;
if(a[1]=='b')nb+=3;
if(a[1]=='c')nc+=3;
if(a[2]=='a')na+=2;
if(a[2]=='b')nb+=2;
if(a[2]=='c')nc+=2;
}
}
if(na>nb&&na>nc)
printf("恭喜a当选冠军!\n");
else if(nb>na&&nb>nc)
printf("恭喜b当选冠军!\n");
else if(nc>na&&nc>nb)
printf("恭喜c当选冠军!\n");
else
printf("重新投票\n");
//printf("得分a:%d b:%d c:%d\n",na,nb,nc); 加上这句可以显示最后的得分情况
}
H. 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再告诉我,我再改,写了一个多小时,累啊。