❶ 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;
}
希望對你有所幫助,花了我點時間,呵呵!
❷ 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語言
http://..com/question/165146028.html
❹ C語言投票程序
提示輸入,可以直接輸入下標,0~2。
這樣就不需要判斷了。還能避免輸入錯誤。
提示輸入的文字建議用循環動態生成。這樣方便後期擴展,比如變成5個人。
提示輸入的文字大致可以這樣寫:
把數組大小定義成常量,方便修改,比如#define SIZE 3
printf("請輸入對應數字,為下列人物投票:");
for(i=0;i<SIZE;i++)
printf("%d:%s ",i,arr[i].name);
這樣後面輸入只要輸入結構數組下標,就可以直接++,無需判斷。
❺ 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<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);
輸入字元是也是每個字元均以回車結束,而不是「中間用空格間隔」。
❼ 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語言經典候選人投票問題
......
//#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;
}