| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 412 人关注过本帖
标题:结构体排序问题
只看楼主 加入收藏
zyxandycx
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2012-5-31
结帖率:66.67%
收藏
已结贴  问题点数:20 回复次数:2 
结构体排序问题
#include<stdio.h>
#include<string.h>
struct student{
    char name[30];
    int score;
 };
 struct student stu[20];

void sort(struct student *ptr, int n)
{
    struct student t;
    for(int i=1;i<n;i++)
        for(int j=0;j<n-i;j++)
            if((*(ptr+j).score) < (*(ptr+j+1).score))    //这句出错了  问题在哪??求指导  在线等!!!!!
            {
                t=*(ptr+j);
                *(ptr+j)=*(ptr+j+1);
                *(ptr+j+1)=t;
            }
}

int main()
{
    FILE *fp;
    struct student *ptr;
    int i=0,s=0,sum=0;
    float ave;
    ptr=stu;
    fp=fopen("D://list.txt","r");
    while(!feof(fp))
    {
        fscanf(fp,"%s&d",&stu[i].name,&stu[i].score);
        i++;
    }
    fclose(fp);
    s=i;

    sort(ptr,s);
   
    for(i=0;i<s;i++)
      sum=sum+stu[i].score;
    ave=sum/s;
    for(i=0;i<s;i++)
    {
        printf("%s,%d\n",stu[i].name,stu[i].score);
    }
    printf("Average height:%.0fcm\n",ave);
    printf("The heighest:%s,%dcm\n",stu[0].name,stu[1].score);
}
搜索更多相关主题的帖子: include void 在线 结构体 
2012-06-10 10:07
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:20 
"."的优先级高于"*"。应写成(*(ptr+j)).score 而这个运算组合有一个造价运算符"->",所以建议使用(ptr + j)->score

[ 本帖最后由 beyondyf 于 2012-6-10 10:59 编辑 ]

重剑无锋,大巧不工
2012-06-10 10:43
zyxandycx
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2012-5-31
收藏
得分:0 
回复 2楼 beyondyf
没有报错。。但是运行不了说……
2012-06-17 16:41
快速回复:结构体排序问题
数据加载中...
 
   



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

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