标题:数据结构布置的一道题,求解决
只看楼主
DXJAXXY
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2019-11-8
结帖率:66.67%
已结贴  问题点数:10 回复次数:3 
数据结构布置的一道题,求解决

题目:实现对学生的成绩进行排序、查找,并统计各分数段的人数。
要求:
(1)分析需求,写出用到的数据结构;(诸如一个记录应包括哪些字段数据,每个字段的数据是什么类型的,应用什么数据结构来保存众多的记录)
(2)排序:按学生分数从高到低进行排序,采用冒泡法或其他快速算法,写出c程序实现;
(3)查找:按学生姓名进行查找,采用顺序查找或二分查找,并实现查找结构的打印,写出c程序实现;
(4)统计各分数段的人数(≥90分、80~89分、70~79分、60~69分、60分以下),打印统计的结果,写出c程序实现;
(5)加分项:给出代码运行的结果并分析。
搜索更多相关主题的帖子: 查找 学生 分数 统计 数据结构 
2019-11-14 16:29
葵青
Rank: 2
等 级:论坛游民
帖 子:7
专家分:10
注 册:2019-11-14
得分:10 
我是新手,前来观摩观摩
2019-11-14 17:51
纯蓝之刃
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:76
帖 子:554
专家分:3690
注 册:2019-7-29
得分:0 
程序代码:
#include <stdio.h>
#include <string.h>

struct chengji
{
    char name[20];
    float math;
    float chinese;
    float english;
    float sum;
    int rank;
};

struct fenshu
{
    int jiushi;
    int bashi;
    int qishi;
    int liushi;
    int bujige;
};

int main()
{
    struct chengji list[1000]={0};
    struct fenshu mark={0};
    char name[20]={0};

    int n,i,j;

    printf("请输入学生总数:");
    scanf("%d",&n);

    for(i=1;i<=n;i++)
    {
        printf("\n请输入第%d个学生姓名机成绩:",i);
        scanf("%s%f%f%f",list[i].name,&list[i].math,&list[i].chinese,&list[i].english);
        list[i].sum=list[i].math+list[i].chinese+list[i].english;
    }

    for (j=0;j<n-1;j++)
    {
        for (i=1;i<n-j;i++)
        {
            if(list[i].sum<list[i+1].sum)
            {
                memcpy(&list[0],&list[i+1],sizeof(list)/1000);
                memcpy(&list[i+1],&list[i],sizeof(list)/1000);
                memcpy(&list[i],&list[0],sizeof(list)/1000);
            }
        }
    }

    for (i=1;i<=n;i++)
    {
        list[i].rank=i;
        printf("\n第%d名    姓名:%s,数学:%.2f,语文:%.2f,英语:%.2f,总分:%.2f\n",list[i].rank,list[i].name,list[i].math,list[i].chinese,list[i].english,list[i].sum);

        switch((int)(list[i].sum/3/10))
        {
        case 9:mark.jiushi++;break;
        case 8:mark.bashi++;break;
        case 7:mark.qishi++;break;
        case 6:mark.liushi++;break;
        default:mark.bujige++;break;
        }
    }

    printf("\n平均分大于90分的有%d人,平均分80~90分的有%d人,平均分70~80分的有%d人,平均分60~70分的有%d人,平均分小于60分的有%d人。\n",mark.jiushi,mark.bashi,mark.qishi,mark.liushi,mark.bujige);

    printf("\n请输入学生姓名:");
    scanf("%s",name);

    for(i=1;i<=n;i++)
    {
        if(strstr(list[i].name,name))
        {
            printf("\n第%d名    姓名:%s,数学:%.2f,语文:%.2f,英语:%.2f,总分:%.2f\n",list[i].rank,list[i].name,list[i].math,list[i].chinese,list[i].english,list[i].sum);
            break;
        }
    }

    return 0;
}

一沙一世界,一花一天堂。无限掌中置,刹那成永恒。
2019-11-14 19:07
DXJAXXY
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2019-11-8
得分:0 
回复 4楼 纯蓝之刃
可以使用上数据结构的单链表的知识编写吗?
2019-11-16 22:48



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




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

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