㈠ 求做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(希尔排序)函数对所有参选人按照得票数目进行降序排序,并将排序结果输出。
㈡ c语言 选票
。。。。。。。。好复杂
㈢ C语言投票系统
有一个函数推荐给你
memset(ch,0,sizeof(ch));
这个函数是将ch数组清零。
第一个参数,数组的首地址,也就是函数名
第二个参数,初始化为0
第三个参数,数组的大小
你的问题,早已经在十几年前被c语言协会所发现,所以这个函数是在程序中清零数组的
#include<stdio.h>
#include<string.h>
void mian()
{int a,b,c,d,i;
a=0;b=0;c=0;d=0;
char q[10]="huang",w[10]="wang",e[10]="zhao",r[10]="yang",ch[10];
ch[10]={0};
printf("请开始投票\n");
for(i=0;i<10;i++)
{ gets(ch);
if(strcmp(ch,q)==0)
a=a+1;
if(strcmp(ch,w)==0)
b=b+1;
if(strcmp(ch,e)==0)
c=c+1;
if(strcmp(ch,r)==0)
d=d+1;
memset(ch,0,sizeof(ch);
}
printf("huang的票数为%d",a);
printf("wang的票数为%d",b);
printf("zhao的票数为%d",c);
printf("yang的票数为%d",d);
}