| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 468 人关注过本帖
标题:好长的一段代码 开始只是 有几个数据输出错误 后来改就越错了 高手帮忙看 ...
只看楼主 加入收藏
露营地
Rank: 2
来 自:湛江
等 级:论坛游民
帖 子:150
专家分:23
注 册:2015-6-27
结帖率:92.86%
收藏
已结贴  问题点数:20 回复次数:4 
好长的一段代码 开始只是 有几个数据输出错误 后来改就越错了 高手帮忙看看哈
#include <stdio.h>
#include <stdlib.h>

enum SEX{man, female};
struct student_info
{
    char no[9];
    char name[20];
    enum SEX sex;
    int age;
    int classno;
    float grade;
};
typedef struct student_info    STUDENT;

STUDENT *getstuinfo(int i);
void sortstuinfo(STUDENT **pstu, int num);
void freememory(STUDENT **pstu, int num);

void main()
{
    STUDENT **pstu;
    int i, num;

    printf("please input the number of the students:");
    scanf("%d", &num);
    if(num<=0)
        return;

    pstu=(STUDENT **)malloc(num*sizeof(STUDENT *));
    if(pstu==NULL)
    {
        printf("no enouge memory!\n");
        return;
    }

    for(i=0;i<num;i++)
    {
        pstu[i]=getstuinfo(i);
        if(pstu==NULL)
        {
            printf("not enouge memory!\n");
            return;
        }

    }

    sortstuinfo(pstu, num);
    printf("\n................sort the result.....................\n");
    for(i=0;i<num;i++)
        printf("%8s%8s%6s%5d%5d%8.1f\n", pstu[i]->no, pstu[i]->name, (pstu[i]->sex==man)?"man":"female", pstu[i]->age, pstu[i]->classno, pstu[i]->grade");
    freememory(pstu, num);
    getch();
}

STUDENT *getstuinfo(int i)
{
    STUDENT *p;
    char sex;
    p=(STUDENT *)malloc(sizeof(STUDENT));
    if(p==NULL)
        return NULL;

    printf("\n........input NO. %d student's information...........\n", i+1);
    printf("no: ");
    scanf("%s", p->no);
    printf("name: ");
    scanf("%s", p->name);
    fflush(stdin);
    while(1)
    {
        printf("please input sex(m/f): ");
        scanf("%c", &sex);
        if(sex=='m' || sex=='f')
            break;
        fflush(stdin);
    }
    p->sex=(sex=='m')?man:female;
    printf("age: ");
    scanf("%d", &p->age);
    printf("classno: ");
    scanf("%d", &p->classno);
    printf("grade: ");
    scanf("%f", &p->grade);
    return p;
}

void sortstuinfo(STUDENT **pstu, int num)
{
    STUDENT *p;
    int i, j, k;
    for(i=0;i<num-1;i++)
    {
        k=i;
        for(j=i+1;j<num;j++)
            if(pstu[k]->grade<pstu[j]->grade)
                k=j;
        if(k!=1)
        {
            p=pstu[i];
            pstu[i]=pstu[k];
            pstu[k]=p;
        }
    }

}

void freememory(STUDENT **pstu, int num)
{
    int i;
    for(i=0;i<num;i++)
        free(pstu[i]);
    free(pstu);
}
收到的鲜花
  • 林月儿2015-09-15 11:47 送鲜花  9朵   附言:不错不错!
2015-09-15 10:35
voiceshen
Rank: 2
等 级:论坛游民
帖 子:21
专家分:58
注 册:2015-9-8
收藏
得分:20 
printf("%8s%8s%6s%5d%5d%8.1f\n", pstu[i]->no, pstu[i]->name, (pstu[i]->sex==man)?"man":"female", pstu[i]->age, pstu[i]->classno, pstu[i]->grade");
把最后的双引号拿掉。
2015-09-15 11:24
露营地
Rank: 2
来 自:湛江
等 级:论坛游民
帖 子:150
专家分:23
注 册:2015-6-27
收藏
得分:0 
回复 2楼 voiceshen
对了  对了   这条语句太长了  没发现  谢谢哈

不要不要的。。。
2015-09-15 11:26
林月儿
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:湖南
等 级:版主
威 望:138
帖 子:2277
专家分:10647
注 册:2015-3-19
收藏
得分:0 
不错啊!赞一个

剑栈风樯各苦辛,别时冰雪到时春
2015-09-15 11:47
露营地
Rank: 2
来 自:湛江
等 级:论坛游民
帖 子:150
专家分:23
注 册:2015-6-27
收藏
得分:0 
回复 4楼 林月儿
呵呵  哈哈

不要不要的。。。
2015-09-15 12:32
快速回复:好长的一段代码 开始只是 有几个数据输出错误 后来改就越错了 高手 ...
数据加载中...
 
   



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

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