| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 5522 人关注过本帖
标题:怎样用链表输出数组的内容?
只看楼主 加入收藏
mosquiyan
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2014-12-12
结帖率:85.71%
收藏
已结贴  问题点数:20 回复次数:17 
怎样用链表输出数组的内容?
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
longwu9t
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:6
帖 子:732
专家分:2468
注 册:2014-10-9
收藏
得分:10 
等我学会了链表再来给楼主写答案哈

Only the Code Tells the Truth             K.I.S.S
2014-12-12 21:53
mosquiyan
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2014-12-12
收藏
得分:0 
那个avg[N]应该放在结构体内么?哪位大神可以帮我修改一下
2014-12-12 22:12
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:10 
以下是引用mosquiyan在2014-12-12 22:12:09的发言:

那个avg[N]应该放在结构体内么?哪位大神可以帮我修改一下

不应该。

授人以渔,不授人以鱼。
2014-12-12 22:14
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
avg也不需要用数组,只是一个数而已。

授人以渔,不授人以鱼。
2014-12-12 22:21
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
5个同学,你定义的N是3,整个程序是乱的。

授人以渔,不授人以鱼。
2014-12-12 22:23
mosquiyan
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2014-12-12
收藏
得分:0 
没得修改吗?那个数组返回是什么意思?题目是出5,但是为了方便测试,所以采用了宏定义。。

[ 本帖最后由 mosquiyan 于 2014-12-12 23:00 编辑 ]
2014-12-12 22:56
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
哦,是5个同学分别求3门课程的平均分,那需要定义一个avg[5]的数组储存5个平均分。所谓通过数组返回,无非是average()函数需要传入一个数组参数,把结果填在这个数组中即可,这就叫参数式返回结果。

授人以渔,不授人以鱼。
2014-12-12 23:06
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
怎样修改?你把问题拆开来做:
1.写一个函数,建立链表,逐个把数据输入,然后最关键的一点,做个输出代码检查一下链表的数据对不对,这个遍历代码模板就是后面统计的基础。
2.写average()函数,遍历链表,计算每个同学的3门课程平均分,填到ave[5]数组中。
3.写output()函数,仍然是遍历链表,输出每个同学的明细,顺便把对应的平均分也输出。

在这里,对平均分的处理,其实有3种不同的方法,题目要求的只是其中一种。每种设计都有各自的优缺点,实际需要视整个系统的需求而定。你先做这个吧。

授人以渔,不授人以鱼。
2014-12-12 23:27
mosquiyan
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2014-12-12
收藏
得分:0 
好哒,我现在研究研究。
2014-12-12 23:32
快速回复:怎样用链表输出数组的内容?
数据加载中...
 
   



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

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