求大神什么援助
#include <stdio.h>#include <string.h>
#include <stdlib.h>
#define NUM 4
struct person
{
char name;
int count;
}candidate = {
{"小甲鱼", 0},
{"苍井空", 0},
{"松岛枫", 0},
{"莫丁丁", 0}
};
char *winner();
void main()
{
int i, j;
char candidate_name;
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.name) )
{
candidate.count++;
}
}
}
printf("\n");
for( i=0; i < 4; i++ )
{
printf("%s 同学得票数为: %d\n", candidate.name, candidate.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.count < candidate.count )//判断大小
{
winner = i;
}
}
return candidate.name;
}
红色部分为什么要用一个返回类型为指针变量的函数。为什么改成 char winner()不能运行结果呢?求大神们解释!
好久没碰c语言了,说错了还希望有大神指正
这里楼主可以看一下printf函数的相关知识在输出字符串的时候,大概是这样的格式
printf("%s",p)这里的p是一个字符指针
我们知道c语言中的字符串是用指向字符串首字符的指针来定义的如:char *p;所以这里如果winner函数返回的不是指针变量,那么会导致printf函数的一个语法错误
这里比较关键的点是,char winner()函数返回的是一个字符,而char *winner()返回的是一个指向字符的指针,而这个被指向的字符是一个字符串的第一个字符
另外 提一下两个问题:
1、字符串还有一种字符数组的定义,和指针的方法稍有区别~~
2、函数的形参和实参的问题,和函数的返回值相关的一个比较关键的问题~~
具体的百度一下吧亲,对于c语言的学习会很有帮助 大神在此!{:7_139:}@仰望天上的光 本帖最后由 lightninng 于 2015-3-11 11:45 编辑
额 。。不好意思。不太熟悉论坛怎么用。多发了一贴~~版主来删掉吧~~ 希望楼主下次贴代码时,贴到代码框里;
编译了下,没通过……:mad:
试读了下,没读懂,刚看完指针,后面的还没看:sad haiouda 发表于 2015-3-11 14:42
希望楼主下次贴代码时,贴到代码框里;
编译了下,没通过……
试读了下,没读懂,刚看完指针,后面 ...
我第一次发帖,还不怎么会用 ,下次改进! 题目简化一下大概就是char与char*的区别。返回的类型要和函数申明的返回类型一样。winner相信是一个名字,是一个字符串,而char*是指向第一个字符的指针,知道了第一个字的地址(姑且叫它姓吧),后面的名自然就知道了(虽然计算机很傻,但是这点它还是知道的)。 lightninng 发表于 2015-3-10 22:12
好久没碰c语言了,说错了还希望有大神指正
这里楼主可以看一下printf函数的相关知识在输出字符串的时候, ...
:handshake
谢谢大神
好久没碰c语言了,说错了还希望有大神指正
页:
[1]