| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 432 人关注过本帖, 1 人收藏
标题:请问这个代码应该怎么改,求大神指导啊!!!
只看楼主 加入收藏
殇回忆
Rank: 2
等 级:论坛游民
帖 子:11
专家分:12
注 册:2014-12-20
结帖率:100%
收藏(1)
 问题点数:0 回复次数:2 
请问这个代码应该怎么改,求大神指导啊!!!
请问这个代码该怎么改才能当我不想排序的时候可以直接退出,我的代码是按了0之后还会排序一次,再按一次才能退出,我想要让它直接退出.

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

#define MAXID 6
#define MAXNAME 8
#define MAXN 100000

struct Student{
    char id[MAXID + 1];
    char name[MAXNAME + 1];
    int grade;
}Record[MAXN];

int CompareId(const void *a, const void *b)
{
    return strcmp(((const struct Student *)a)->id, ((const struct Student *)b)->id);
}

int CompareName(const void *a, const void *b)
{
    int k = strcmp(((const struct Student *)a)->name,((const struct Student *)b)->name);
    if (!k)
        strcmp(((const struct Student *)a)->id, ((const struct Student *)b)->id);
    return k;
}

int CompareGrade(const void *a, const void *b)
{
    int k = (((const struct Student *)a)->grade>((const struct Student *)b)->grade)?1:0;
    if (!k){
        k = (((const struct Student *)a)->grade<((const struct Student *)b)->grade) ? -1 : 0;
        if (!k)
            strcmp(((const struct Student *)a)->id, ((const struct Student *)b)->id);
    }
    return k;
}

int main()
{
    int N, C, i;
    printf("请输入记录的条数:\n");
    scanf("%d", &N);
    printf("请输入学生记录(格式为:学号 姓名 成绩):\n");
    for (i = 0; i < N; i++)
    {
        scanf("%s %s %d",&Record[i].id,&Record[i].name,&Record[i].grade);
    }   
    while(C!=0);
    {
        printf("请输入指定排序的列号:\n");
        scanf("%d",&C);
    switch (C)
    {
    case 1:qsort(Record, N, sizeof(struct Student), CompareId);
        break;
    case 2:qsort(Record, N, sizeof(struct Student), CompareName);
        break;
    case 3:qsort(Record, N, sizeof(struct Student), CompareGrade);
        break;
    }
    printf("排序后的结果为:\n");
    for (i = 0; i < N; i++)
        printf("%s %s %d\n", Record[i].id, Record[i].name, Record[i].grade);
    }
    return 0;
}
搜索更多相关主题的帖子: include return 
2014-12-20 16:59
ouyangshit
Rank: 3Rank: 3
来 自:China
等 级:论坛游侠
帖 子:155
专家分:107
注 册:2014-10-25
收藏
得分:0 
C没赋储值啊,我赋了初值1后表示输入完 就卡住了。
为什么要那么多 const void *
不解,求助
2014-12-20 17:50
殇回忆
Rank: 2
等 级:论坛游民
帖 子:11
专家分:12
注 册:2014-12-20
收藏
得分:0 
卡住可能是你的学号不是六位
2014-12-21 11:44
快速回复:请问这个代码应该怎么改,求大神指导啊!!!
数据加载中...
 
   



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

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