| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1844 人关注过本帖
标题:[求助]结构体排序答案输出错误,求指点
取消只看楼主 加入收藏
tiki
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2015-4-19
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:1 
[求助]结构体排序答案输出错误,求指点
输入
4
bt_2012211111   5      8      100
bt_2012212222   4      0      200
bt_2012213333   5      0      150
bt_2012214444   6      9      200
第一行为一个整数n(1<n<10),后面是n行考生数据,共4列,每列之间以空格分隔。

其中第一列为考生帐号(固定15位的字符串,格式为bt_**********,其中所有的*均为数字),

第二列为该生正确解答的题目数(大于等于0,且小于10的整数),

第三列为该生正确解答的题目中错误提交的次数(大于等于0,且小于100的整数),

第四列为从考试开始到该生最后一次正确提交时的分钟数(大于等于0,且小于300的整数)。

以正确提交的次数num从大到小对账号进行排序,但如果甲、乙两同学都正确完成两道题目,

其中甲同学最后正确提交的时间是考试开始后200分钟,

乙同学为180分钟,但乙同学有一题提交了3次(错误提交为2次,罚时为40分钟)。

这样甲同学的总用时为200分钟而乙同学为180 + 40 = 220 分钟,所以甲同学总用时少,排名靠前。

输出
bt_2012214444
bt_2012213333
bt_2012211111
bt_2012212222


#include<stdio.h>
#include<string.h>
#define N 10
struct student
{
    char name[20];
    int num;
    int fals;
    int time;
} stu[N];
int main()
{
    int n,i,j,k[10],m,f,t,c,q;
    char str1[20],str2[20];
    scanf("%d",&n);
    for(i=0;i<n;i++)
    scanf("%s%d%d%d",&stu[i].name,&stu[i].num,&stu[i].fals,&stu[i].time);
    //对所有元素根据num从大到小进行重新排序
    for(j=0;j<n-1;j++)
    for(i=0;i<n-1-j;j++)
    {
        if(stu[i].num<stu[i+1].num)
        {
            strcpy(str1,stu[i].name);
            strcpy(stu[i].name,stu[i+1].name);
            strcpy(stu[i+1].name,str1);
            m=stu[i].num;
            stu[i].num=stu[i+1].num;
            stu[i+1].num=m;
            f=stu[i].fals;
            stu[i].fals=stu[i+1].fals;
            stu[i+1].fals=f;
            t=stu[i].time;
            stu[i].time=stu[i+1].time;
            stu[i+1].time=t;
        }
    }
    //根据提交错误次数和时间进行排序
    for(j=0;j<n-1;j++)
    for(i=0;i<n-1-j;j++)
    {
        if(stu[i].num==stu[i+1].num)
        {
            c++;
            k[i]=stu[i].time+20*stu[i].fals;
            for(j=0;j<c;j++)
            for(i=0;i<c-j;i++)
            {
                if(k[i]>k[i+1])
                {
                    strcpy(str2,stu[i].name);
                    strcpy(stu[i].name,stu[i+1].name);
                    strcpy(stu[i+1].name,str2);
                }
            }
        }
    }
    //根据排序输出结果
    for(i=0;i<n;i++)
    {
        printf("%s\n",stu[i].name);
    }
    return 0;
}
输出的结果不对,求指点

[ 本帖最后由 tiki 于 2015-4-19 18:38 编辑 ]
搜索更多相关主题的帖子: 结构体 字符串 
2015-04-19 18:20
tiki
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2015-4-19
收藏
得分:0 
回复 4楼 code力力
谢谢指点,这个题卡了我一晚上,我才开始学,做题的思路比较简单,万分感谢
2015-04-20 13:06
快速回复:[求助]结构体排序答案输出错误,求指点
数据加载中...
 
   



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

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