| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 651 人关注过本帖
标题:麻烦帮我看下,我调试了好久就是得不到结果……
取消只看楼主 加入收藏
ai8343512
Rank: 2
等 级:论坛游民
帖 子:75
专家分:94
注 册:2011-8-7
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:7 
麻烦帮我看下,我调试了好久就是得不到结果……
这是我书上的一个机试题,题目要求是通过形参指针传回主函数的一个最高分(只有一个最高分)。
不知道为什么,有错误提示,但就是看不懂,以下就是,实在是逼的我没话说……
#include<stdio.h>
#include<string.h>
#define N 10
typedef struct
{
    char name[10];
    int s;
}STU;
void fun(STU a[],STU *m)
{
    m=a;
    for(int i=1;i<N;i++)
        if(strcmp(a[i].s,*m.s)>0)
            m=&a[i];
}
void main()
{
    STU a[N]={{"A01",81},{"A02",89},{"A03",66},{"A04",87},{"A05",77},{"A06",90},{"A07",79},{"A08",61},{"A09",80},{"A10",71}},m;
        int i;
    fun(a,&m);
    printf("****the result****\n");
    printf("the top %s,%d\n",m.num,m.s);
}
错误提示如下:
--------------------Configuration: 3_3 - Win32 Debug--------------------
Compiling...
3_3.cpp
F:\C++文档\3_3\3_3.cpp(13) : error C2228: left of '.s' must have class/struct/union type
F:\C++文档\3_3\3_3.cpp(13) : error C2664: 'strcmp' : cannot convert parameter 1 from 'int' to 'const char *'
        Conversion from integral type to pointer type requires reinterpret_cast, C-style cast or function-style cast
F:\C++文档\3_3\3_3.cpp(22) : error C2039: 'num' : is not a member of 'STU'
        F:\C++文档\3_3\3_3.cpp(5) : see declaration of 'STU'
搜索更多相关主题的帖子: include 
2011-08-07 13:45
ai8343512
Rank: 2
等 级:论坛游民
帖 子:75
专家分:94
注 册:2011-8-7
收藏
得分:0 
前两楼的说的都没错,我一个是指针取数据成员的方式错了,还有一个就是最后输出时把name写成num了……
可现在错误是没了,为什么执行结果却是这个样子?如下:

****the result****
the top is 烫烫烫烫烫烫烫烫A01,-858993460
Press any key to continue
顺便我把改过后的程序代码打上去:
程序代码:
#include<stdio.h>
#define N 10
typedef struct
{
    char name[10];
    int s;
}STU;
void fun(STU a[],STU *m)
{
    m=a;
    for(int i=1;i<N;i++)
        if(a[i].s>m->s)
            m=&a[i];
}
void main()
{
    STU a[N]={{"A01",81},{"A02",89},{"A03",66},{"A04",87},{"A05",77},{"A06",90},{"A07",79},{"A08",61},{"A09",80},{"A10",71}},m;
    fun(a,&m);
    printf("****the result****\n");
    printf("the top is %s,%d\n",m.name,m.s);
}


[ 本帖最后由 ai8343512 于 2011-8-7 18:06 编辑 ]

思考不应该由他人来指导,会思考的人不需要你来提醒他去思考一个简单的问题。
2011-08-07 17:51
ai8343512
Rank: 2
等 级:论坛游民
帖 子:75
专家分:94
注 册:2011-8-7
收藏
得分:0 
是字符串和分数啊?难道哪里错了?

思考不应该由他人来指导,会思考的人不需要你来提醒他去思考一个简单的问题。
2011-08-07 18:03
ai8343512
Rank: 2
等 级:论坛游民
帖 子:75
专家分:94
注 册:2011-8-7
收藏
得分:0 
回复 9楼 TonyDeng
序号不是在fun函数中就已经定下来了么?并把这个序号的数据赋值给了*m
m并不存在第几个元素啊,它就是用来承接数据的一个结构体变量,而不是结构体数组啊。

思考不应该由他人来指导,会思考的人不需要你来提醒他去思考一个简单的问题。
2011-08-07 18:15
ai8343512
Rank: 2
等 级:论坛游民
帖 子:75
专家分:94
注 册:2011-8-7
收藏
得分:0 
回复 11楼 TonyDeng
现在终于知道了错误所在,我把m=a换成*m=a[0],把m=&a[i]换成*m=a[i]就行了。
其实我一直对这方面概念不清晰,直到现在我才知道原来函数参数也有性质之分,一开始也只是想m只能承接一个数组元素的数据,然后就让它们的首地址相等,认为可以等价数组的第一个元素……我等下还会去看下结构体数组这节的概念。
为此,表示感谢,谢谢。


思考不应该由他人来指导,会思考的人不需要你来提醒他去思考一个简单的问题。
2011-08-07 18:38
ai8343512
Rank: 2
等 级:论坛游民
帖 子:75
专家分:94
注 册:2011-8-7
收藏
得分:0 
回复 12楼 TonyDeng
其实,这是二级参考题上的要求,它要我设计这样的程序段,我也没办法,说实在的,我好讨厌指针,搞的我晕头转向,我也是迫不得已啊……

思考不应该由他人来指导,会思考的人不需要你来提醒他去思考一个简单的问题。
2011-08-07 18:41
ai8343512
Rank: 2
等 级:论坛游民
帖 子:75
专家分:94
注 册:2011-8-7
收藏
得分:0 
嗯,谢谢夸奖。
其实我一般都是用你所说的第二种方法,如果要我编写,我会这样编写:
程序代码:
STU fun(STU a[])
{
    STU m=a[0];
    for(int i=1;i<N;i++)
        if(a[i].s>m.s)
            m=a[i];
        return m;
}

思考不应该由他人来指导,会思考的人不需要你来提醒他去思考一个简单的问题。
2011-08-07 18:54
ai8343512
Rank: 2
等 级:论坛游民
帖 子:75
专家分:94
注 册:2011-8-7
收藏
得分:0 
回复 15楼 TonyDeng
但对于你说的第一种引用的方法,我还是要说不太懂
反正不管怎么说,我最多一天,我一定可以了解这种方法!谢谢哈。

思考不应该由他人来指导,会思考的人不需要你来提醒他去思考一个简单的问题。
2011-08-07 18:56
快速回复:麻烦帮我看下,我调试了好久就是得不到结果……
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017957 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved