投票系統c語言
① 求c語言的一道題關於投票系統的
#include<stdio.h>
voidsort(inta[][2],intn){
inti,j,k,t;
for(i=0;i<n-1;++i){
k=i;
for(j=i+1;j<n;++j){
if(a[k][1]<a[j][1])
k=j;
}
if(k!=i){
t=a[k][0];
a[k][0]=a[i][0];
a[i][0]=t;
t=a[k][1];
a[k][1]=a[i][1];
a[i][1]=t;
}
}
}
voidshow(inta[][2],intn){
inti;
for(i=0;i<n;++i)
printf("No%02d%d ",a[i][0],a[i][1]);
printf(" ");
}
intmain(){
inti,candidate,n=10,a[10][2];
for(i=0;i<n;++i){
a[i][0]=i+1;
a[i][1]=0;
}
for(i=0;i<20;++i){
printf("第%d/20個人投票:",i+1);
scanf("%d",&candidate);
if(candidate>=1&&candidate<=10)
++a[candidate-1][1];
}
sort(a,n);
show(a,n);
return0;
}
② 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會很容出問題。
③ 有三個候選人,每個選民只能投票選一人,要求用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語言編寫投票及排序系統(框架)
#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再告訴我,我再改,寫了一個多小時,累啊。
⑤ C語言投票程序
提示輸入,可以直接輸入下標,0~2。
這樣就不需要判斷了。還能避免輸入錯誤。
提示輸入的文字建議用循環動態生成。這樣方便後期擴展,比如變成5個人。
提示輸入的文字大致可以這樣寫:
把數組大小定義成常量,方便修改,比如#define SIZE 3
printf("請輸入對應數字,為下列人物投票:");
for(i=0;i<SIZE;i++)
printf("%d:%s  ",i,arr[i].name);
這樣後面輸入只要輸入結構數組下標,就可以直接++,無需判斷。
⑥ 求C語言投票系統源代碼代碼的注釋。
#include<stdio.h>
#include<conio.h> 
struct hxr
{	
	int m; 
	int point;  
} hxr[3]; //選票結構體
void main() 
{    
	int i=0,j=0,k,temp=0;
	char x,y,z;	
	struct hxr hxr[3];	
	for(i=0;i<3;i++)//初始化選票結構體
	{		
		hxr[i].m=i;		
		hxr[i].point=0;		
	}	
	printf("請輸入投票總人數\n");	
	scanf("%d",&k);
	printf("請輸入投票\n");	
	getchar();	
	for(i=1;i<=k;i++)
	{		
		scanf("%c%c%c",&x,&y,&z);	//輸入選票	
		getchar();		
		if(x!=y&&x!=z&&y!=z)//3個選票不能相同否則為無效選票
		{			
			hxr[0].point+=(x=='a'?5:(y=='a'?3:(z=='a'?2:0))); 		//統計a的得票數,切輸入3個選票從左到右得分分別是5.3.2
			hxr[1].point+=(x=='b'?5:(y=='b'?3:(z=='b'?2:0)));		
			hxr[2].point+=(x=='c'?5:(y=='c'?3:(z=='c'?2:0)));		
			printf(" point: %d  %d  %d\n",hxr[0].point,hxr[1].point,hxr[2].point);	//輸出a,b,c的得分	
			continue;			
		}		
		printf("此票無效\n");	
	}	
	for(i=0;i<3;i++)//分別輸出a,b,c的得分
	{		
		if(temp<hxr[i].point)
		{			
			temp=hxr[i].point;			
			j='a'+i;			
		}		
		printf("people %c point %d\n",'a'+hxr[i].m,hxr[i].point);
	}	
	if(((hxr[0].point==hxr[1].point)&&hxr[0].point>=hxr[2].point&&hxr[1].point>=hxr[2].point		) 		||( (hxr[0].point==hxr[2].point)&&hxr[0].point>=hxr[1].point&&hxr[2].point>=hxr[1].point)  		||((hxr[1].point==hxr[2].point)&&hxr[1].point>=hxr[0].point&&hxr[2].point>=hxr[0].point))     
		printf("重新投票\n");	
	else
	{		printf("祝賀%c當選冠軍\n",j);  }	
	getchar();  
}
⑦ 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語言選民投票管理系統代碼
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
struct person
{
  char name[10];
  int num;
  int age;
} leader 
void main()
{
  void start();
  void admin();
  void customer();
  char a;
  scanf("&c",a);
  if(a==#) admin();
  if(a==*) customer();
}
void start()
{
  printf("******************");
  printf("*歡迎進入投票系統*");
  printf("*********************");
  printf("#管理穿口");
  printf("*選民進口");
}
void admin()
{
 int a ;
 void admin1();
 printf("**********");
 printf("*管理員才可以進入");
 printf("*請輸入密碼:");
 printf("password:   *");
 printf("********");
 scanf("&d",a);
 clrscr();
 for(i=1;i<3;i++)
  {if (a==123456)<br>   {printf("**********");<br>    printf("登陸成功");<br>    printf("**********");<br>    admin1();<br>    clrscr();<br>    break;}
  else
   {printf("***********");<br>    printf("*密碼錯誤,請重新輸入,您共有三次機會")<br>   }
}
void admin1()
{
 int b;
 printf("**********");
 printf("*1.查詢候選人信息*");
 printf("*2.查詢候選人票數*");
 printf("*3.錄入候選人信息*");
 printf("*請輸入:    *");
 printf("*************");
 scanf("&d",b);
 if (b==1) admin11();
 if (b==2) admin12();
 if (b==3) admin13();
}
void admin13()
{
 int i;
 printf("請輸入候選人信息:")
 for(i=0;i<3;i++)
 scanf("% s% d% %d s",&leader[i].name,&leader[i].num,&leader[i].age,leader[i],addr);
 save();
}
void save ()
{
 file *fp;
 int i;
 if(fp=fopen("leader_dat","wb"==NULL))
 {
  printf("cannot open file\n");
  return;
 }
 for(i=0;i<3;i++)
 if(fwrite(&leader[i],sizeof(struct leader_type,1,fp)!=1)
   printf("file write error\n");
   fclose(fp);
}
void admin12()
{
  int i;
  file*fp;
  if((sp=fopen("leader_dat""rb"))=NUll
 {
  printf("cannot open file\n");
  return;
  }
  for(i=0;i<3;i++)
   {
    fread (&leader[i],sizeof(struct leader_type),1,fp);
    printf("%-10s %4d % 4d %-15s\n",leader[i].name,leader[i].num,leader[i].age,leader[i].addr)
    }
    fclose(fp);
 }
customer()
{
 int c;
 printf("*************");
 printf("*1.查詢候選人信息*");
 printf("*2.進入投票系統*");
 printf("請輸入:   ");
 scanf("%d,&c");
 if(c==1) admin12();
 if(c==2) vote();
}
void vote()
{
 int i,j;
 admin12();
 for(i=1;i<=10;i++)
 {
  scanf("%s",leader_name);
  if(strcmp(leader_name,leader[j],name==0)) leader[j].count++;
 }
 }
⑨ 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); 加上這句可以顯示最後的得分情況 
}
