| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 808 人关注过本帖
标题:c语言问题求解答谢谢
取消只看楼主 加入收藏
俺无所谓
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2014-4-10
结帖率:0
收藏
已结贴  问题点数:20 回复次数:4 
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
俺无所谓
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
俺无所谓
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2014-4-10
收藏
得分:0 
回复 5楼 embed_xuel
你为何这么牛叉,一眼就看出来了,其实是在网上的程序,我自己练一下的,谢谢哈
2014-04-10 10:55
俺无所谓
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2014-4-10
收藏
得分:0 
回复 7楼 embed_xuel
大神,能不能帮我写个按成绩排序的程序啊,跟我这个切合在一起的,实在不会,万分感谢哈
2014-04-10 14:47
快速回复:c语言问题求解答谢谢
数据加载中...
 
   



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

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