| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 415 人关注过本帖
标题:请问一个排序题
只看楼主 加入收藏
wymyhome
Rank: 1
等 级:新手上路
帖 子:29
专家分:4
注 册:2009-7-8
结帖率:84.21%
收藏
已结贴  问题点数:20 回复次数:3 
请问一个排序题
(论坛 不能 附加图片了?) 我放在附件里面 题目

[local]1[/local]

  答案的 红色部分是这样的  为什么我写的那种 用起泡法排序运行结果却和这个不一样?请问我出错在什么地方了啊
    for (i=0; i<cnt-1; i++)
        for (j=i+1; j<cnt; j++)
            if (b[i] > b[j])
            {
                k = b[i];
                b[i] = b[j];
                b[j] = k;
            }


这个是我写的,主要是红色部分,


#include <stdio.h>
#define  MAX 200
int  a[MAX], b[MAX], cnt = 0;
void jsVal()
{
    int  i, j;
    int  a1, a2, a3, a4, k;
    for (i=0; i<MAX; i++)
    {
        a1 = a[i]/1000;
        a2 = a[i]%1000/100;
        a3 = a[i]%100/10;
        a4 = a[i]%10;
        if ((a1 <= a2) && (a2 <= a3) && (a3 <= a4) && (a[i]%2 == 0))
        {
            b[cnt] = a[i];
            cnt++;
        }
    }
for(j=0;j<cnt-1;j++)
  for(i=0;i<cnt-j;i++)
      if(b[i]>b[i+1])
      {k=b[i];
      b[i]=b[i+1];
      b[i+1]=k;
      }

}
void readDat()
{
    int  i;
    FILE  *fp;
    fp = fopen("IN.DAT", "r");
    for (i=0; i<MAX; i++)
        fscanf(fp, "%d,", &a[i]);
    fclose(fp);
}
void writeDat()
{
    FILE  *fp;
    int  i;
    fp = fopen("OUT.DAT", "w");
    fprintf(fp, "%d\n", cnt);
    for (i=0; i<cnt; i++)
        fprintf(fp, "%d\n", b[i]);
    fclose(fp);
}
void main()
{
    int  i;
    readDat();
    jsVal();
    printf("满足条件的数=%d\n", cnt);
    for (i=0; i<cnt; i++)
        printf("%d ", b[i]);
    printf("\n");
    writeDat();
}
搜索更多相关主题的帖子: include 图片 
2009-09-16 21:39
choco1024
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:183
专家分:140
注 册:2008-8-31
收藏
得分:6 
冒泡排序:

for(j=0;j<cnt;j++)    //判断j结束条件,j<cnt
  for(i=1;i<cnt-j;i++)   // i的初始值
      if(b[i]>b[i+1])
      {k=b[i];
      b[i]=b[i+1];
      b[i+1]=k;
      }
2009-09-16 21:50
UserYuH
Rank: 12Rank: 12Rank: 12
来 自:毅华
等 级:火箭侠
威 望:8
帖 子:720
专家分:3300
注 册:2009-8-10
收藏
得分:6 
回复:wymyhome
for(i=0;i<cnt-1-j;i++)  /* 第二循环再多减1,因为要排的数有cnt个,下标只到cnt-1,你j为0时,是cnt-0,
 下面的b[i]>b[i+1]就会有越界。 */

[ 本帖最后由 UserYuH 于 2009-9-16 22:32 编辑 ]

努力—前进—变老—退休—入土
2009-09-16 22:31
xu362726904
Rank: 6Rank: 6
等 级:侠之大者
帖 子:160
专家分:471
注 册:2009-6-18
收藏
得分:6 
你的J的范围错了
2009-09-16 22:37
快速回复:请问一个排序题
数据加载中...
 
   



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

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