鱼C论坛

 找回密码
 立即注册
查看: 2051|回复: 8

求大神什么援助

[复制链接]
发表于 2015-3-10 22:12:45 | 显示全部楼层 |阅读模式
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()返回的是一个指向字符的指针, ...
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-3-10 22:12:46 | 显示全部楼层
好久没碰c语言了,说错了还希望有大神指正
这里楼主可以看一下printf函数的相关知识在输出字符串的时候,大概是这样的格式
printf("%s",p)这里的p是一个字符指针
我们知道c语言中的字符串是用指向字符串首字符的指针来定义的如:char *p;所以这里如果winner函数返回的不是指针变量,那么会导致printf函数的一个语法错误
这里比较关键的点是,char winner()函数返回的是一个字符,而char *winner()返回的是一个指向字符的指针,而这个被指向的字符是一个字符串的第一个字符
另外 提一下两个问题:
1、字符串还有一种字符数组的定义,和指针的方法稍有区别~~
2、函数的形参和实参的问题,和函数的返回值相关的一个比较关键的问题~~
具体的百度一下吧亲,对于c语言的学习会很有帮助
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-3-10 23:15:14 | 显示全部楼层
大神在此!@仰望天上的光
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-3-11 10:50:40 | 显示全部楼层
本帖最后由 lightninng 于 2015-3-11 11:45 编辑

额 。。不好意思。不太熟悉论坛怎么用。多发了一贴~~版主来删掉吧~~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-3-11 14:42:47 | 显示全部楼层
希望楼主下次贴代码时,贴到代码框里;
编译了下,没通过……:mad:
试读了下,没读懂,刚看完指针,后面的还没看:sad
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2015-3-11 16:20:07 | 显示全部楼层
haiouda 发表于 2015-3-11 14:42
希望楼主下次贴代码时,贴到代码框里;
编译了下,没通过……
试读了下,没读懂,刚看完指针,后面 ...

我第一次发帖,还不怎么会用 ,下次改进!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-3-11 16:57:26 | 显示全部楼层
题目简化一下大概就是char与char*的区别。返回的类型要和函数申明的返回类型一样。winner相信是一个名字,是一个字符串,而char*是指向第一个字符的指针,知道了第一个字的地址(姑且叫它姓吧),后面的名自然就知道了(虽然计算机很傻,但是这点它还是知道的)。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2015-3-11 18:00:43 | 显示全部楼层
lightninng 发表于 2015-3-10 22:12
好久没碰c语言了,说错了还希望有大神指正
这里楼主可以看一下printf函数的相关知识在输出字符串的时候, ...

:handshake
谢谢大神
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-3-12 15:50:52 | 显示全部楼层

好久没碰c语言了,说错了还希望有大神指正
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-25 20:35

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表