| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1388 人关注过本帖
标题:这个代码编译没问题,但运行时无法执行sort后面的函数
只看楼主 加入收藏
Wuhaoran2002
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2020-12-23
结帖率:25%
收藏
已结贴  问题点数:15 回复次数:2 
这个代码编译没问题,但运行时无法执行sort后面的函数
#include<stdio.h>
struct Student//定义一个结构体
{
    int num;
    char name[20];
    float score[3];
    float total;   
} stu[5];
int main()
{
    void input(struct Student stu[]);//输入信息的函数
    void average(struct Student stu[]);//求平均值的函数
    struct Student *sort(struct Student *p1);
    void print(struct Student *p2);//输出信息的函数
    struct Student *p;
    p=stu;   
    input(p);
    int g;
    for(g=0;g<5;g++)   //计算各位学生的总成绩
    {
        (*(p+g)).total=(*(p+g)).score[0]+(*(p+g)).score[1]+(*(p+g)).score[2];
    }
    average(p);
    print(p);
    p=sort(p);
    print(p);
    return 0;
}
void input(struct Student stu[])
{
    int i,j;
    printf("请输入学生信息\n");
    printf("姓名 学号 课程一 课程二 课程三 \n");
    for(i=0;i<5;i++)
    {
        scanf("%s",stu[i].name);//输入名字
        scanf("%d",&stu[i].num);//输入学号
        for(j=0;j<3;j++)
        {
            scanf("%f", &stu[i].score[j]);//输入三门课的成绩
        }
    }
}
void average(struct Student stu[])
{
    int z;
    float course1,course2,course3;//定义三个课程成绩
    for(z=0;z<5;z++)
    {
        course1+=stu[z].score[0];
        course2+=stu[z].score[1];
        course3+=stu[z].score[2];//求出三门课的总分
    }
    course1/=5.0;
    course2=course2/5.0;
    course3=course3/5.0;
    printf("课程一的平均成绩:%5.1f\n",course1);
    printf("课程二的平均成绩:%5.1f\n",course2);
    printf("课程三的平均成绩:%5.1f\n",course3);//求出平均值
}
void print(struct Student *p2)
{
 int t3;
 for(t3=0;t3<5;t3++)
 {
  printf("学号:%d 姓名:%s 成绩1:%f 成绩2:%f 成绩3:%f 总分:%f",(*(p2+t3)).num,(*(p2+t3)).name,(*(p2+t3)).score[0],(*(p2+t3)).score[1],(*(p2+t3)).score[2],(*(p2+t3)).total);
  printf("\n");
 }
}
struct Student *sort(struct Student *p1)
{
    int t1,t2;
    struct Student *term;
    for(t1=0;t1<5;t1++)//计算各位学生的总成绩
    {
        (*(p1+t1)).total=(*(p1+t1)).score[0]+(*(p1+t1)).score[1]+(*(p1+t1)).score[2];
    }
    for(t1=0;t1<5-1;t1++)//对五位学生的总成绩进行排序
    {
        for(t2=0;t2<5-1-t1;t2++)
        {
            if((*(p1+t2)).total<(*(p1+t2+1)).total)
            {
                *term=*(p1+t2);
                *(p1+t2)=*(p1+t2+1);
                *(p1+t2+1)=*term;
            }
        }
    }
    return p1;
}
搜索更多相关主题的帖子: score stu struct for Student 
2021-01-07 10:06
春风不度
Rank: 1
等 级:新手上路
帖 子:7
专家分:8
注 册:2020-5-7
收藏
得分:8 
我这里devc++可以执行,后面的sort为总成绩以及排序
图片附件: 游客没有浏览图片的权限,请 登录注册
2021-01-07 21:57
huangbo_031
Rank: 2
等 级:论坛游民
威 望:1
帖 子:3
专家分:18
注 册:2021-1-8
收藏
得分:8 
struct Student *term;  如果用指针做临时变量的话,就要给这个临时变量分配空间, 使用完记得 free . 你可以直接定义成 struct Student term;
2021-01-08 15:52
快速回复:这个代码编译没问题,但运行时无法执行sort后面的函数
数据加载中...
 
   



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

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