马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
#include <stdio.h>
#include <stdlib.h>
#include<string.h>
struct person
{
char name[10];
int qua;
};//声明
struct person p[3]={{"rose",0},{"vivi",0},{"jack",0}};//定义
void selectmost(struct person *p)//这个函数用于选出获得票数最高的人并打印出来
{
char *n;
int i,j=0;//j表示最多票数的人所对应的结构体数组中的下标
int max=p[0].qua;
for(i=1;i<3;i++)
{
if(max<p[i].qua)
j=i;
}
n=&p[j].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[10];
printf("第 %d vote for:",i+1);
printf("\n");
gets(c);
if(strcmp(p[0].name,c)==0)
{
p[0].qua++;
}
if(strcmp(p[1].name,c)==0)
{
p[1].qua++;
}
if(strcmp(p[2].name,c)==0)
{
p[2].qua++;
}
}
for(i=0;i<3;i++)
{
printf("票数 of %s is %d\n",p[i].name,p[i].qua);
}
selectmost(p);
}
我把selectmost这个函数中@(已在文中标出)所在行的代码n=&p[j].name改成*n=p[j].name后程序就不会正确运行出结果,希望好心的朋友能解答一下。
我没太明白为什么要写成 n=&p[j].name 或者 *n=p[j].name
这两种写法编译器都会报错呀。。。
你不是想输出名字吗,直接写n=p[j].name 不就可以了?
|