timteo爱vivi 发表于 2016-2-24 15:27:08

小甲鱼投票系统作业题求助

#include <stdio.h>
#include <stdlib.h>
#include<string.h>
struct person
{
    char name;
   int qua;
};//声明
struct person p={{"rose",0},{"vivi",0},{"jack",0}};//定义
void selectmost(struct person *p)//这个函数用于选出获得票数最高的人并打印出来
{
    char *n;
    int i,j=0;//j表示最多票数的人所对应的结构体数组中的下标
    int max=p.qua;
    for(i=1;i<3;i++)
    {
      if(max<p.qua)
          j=i;
    }
   n=&p.name;----------------------------------@
   puts(n);
}
void main()
{
    int i;//计数变量
    printf("welcome to people select system\n");
    printf("please vote for rose,vivi,jack\n");
    for(i=0;i<5;i++)
    {
      char c;
      printf("第 %d vote for:",i+1);
      printf("\n");
          gets(c);
      if(strcmp(p.name,c)==0)
      {
            p.qua++;
      }
      if(strcmp(p.name,c)==0)
      {
             p.qua++;
      }
      if(strcmp(p.name,c)==0)
      {
             p.qua++;
      }
    }
    for(i=0;i<3;i++)
    {
      printf("票数 of %s is %d\n",p.name,p.qua);
    }
    selectmost(p);
}

我把selectmost这个函数中@(已在文中标出)所在行的代码n=&p.name改成*n=p.name后程序就不会正确运行出结果,希望好心的朋友能解答一下。{:9_221:}

shuofxz 发表于 2016-2-24 16:35:43

我没太明白为什么要写成n=&p.name或者*n=p.name
这两种写法编译器都会报错呀。。。
你不是想输出名字吗,直接写n=p.name不就可以了?

timteo爱vivi 发表于 2016-2-24 19:31:30

shuofxz 发表于 2016-2-24 16:35
我没太明白为什么要写成n=&p.name或者*n=p.name
这两种写法编译器都会报错呀。。。
你不是想 ...

我定义的n是一个字符型指针呀

timteo爱vivi 发表于 2016-2-24 19:35:56

shuofxz 发表于 2016-2-24 16:35
我没太明白为什么要写成n=&p.name或者*n=p.name
这两种写法编译器都会报错呀。。。
你不是想 ...

n是我定义的字符型指针呀
页: [1]
查看完整版本: 小甲鱼投票系统作业题求助