怎么修改#include <stdio.h>

.编写一个投票程序,每张选票只能填写一个人的名字,输入n(n<100),再依次输入n个选票中被选人的姓名,然后输出得票最高者姓名(可多人并列,先达到票数的排在前面)。
怎么修改


#include 
#include"string.h"
struct SPerson
{
 char name[20];    //姓名
 int num;          //的票数 
}stu[20];
int main()
{
    int i,j,n,x[20]={0};
    scanf("%d",&n);
    for(i=0;iscanf("%s",stu[i].name);stu[i].num=0;}
    for(i=0;ifor(j=0;jif(strcmp(stu[i].name,stu[j].name)==0) stu[i].num++;}
    for(i=0;ifor(j=0;jif(stu[i].num>=stu[j].num) x[i]++;if(x[i]==n) printf("%s ",stu[i].name);}
     return 0;
}


#include<stdio.h> 
#include<stdlib.h>
#include<string.h>
 
struct SPerson
{
   char name[20];    //姓名
   int *num;         //指向票数数组的指针 
}stu[20];
 
void addVote(char name[], struct SPerson array[], int n)
{
   int i;
   for(i=0;i<n;i++)
   {
      if(strcmp(name,array[i].name)==0)
      {
         array[i].num[i]++;
         break;
      }
   }
}
 
int main()
{
   int i,j,n;
   scanf("%d",&n);
   for(i=0;i<n;i++) 
   {
      scanf("%s",stu[i].name);
      stu[i].num = (int*)malloc(n * sizeof(int));  //动态分配数组空间 
      for(j=0;j<n;j++)
      {
         stu[i].num[j] = 0;  //初始化票数 
      }
   }
   struct SPerson winners[20];
   int max = 0, count = 0;
   for(i=0;i<n;i++)
   {
      addVote(stu[i].name, stu, n);  //加票 
      for(j=0;j<n;j++)
      {
         if(stu[i].num[j] > max)
         {
            max = stu[i].num[j];
         }
      }
   }
   for(i=0;i<n;i++)
   {
      if(stu[i].num[i] == max)
      {
         strcpy(winners[count].name,stu[i].name);
         winners[count].num = stu[i].num[i];
         count++;
      }
   }
   for(i=0;i<count;i++)
   {
      printf("%s ",winners[i].name);
   }
   for(i=0;i<n;i++)
   {
      free(stu[i].num);  //释放数组空间 
   }
   return 0;
}
 

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^