首页 > 帮我分析一下为啥得出的答案不是最大值而是最小值
头像
牛客638908069号
编辑于 2020-07-15 06:21
+ 关注

帮我分析一下为啥得出的答案不是最大值而是最小值

#include<stdio.h>
#include<string.h>
char voter[30][20] = { 0 };//投票人所投的候选人名字
int suma;//候选人数
int sumb;//投票人数
int i = 0, j = 0, n = 1, m = 0, max,p=0;
char win_people[9][20] = { 0 };//赢得比赛的人的名单
int vote_i[9] = {0};//票数数组
struct student
{
char name[20];
int num;
}stu[9];
int fun(int *a, int* b, int n)//比较票数大小
{
int i, max, d=0;
max = a[0];
for (i = 0; i <suma;i++)
if (a[i] > a[i + 1])
{
max = a[i];
d = i;
}
*b = d;
return max;
}
int cmp(char a[], char b[])//比较名字首字母大小并且判断是否前后姓名是否相同
{
int da = strlen(a);
int db = strlen(b);
if (da != db)
{
return 0;
}
for (int i = 0; i < da; ++i)
{
if (a[i] == b[i] || a[i] == b[i] - ('z' - 'a') || a[i] == b[i] + ('z' - 'a'))
{
}
else
{
return 0;
}
}
return 1;
}

int vote(int a)//投票副函数
{
for (i = 0; i < sumb; i++)
{
printf("vote:");
scanf_s("%s", voter[i], 20);
for (j = 0; j < suma; j++)
if (strcmp(voter[i], stu[j].name) == 0)
{
++stu[j].num;// printf("%d", stu[j].num);
vote_i[j] = stu[j].num; //printf("%d",j);
}
}
return 0;
}
int printf_now()
{
printf("%s is the winner!",stu[p].name);
return 0;
}
int main()
{
//printf("请输入候选人个数%d:", suma);
scanf("%d", &suma);
for (i = 0; i < suma; ++i)
{
scanf("%s", stu[i].name);
for (j = 0; j < i; ++j)
{
if (cmp(stu[j].name, stu[i].name) == 1)//避免出现相同名字
{
i--;
}
}
}
printf("This program is designed and coded by xxx student id xx\n");//自己的姓名和学号
printf("Number of voters:");
while (n) //判断投票人数是否满足要求
{
scanf_s("%d", &sumb);
if (sumb >= 10 && sumb <= 30)
break;
}
for (i = 0; i < suma; i++)
stu[i].num = 0;
vote(sumb);
max=fun(vote_i,&p,suma);
printf_now();
return 0;
}

全部评论

(0) 回帖
加载中...
话题 回帖

推荐话题

相关热帖

近期热帖

近期精华帖

热门推荐