标题:怎样用链表输出数组的内容?
取消只看楼主
mosquiyan
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2014-12-12
结帖率:85.71%
已结贴  问题点数:20 回复次数:7 
怎样用链表输出数组的内容?
1.用链表结构保存学生的成绩信息,成绩信息包括学号、姓名和3门课程的成绩。
    用create函数实现创建5个同学的成绩信息链表,用output函数以表格的形式输出5个
    同学的成绩信息,用average函数实现计算每个同学的3门课程的平均成绩,
    并通过数组返回。
#include "stdio.h"
#include "stdlib.h"
#define STUDENT struct student
#define LEN sizeof(STUDENT)
#define N 3
STUDENT
{
    int num;
    char name[20];
    float score[3];
    STUDENT *next;
};
float avg[N];

float average(STUDENT st[])
{
    int i,j;
    float t;
    for(i=0;i<N;i++)
    {
         for(j=0;j<3;j++)
      {
         t+=st[i].score[j];
         avg[i]=t/3.0;
      }
    }
    return avg[i];
}

STUDENT *create(int n)
{
    STUDENT *head,*last,*p;
    int i,j;
    head=last=NULL;
    for(i=0;i<n;i++)
    {
        p=(STUDENT *)malloc(LEN);
        printf("\nPlease input student%d number,name,score1 score2\tscore3:",i+1);
        scanf("%d,%s",&p->num,&p->name);
        for(j=0;j<3;j++)
        {
        scanf("%f",&p->score[j]);
        }
        
        p->next=NULL;
        if(i==0)
         head=last=p;
        else
        {
            last->next=p;
            last=p;
        }
        
    }
    return head;
   
}



void output(STUDENT *head)
{
    STUDENT *p;
        p=head;
        int i=0;
        printf("number\tname\t\tscore\n");
    while(p!=NULL)
    {
        printf("%d\t%s\t\t",p->num,p->name);
        for(i=0;i<N;i++)
        printf("%.2f\t%.2f\t%.2f",p->score[i]);
        p=p->next;
    }
}


main()
{
    float avg[N];
    int i;
    STUDENT *head;
    STUDENT *st;
    head=create(N);
    output(head);
    for(i=0;i<N;i++)
    {
        avg[i]=average(st);
    }
    for(i=0;i<N;i++)
    printf("%d\t%-20s\t%.1f\n",(st+i)->num,(st+i)->name,avg[i]);
   
}
这个实在是不会修改呀
搜索更多相关主题的帖子: average include create 课程 信息 
2014-12-12 21:45
mosquiyan
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2014-12-12
得分:0 
那个avg[N]应该放在结构体内么?哪位大神可以帮我修改一下
2014-12-12 22:12
mosquiyan
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2014-12-12
得分:0 
没得修改吗?那个数组返回是什么意思?题目是出5,但是为了方便测试,所以采用了宏定义。。

[ 本帖最后由 mosquiyan 于 2014-12-12 23:00 编辑 ]
2014-12-12 22:56
mosquiyan
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2014-12-12
得分:0 
好哒,我现在研究研究。
2014-12-12 23:32
mosquiyan
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2014-12-12
得分:0 
回复 11楼 TonyDeng
#include "stdio.h"
#include "stdlib.h"
#define STUDENT struct student
#define LEN sizeof(STUDENT)
#define N 3
STUDENT
{
    int num;
    char name;
    float score[3];
    STUDENT *next;
};
STUDENT *create(int n)
{
    STUDENT *head,*last,*p;
    int i,j;
    head=last=NULL;
    for(i=0;i<n;i++)
    {
        p=(STUDENT *)malloc(LEN);
        printf("\nplease input%d student's number,name:",i+1);
        scanf("%d,%s",&p->num,&p->name);
        printf("\nplease input score1,score2,score3:");
        for(j=0;j<3;j++)
        scanf("%f",&p->score[j]);
        
        p->next=NULL;
        if(i==0)
          head=last=p;
        else
        {
            last->next=p;
            last=p;
        }
    }
    return head;     
}

float average(STUDENT *head)
{
    STUDENT *p;
    float sum[N],avg[N];
    int i,j;
    p=head;
    while(p!=NULL)
    {
        for(i=0;i<N;i++)
        {
            for(j=0;j<3;j++)
            {
                 sum[i]+=p->score[j];
                }
        avg[i]=sum[i]/3;
            }
    p=p->next;   
}

void output(STUDENT *head)
{
    STUDENT *p;
    int i;
    float avg[N];
    p=head;
    while(p!=NULL)
    {
        printf("number name score1 score2 score3 average");
        printf("%d %-20s",p->num,p->name);
        for(i=0;i<3;i++)
        {
            printf("%.2f",p->score[i]);
        }
        avg[i]=average(head);
        printf("%.2f",avg[i]);
        p=p->next;
    }
}

main()
{
    STUDENT *head;
    head=create(N);
    output(head);
}

修改了一下,average函数那里不知道哪里出错了,显示in function。而output函数那里说要以表格的形式输出,可是我不知道怎么把一个数组里面的内容输出来呢
2014-12-13 00:15
mosquiyan
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2014-12-12
得分:0 
最近写作业好像都养成习惯了,就是打一个程序,自己总是没有办法想出那些算法出来,然后又急着要交,就去问同学或者上网查,虽然后来弄懂了,可是感觉自己就是没法独立思考出一个程序的思路
2014-12-13 00:19
mosquiyan
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2014-12-12
得分:0 
可以给我说说我的存在问题吗?
2014-12-13 10:13
mosquiyan
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2014-12-12
得分:0 
我在做的时候就以为要用循环才可以利用和输出数组的内容,所以就搞到思路很乱
2014-12-13 10:35



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




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

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