标题:动态构造学生信息结构体数组,弄了好久了,实在弄不出来了,特来求教。
只看楼主
zgluoyang12
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2012-11-9
 问题点数:0 回复次数:6 
动态构造学生信息结构体数组,弄了好久了,实在弄不出来了,特来求教。
#include <stdio.h>

#include <malloc.h>

struct Student{

    int age;
    char    name[100];
    float score;
};//定义结构体

void Input(struct Student *pst,int len){
    int i;

    for(i=0;i<len;i++)

    {    printf("请输入学生姓名:\n");printf("name=");
        scanf("%s",pst->name);
        printf("请输入学生的年龄:\n");printf("age=");
        scanf("%d",&pst->age);
        printf("请输入学生的成绩:\n");printf("score=");
        scanf("%f",&pst->score);
}}
void output(struct Student  *psr,int len   ){

    int i,j;
struct Student t;

    for(i=0;i<len-1;i++)

    {for(j=0;j<len-1-i;j++)

        if(*psr[j].score<*psr[j+1].score)

        {t=*psr[j+1];

    *psr[j+1]=*psr[j];

    *psr[j]=t;}}

        for(i=0;i<len;i++)

        {    printf("name=%s",psr->name[i]);

            printf("age=%d",psr->age);

            printf("score=%f",psr->score);}}

void main(){
int len;


printf("请输入学生个数:\n");printf("len=");

scanf("%d",&len);

struct Student *pstu;

pstu=(struct Student *)malloc(len * sizeof(struct Student));

Input(&pstu,len);

output(&pstu,len);
}

这是我自己一直靠直觉写的(别笑)弄了好久了,因为我函数和指针都没学好,所以中间出错(非法间接),我实在不知道怎么改了,大神帮帮忙嘛,把我这个改成对的。也许错误特别多(别笑),我也就不害羞了。求帮忙哦。如果已经实在错的一沓糊涂,那就帮忙写个嘛不过要用函数哦。我好对比下。
搜索更多相关主题的帖子: void include 结构体 动态 
2013-02-05 16:02
心灯甚亮
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:2
帖 子:441
专家分:996
注 册:2013-1-29
得分:0 
程序代码:
#include <stdio.h>

#include <malloc.h>

struct Student {

    int age;
    char    name[100];
    float score;
};//定义结构体

void Input(struct Student *pst,int len)
{
    int i;

    for(i=0; i<len; i++)

    {   printf("请输入学生姓名:\n");
        printf("name=");
        scanf("%s",pst->name);
        printf("请输入学生的年龄:\n");
        printf("age=");
        scanf("%d",&pst->age);
        printf("请输入学生的成绩:\n");
        printf("score=");
        scanf("%f",&pst->score);
    }
}
void output(struct Student  *psr,int len   ) {

    int i,j;
    struct Student t;

    for(i=0; i<len-1; i++)

    {   for(j=0; j<len-1-i; j++)

            if(psr[j].score<psr[j+1].score)

            {   t=psr[j+1];

                psr[j+1]=psr[j];

                psr[j]=t;
            }
    }

    for(i=0; i<len; i++)

    {   printf("name=%s\n",psr[i].name);

        printf("age=%d\n",psr[i].age);

        printf("score=%f\n",psr[i].score);
    }
}

void main() {
    int len;


    printf("请输入学生个数:\n");
    printf("len=");

    scanf("%d",&len);

    struct Student *pstu;

    pstu=(struct Student *)malloc(len * sizeof(struct Student));

    Input(pstu,len);

    output(pstu,len);
}

我修改了错误,其他的没管
2013-02-05 17:33
心灯甚亮
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:2
帖 子:441
专家分:996
注 册:2013-1-29
得分:0 
楼主0分帖,怪不得没人管啊
2013-02-05 17:35
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:0 
以下是引用心灯甚亮在2013-2-5 17:35:11的发言:

楼主0分帖,怪不得没人管啊
我觉得跟分没太大关系,看楼主的代码排版,东倒西歪,像坨便便,我以为他是故意来恶心别人的,所以没敢回答
2013-02-06 08:20
心灯甚亮
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:2
帖 子:441
专家分:996
注 册:2013-1-29
得分:0 
多亏代码格式化工具,不然我也不管
2013-02-06 08:21
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:0 
回复 5楼 心灯甚亮
我粗看了一下你的代码,Input 中 pst-> 应该是 pst[i]-> 吧
2013-02-06 08:23
fucai
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2018-8-21
得分:0 
回复 6楼 rjsp
你好,t跟pArr.age[j]数据类型不同吧,应不应该加*
如:
for(i=0; i<len-1; ++i)            
{
    for(j=0; j<len-1-I; ++j)      
    {
        if(*pArr.age[j] < * pArr.age[j+1])
        {
            t = *pArr.age[j];
            *pArr.age[j] = *pArr.age[j+1];
            *pArr.age[j+1] = t;
}
}
}
2018-08-21 17:00



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




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

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