| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 474 人关注过本帖
标题:用结构体变量的指针作函数参数,有段程序运行出现问题,求赐教
只看楼主 加入收藏
a_yuan17
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2015-10-1
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:8 
用结构体变量的指针作函数参数,有段程序运行出现问题,求赐教
#include<stdio.h>
#define N 3
struct Student
{
    int num;
    char name[20];
    float score[3];
    float aver;
};
int main()
{
    void input(struct Student stu[]);
    struct student max(struct Student stu[]);
    void print(struct Student stu);
    struct Student stu[N],*p=stu;
    input(p);
    print(max(p));\\这里是出了什么问题吗?
    return 0;
}
void input(struct Student stu[])
{int i;
printf("请输入个各学生的信息:学号,姓名,三门课成绩:\n");
for(i=0;i<N;i++)
{scanf("%d%s%f%f%f",&stu[i].num,&stu[i].name,&stu[i].score[0],&stu[i].score[1],&stu[i].score[2]);
stu[i].aver=(stu[i].score[0]+stu[i].score[1]+stu[i].score[2])/3.0;
}
}
struct Student max(struct Student stu[])
{
    int i,m=0;
    for(i=0;i<N;i++)
        if(stu[i].aver>stu[m].aver)m=i;
        return stu[m];
}
void print(struct Student stud)
{
    printf("\n成绩最高的学生是:\n");
    printf("学号:%d\n姓名:%s\n三门成绩:%5.1f,%5.1f,%5.1f\n平均成绩:%6.2f\n",stud.num,stud.name,stud.score[1],stud.score[2],stud.aver);
}
提示的信息是:error C2664: 'print' : cannot convert parameter 1 from 'struct main::student' to 'struct Student'
        Source or target has incomplete type
搜索更多相关主题的帖子: include return 结构体 三门 
2015-10-01 20:10
hjx1120
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:李掌柜
等 级:贵宾
威 望:41
帖 子:1314
专家分:6927
注 册:2008-1-3
收藏
得分:4 
没有函数原型
2015-10-01 20:11
a_yuan17
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2015-10-1
收藏
得分:0 
回复 2楼 hjx1120
那该怎么改呢
2015-10-02 16:16
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:10 
要改的地方多了。首先程序風格就有問題,不要把函數原型聲明放在函數體內;其次設計思路也有偏差,此處max()函數的返回類型用指針比較好。

授人以渔,不授人以鱼。
2015-10-02 17:51
eagle_li
Rank: 2
等 级:论坛游民
帖 子:11
专家分:50
注 册:2015-9-30
收藏
得分:1 
回复 楼主 a_yuan17
第一个错误是print后面少一个f,printf
2015-10-02 19:10
a_yuan17
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2015-10-1
收藏
得分:0 
回复 5楼 eagle_li
那个print是自己定义的函数,不是输出函数
2015-10-02 19:41
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:5 
提示的信息是:error C2664: 'print' : cannot convert parameter 1 from 'struct main::student' to 'struct Student'

從編譯信息可以看到,兩個數據類型的命名是不一樣的。仔細斟酌我前面告訴你別寫這種風格代碼的含義吧。編譯器之所以在這裡給你加上如此一個命名前綴,正是你把函數原型聲明放在main()函數體內的原因。不要把古老教材和C&R的東西當聖經,根據實際環境來!

[ 本帖最后由 TonyDeng 于 2015-10-2 19:53 编辑 ]

授人以渔,不授人以鱼。
2015-10-02 19:49
a_yuan17
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2015-10-1
收藏
得分:0 
回复 4楼 TonyDeng
谢谢指点,问题已经解决。
2015-10-02 20:08
a_yuan17
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2015-10-1
收藏
得分:0 
回复 7楼 TonyDeng
恩,刚看出来s大小写没有区分。函数声明部分以后就不放在main函数里了。
2015-10-02 20:12
快速回复:用结构体变量的指针作函数参数,有段程序运行出现问题,求赐教
数据加载中...
 
   



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

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