求c语言大神解答一下c语言数据结构题目

谢谢了... 谢谢了 展开
 我来答
自我编程
2018-12-25 · 科技优质答主
自我编程
采纳数:1481 获赞数:4283

向TA提问 私信TA
展开全部

刚把代码写好,你问题居然结案了。。。。。。


#include<stdio.h>
#include<malloc.h>
#include<string.h>
typedef struct stu//定义结构类型
{
    int id;
    char name[10];
    int age;
    char cName[30];
    int score[4];
}STU;
int input(STU **stus);//输入,返回数组长度
void output(STU *stus,int len);//输出
void findBycName(STU *stus,int len);//通过班级名查找学生信息
void showAvg(STU *stus,int len);//显示4门功课平均分
void findMinAge(STU *stus,int len);// 查找年龄最小学生
int main()
{
    int len;
    STU *stus=NULL;
    len=input(&stus);
    output(stus,len);
    findBycName(stus,len);
    showAvg(stus,len);
    findMinAge(stus,len);
    return 0;
}
int input(STU **stus)//输入,返回数组长度
{
    STU *stuSave=NULL;
    int id,i,inx=0,len=1,sum;
    printf("输入每个学生的学号、姓名、年龄、班级、4科成绩(学号输入-1结束输入)\n");
    while(1)
    {
        sum=0;
        printf("--学生学号:");
        scanf("%d",&id);
        if(id==-1)
            break;
        getchar();
        if(!(*stus))
            *stus=(STU *)malloc(sizeof(STU)*len);
        else
        {
            len++;
            stuSave=(STU *)realloc(*stus,sizeof(STU)*len);
            if(stuSave)
                *stus=stuSave;
            else
            {
                printf("内存申请错误");
                exit(0);
            }
        }
        (*stus)[inx].id=id;
        printf("--学生名字:");
        scanf("%s",(*stus)[inx].name);
        printf("--学生年龄:");
        scanf("%d",&(*stus)[inx].age);
        getchar();
        printf("--班级名称:");
        gets((*stus)[inx].cName);
        printf("--4科成绩 :");
        for(i=0;i<4;i++)
            scanf("%d",&(*stus)[inx].score[i]),sum=sum+(*stus)[inx].score[i];
        inx++;
        printf("\n");
    }
    getchar();
    return len;
}
void output(STU *stus,int len)//输出
{
    int i,j;
    printf("\n输入的数据:\n");
    for(i=0;i<len;i++)
    {
        printf("学生编号:%d,姓名:%s,年龄:%d,班级:%s",stus[i].id,stus[i].name,stus[i].age,stus[i].cName);
        for(j=0;j<4;j++)
            printf(",学科%d:%d",j+1,stus[i].score[j]);
        printf("\n");
    }
}
void findBycName(STU *stus,int len)//通过班级名查找学生信息
{
    int i,j;
    char cName[30]={0};
    printf("\n输入要查找的班级名称:");
    gets(cName);
    for(i=0;i<len;i++)
    {
        if(strcmp(stus[i].cName,cName)==0)
        {
            printf("学生编号:%d,姓名:%s,年龄:%d,班级:%s",stus[i].id,stus[i].name,stus[i].age,stus[i].cName);
            for(j=0;j<4;j++)
                printf(",学科%d:%d",j+1,stus[i].score[j]);
            printf("\n");
        }
    }
}
void showAvg(STU *stus,int len)//显示4门功课平均分
{
    int i,j,sum[4]={0};
    printf("\n4门功课平均分:\n");
    for(i=0;i<len;i++)
        for(j=0;j<4;j++)
            sum[j]=sum[j]+stus[i].score[j];
    for(j=0;j<4;j++)
        printf("%.2f ",(float)sum[j]/len);
    printf("\n");
}
void findMinAge(STU *stus,int len)// 查找年龄最小学生
{
    int i,j,minAge=99,iSave;
    printf("\n年龄最小学生\n");
    for(i=0;i<len;i++)
    {
        if(stus[i].age<minAge)
            minAge=stus[i].age,iSave=i;
    }
    printf("学生编号:%d,姓名:%s,年龄:%d,班级:%s",stus[iSave].id,stus[iSave].name,stus[iSave].age,stus[iSave].cName);
    for(j=0;j<4;j++)
        printf(",学科%d:%d",j+1,stus[iSave].score[j]);
    printf("\n");
}
光点科技
2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件... 点击进入详情页
本回答由光点科技提供
爱情懦夫
2018-12-25 · 超过17用户采纳过TA的回答
知道答主
回答量:62
采纳率:66%
帮助的人:13.3万
展开全部
呵呵,这个,你有点点懒呀
第一个给你个大体的东东:
这是一位同位的数据结构->
typedef struct tagT_Classmate{
int nNo;
char szName[64];
int nYear;
int Class;
int narScore[4];
int nTotal;
}T_Classmate;
一个班的同学:T_Classmate Class3[60]; //60一个班
然后,就是一个for用来输入数据。
一个for用来计算平均成绩并打印。
一个for用来查找最小年龄的人并打印。
这个不难,你一个一个功能完成,刚开始只完成一个小小的部分即可。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
别琬凝jN
2018-12-25
知道答主
回答量:41
采纳率:0%
帮助的人:3万
展开全部
这个问题呢,在你们外行人看来不懂很正常,在我们内行人看来也是一脸懵逼。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
HG十时
2018-12-25 · 贡献了超过114个回答
知道答主
回答量:114
采纳率:0%
帮助的人:9.9万
展开全部
OK ,我可以帮你。如何发给你?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式