第1个回答 2014-01-02
#include <stdio.h>
int main()
{
int i;
int choice;
int a, b, c; //接收选票及排序使用
int na, nb, nc; //保存得票最高的三位的号数
int vote[10];
char *name[10] = {"李一","李二","李三","李四","李五","李六","李七","李八","李九","李十"};
for (i = 0; i < 10; i++) {
vote[i] = 0;
}
do
{
do
{
choice = 5;
printf("请选择投票方式:\n");
printf("\t1.投选三人。格式:1,2,3\n");
printf("\t2.投选二人。格式:1,2\n");
printf("\t3.投选一人。格式:1\n");
printf("\t4.弃权。\n");
printf("\t0.结束投票。\n");
scanf("%d", &choice);
}while (choice != 1 && choice != 2 && choice != 3 && choice != 4 && choice != 0);
switch(choice) {
case 1:
printf("请输入投票:\n");
scanf("%d,%d,%d", &a, &b, &c);
vote[a-1]++;
if (b != a) {
vote[b-1]++;
}
if (c != a && c != b) {
vote[c-1]++;
}
break;
case 2:
printf("请输入投票:\n");
scanf("%d,%d", &a, &b);
vote[a-1]++;
if (b != a) {
vote[b-1]++;
}
break;
case 3:
printf("请输入投票:\n");
scanf("%d", &a);
vote[a-1]++;
break;
case 4:
break;
case 0:
choice = -1;
break;
}
}while (choice != -1);
a = b = c = vote[0]; //初始化票数
na = nb = nc = 0; //初始化号牌
printf("最终得票:\n");
for (i = 0; i < 10; i++) {
printf("%s : %d\n", name[i], vote[i]);
if (vote[i] > a) { //大于最多票数a
c = b; //第三名票数等于第二名票数
nc = nb; //号牌顺延
b = a; //第二名票数等于第三名票数
nb = na; //号牌顺延
a = vote[i]; //最高票数赋值
na = i;
} else {
if (vote[i] > b) {
c = b;
nc = nb;
b = vote[i];
nb = i;
} else {
if (vote[i] > c) {
c = vote[i];
nc = i;
}
}
}
}
printf("第一名:%s, 第二名:%s, 第三名:%s\n", name[na], name[nb], name[nc]);
return 0;
}本回答被提问者采纳
第2个回答 2014-01-02
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<time.h>
int main(){
int n = 0;
int i,j;
int a,b,c;
int temp;
time_t t;
int s1,s2,s3;
int a1,a2,a3; /*学生编号数组下标*/
int stu[10] = {0};/*10个学生,编号是1-10*/
srand((unsigned) time(&t));
n = rand()%10;
printf("一共%d个投票人\n",n);
for(i = 0;i < n;i++)
{
printf("第%d个投票人:",i);
scanf("%d %d %d",&a,&b,&c);
if( a > 0 && a <= 10) stu[a-1]++;
if( b > 0 && b <= 10 && b != a) stu[b-1]++;
if( c > 0 && c <= 10 && c != b && c != a) stu[c-1]++;
}
for(i = 0;i< 10;i++)
printf("%d ",stu[i]);
s1 = s2 = s3 = 0;
for(i = 0;i < 10;i++)
{
if( s1 < stu[i] )
{
s1 = stu[i];
a1 = i;
}
}
for(i = 0;i < 10;i++)
{
if( s2 < stu[i] && i != a1)
{
s2 = stu[i];
a2 = i;
}
}
for(i = 0;i < 10;i++)
{
if( s3 < stu[i] && i != a1 && i != a2)
{
s3 = stu[i];
a3 = i;
}
}
printf("\n 第一名 = %d 第二名 %d 第三名 = %d\n",a1+1,a2+1,a3+1);
getch();
return 0;
}