标题:c语言问题求解答谢谢
只看楼主
俺无所谓
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2014-4-10
结帖率:0
已结贴  问题点数:20 回复次数:12 
c语言问题求解答谢谢
#include<stdio.h>
#include<stdlib.h>
#define course 4

typedef struct student
{
    long int num;
    char name[20];
    char  sex[3];
    int age;
    float score[course];
    float aver;
    float  total;
    struct student *next;
}STU;
float sum(STU *stu)
{
    int j;
    float result=0;
    for(j=0;j<course;j++)
    {
        result+=stu->score[j];
    }
    return result;
}
STU *input(int n)
{
    STU *head=NULL,*p=NULL,*end=NULL;
    int i;
    for(i=0;i<n;i++)
    {
        p=(STU*)malloc(sizeof(STU));
        p->next=NULL;
        printf("请输入第%d的学生的学号,姓名,性别,年龄,成绩1,成绩2,成绩3,成绩4\n",i+1);
        scanf("%ld%s%s%d%f%f%f%f",&p->num,p->name,p->sex,&p->age,&p->score[0],&p->score[1],&p->score[2],&p->score[3]);
        p->total=sum(p);
        p->aver=p->total/course;
        if(i==0)
        {
            head=p;
        }
        else
        {
            end->next=p;
        }
        end=p;
    }
    return head;
}
STU *insert(STU *head)
{
    STU *p=NULL,*p1=NULL,*tmp=NULL;
    tmp=(STU*)malloc(sizeof(STU));
    tmp->next=NULL;
    printf("Input the num, name, sex, age and 4 scores of student you want to insert:\n");
    scanf("%ld%s%s%d%f%f%f%f", &tmp->num, tmp->name, tmp->sex, &tmp->age, &tmp->score[0],
           &tmp->score[1], &tmp->score[2], &tmp->score[3]);
    tmp->total=sum(tmp);
    tmp->aver=tmp->total/course;
    if(head=NULL)
    {
        return tmp;
    }
    if(tmp->num < head->num)
    {
        tmp->next=head;
        return tmp;
    }
    p1=p=head;
    while(p!=NULL&&p->num<=tmp->num)
    {
        p1=p;
        p=p->next;
    }
    p1->next=tmp;
    tmp->next=p;
    return head;
}
void main()
{
    int n;
    STU *p,*q;
    printf("请输入你想输入的学生的个数\n");
    scanf("%d",&n);
    p=input(n);
    q=insert(p);
    printf("学号   姓名  性别   年龄   语文    数学    英语     政治    平均分    总分\n");
    while(q)
    {
        printf("%-7ld%-7s%-4s%-5d%-9.2f%-9.2f%-9.2f%-9.2f%-9.2f%-9.2f",q->num,q->name,q->sex,q->age,q->score[0],q->score[1],
            q->score[2],q->score[3],q->aver,q->total);
        q=q->next;
    }
   

}
帮忙看下,这个最基本的学生管理系统只有输入,插入,显示功能,请问插入功能为什么不能实现,错误在哪里尼?万分感谢!
搜索更多相关主题的帖子: include course return result c语言 
2014-04-10 10:24
俺无所谓
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2014-4-10
得分:0 
这个输入功能可以实现,中间那块插入功能是我另外加的,但是不能实现插入,求解哈!
2014-04-10 10:29
安宁1991
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:76
专家分:123
注 册:2014-4-3
得分:5 
能不能在你的代码里加上注释啊?擦,中间那块是哪块?

因为有你,所以做什么都有动力。z,爱你。
2014-04-10 10:32
俺无所谓
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2014-4-10
得分:0 
STU *insert(STU *head)
{
    STU *p=NULL,*p1=NULL,*tmp=NULL;
    tmp=(STU*)malloc(sizeof(STU));
    tmp->next=NULL;
    printf("Input the num, name, sex, age and 4 scores of student you want to insert:\n");
    scanf("%ld%s%s%d%f%f%f%f", &tmp->num, tmp->name, tmp->sex, &tmp->age, &tmp->score[0],
           &tmp->score[1], &tmp->score[2], &tmp->score[3]);
    tmp->total=sum(tmp);
    tmp->aver=tmp->total/course;
    if(head=NULL)
    {
        return tmp;
    }
    if(tmp->num < head->num)
    {
        tmp->next=head;
        return tmp;
    }
    p1=p=head;
    while(p!=NULL&&p->num<=tmp->num)
    {
        p1=p;
        p=p->next;
    }
    p1->next=tmp;
    tmp->next=p;
    return head;
}
中间那块指的就是这个插入程序
2014-04-10 10:47
embed_xuel
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:58
帖 子:3845
专家分:11385
注 册:2011-9-13
得分:5 
回复 4楼 俺无所谓
if(head=NULL)肯定不对

总有那身价贱的人给作业贴回复完整的代码
2014-04-10 10:49
俺无所谓
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2014-4-10
得分:0 
回复 5楼 embed_xuel
你为何这么牛叉,一眼就看出来了,其实是在网上的程序,我自己练一下的,谢谢哈
2014-04-10 10:55
embed_xuel
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:58
帖 子:3845
专家分:11385
注 册:2011-9-13
得分:0 
回复 6楼 俺无所谓
这是新手容易犯的错误。看不出来还怎么靠C语言工作生活呀。

总有那身价贱的人给作业贴回复完整的代码
2014-04-10 11:05
安宁1991
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:76
专家分:123
注 册:2014-4-3
得分:0 
都是牛逼人物呀

因为有你,所以做什么都有动力。z,爱你。
2014-04-10 11:10
俺无所谓
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2014-4-10
得分:0 
回复 7楼 embed_xuel
大神,能不能帮我写个按成绩排序的程序啊,跟我这个切合在一起的,实在不会,万分感谢哈
2014-04-10 14:47
embed_xuel
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:58
帖 子:3845
专家分:11385
注 册:2011-9-13
得分:0 
回复 9楼 俺无所谓
看我的签名就知道了

总有那身价贱的人给作业贴回复完整的代码
2014-04-10 15:31



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-429905-1-1.html




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

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