| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1077 人关注过本帖
标题:关于一个赛跑问题,请问,我错在哪里了?
取消只看楼主 加入收藏
carmeloyin
Rank: 3Rank: 3
来 自:西安
等 级:论坛游侠
帖 子:161
专家分:157
注 册:2008-12-2
结帖率:91.67%
收藏
已结贴  问题点数:3 回复次数:9 
关于一个赛跑问题,请问,我错在哪里了?
题目如下:
问题的提出:某大学开田径运动会,现有12名选手参加100米比赛,对应的运动员号及成绩如表所示,请按照成绩排名并输出,要求每一行输出名次、运动员号及成绩。要求用冒泡法排序。
运动员号    成绩(秒)    运动员号    成绩(秒)
001          13.6            031    14.9
002          14.8            036    12.6
010          12.0            037    13.4
011          12.7            102    12.5
023          15.6            325    15.3
025          13.4            438    12.7

我写的程序如下:
#include<iostream.h>
class player
{
public:
    int number;
    double grade;
};
main()
{
    player a[12]={{001,13.6},{002,14.8},{010,12.0},{011,12.7},{023,15.6},{025,13.4},
                {031,14.9},{036,12.6},{037,13.4},{102,12.5},{325,15.3},{438,12.7}};
    player temp;
    for(int i=0; i<12; i++)   //排列12次
        for(int j=0; j<12-i; j++)
            if(a[j].grade>a[j+1].grade)
            {
                temp=a[j];
                a[j]=a[j+1];
                a[j+1]=temp;
            }
    for(i=0; i<12; i++)
        cout<<i+1<<" "<<a[i].number<<" "<<a[i].grade<<endl;
}


    编译后都没有错,但是运行exe文件后,不仅答案不对,而且还停止工作,说windows检查错误···
怎么错这么离谱啊??



[ 本帖最后由 carmeloyin 于 2010-8-14 17:38 编辑 ]
搜索更多相关主题的帖子: 赛跑 
2010-08-14 17:36
carmeloyin
Rank: 3Rank: 3
来 自:西安
等 级:论坛游侠
帖 子:161
专家分:157
注 册:2008-12-2
收藏
得分:0 
求大大解释
2010-08-14 17:59
carmeloyin
Rank: 3Rank: 3
来 自:西安
等 级:论坛游侠
帖 子:161
专家分:157
注 册:2008-12-2
收藏
得分:0 
那么int a=2;  和int a=02; 不是一回事情?
基础没有学好··
那么十进制是怎么表示呢?
2010-08-14 18:26
carmeloyin
Rank: 3Rank: 3
来 自:西安
等 级:论坛游侠
帖 子:161
专家分:157
注 册:2008-12-2
收藏
得分:0 
那么我要表示001号,015号选手怎么表示?
最终输出也是001,015
而不是表示成二进制输入,结果十进制输出??
2010-08-14 19:23
carmeloyin
Rank: 3Rank: 3
来 自:西安
等 级:论坛游侠
帖 子:161
专家分:157
注 册:2008-12-2
收藏
得分:0 
我修改了下程序
可是还是window错误

#include<iostream.h>
class player
{
public:
    char number[4];
    double grade;
};
main()
{
    player a[12]={{"001",13.6},{"002",14.8},{"010",12.0},{"011",12.7},{"023",15.6},{"025",13.4},
                {"031",14.9},{"036",12.6},{"037",13.4},{"102",12.5},{"325",15.3},{"438",12.7}};
    player temp;
    for(int i=0; i<12; i++)   //排列12次
        for(int j=0; j<12-i; j++)
            if(a[j].grade>a[j+1].grade)
            {
                temp=a[j];
                a[j]=a[j+1];
                a[j+1]=temp;
            }
    for(i=0; i<12; i++)
        cout<<i+1<<" "<<a[i].number[4]<<" "<<a[i].grade<<endl;
}

没有想明白怎么回事
2010-08-14 20:09
carmeloyin
Rank: 3Rank: 3
来 自:西安
等 级:论坛游侠
帖 子:161
专家分:157
注 册:2008-12-2
收藏
得分:0 
为什么用number不用number[4]??
号码有3位数字再加1个\0
对不?
而且我换成number了,也window报错啊···
我基础不好,很多知识混乱,知道有这么回事,但是往往难以对号入座,如果我问的是小儿科的问题,也请大大不要不耐烦
2010-08-15 09:48
carmeloyin
Rank: 3Rank: 3
来 自:西安
等 级:论坛游侠
帖 子:161
专家分:157
注 册:2008-12-2
收藏
得分:0 
哦,对,是排列11次,不是12次··
不报错了
但是我还是不明白
前面我char number[4];没问题
为什么,我后期cout<<player[j].number[4]却不行,非要用number呢?
2010-08-15 11:03
carmeloyin
Rank: 3Rank: 3
来 自:西安
等 级:论坛游侠
帖 子:161
专家分:157
注 册:2008-12-2
收藏
得分:0 
我number[4]的意图,不是想输出number数组中的第4个内容,我知道,只有第0.1.2.3这4个内容,其中第4个内容是\0
我number[4]的意图是想输出整个字符数组,也可以理解成字符串
难道这么表达不可以?
2010-08-15 11:29
carmeloyin
Rank: 3Rank: 3
来 自:西安
等 级:论坛游侠
帖 子:161
专家分:157
注 册:2008-12-2
收藏
得分:0 
确实没有一年
完全自学
不存在道听途说的问题··
2010-08-15 14:05
carmeloyin
Rank: 3Rank: 3
来 自:西安
等 级:论坛游侠
帖 子:161
专家分:157
注 册:2008-12-2
收藏
得分:0 
字符数组难道不可以理解为字符串啊?
抛开技术角度说
从思想上看
我觉得可以这么理解啊
好比N个字符组成字符数组,其实就是一个字符串
字符串相当于一个命名为string的字符数组类
我自学是这么理解的
2010-08-15 14:07
快速回复:关于一个赛跑问题,请问,我错在哪里了?
数据加载中...
 
   



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

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