|
15鱼币
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define NUM 4
struct person
{
char name[20];
int count;
}candidate[NUM] = {
{"小甲鱼", 0},
{"苍井空", 0},
{"松岛枫", 0},
{"莫丁丁", 0}
};
char *winner();
void main()
{
int i, j;
char candidate_name[20];
printf("欢迎进入良好公民评选投票系统:() \n\n");
printf("候选人有: 小甲鱼, 苍井空, 松岛枫, 莫丁丁(路人甲)\n\n");
for( i=1; i <= 2; i++ )
{
printf("第 %2d 位投票, 请写下支持的候选人名字: ", i);
scanf("%s", candidate_name);
for( j=0; j < NUM; j++ )
{
if( 0 == strcmp(candidate_name, candidate[j].name) )
{
candidate[j].count++;
}
}
}
printf("\n");
for( i=0; i < 4; i++ )
{
printf("%s 同学得票数为: %d\n", candidate[i].name, candidate[i].count );
}
printf("\n");
printf("本次投票活动的胜利者的: %s", winner() );
printf("\n");
system("pause");
}
char *winner()
{
int i =0 , winner = i;
for( i=1; i < NUM; i++ )
{
if( candidate[winner].count < candidate[i].count )//判断大小
{
winner = i;
}
}
return candidate[winner].name;
}
红色部分为什么要用一个返回类型为指针变量的函数。为什么改成 char winner()不能运行结果呢?求大神们解释!
|
最佳答案
查看完整内容
好久没碰c语言了,说错了还希望有大神指正
这里楼主可以看一下printf函数的相关知识在输出字符串的时候,大概是这样的格式
printf("%s",p)这里的p是一个字符指针
我们知道c语言中的字符串是用指向字符串首字符的指针来定义的如:char *p;所以这里如果winner函数返回的不是指针变量,那么会导致printf函数的一个语法错误
这里比较关键的点是,char winner()函数返回的是一个字符,而char *winner()返回的是一个指向字符的指针, ...
|