| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 618 人关注过本帖
标题:二位数组升序排序不用指针实现我编写出来的代码有误不知道是思路错了还是语 ...
只看楼主 加入收藏
w716169470
Rank: 2
等 级:论坛游民
帖 子:51
专家分:25
注 册:2013-4-18
结帖率:61.54%
收藏
已结贴  问题点数:20 回复次数:6 
二位数组升序排序不用指针实现我编写出来的代码有误不知道是思路错了还是语法毛病求大神指点
/******************************************************
*  函数功能 :二维数组排序
*  函数思路 :运用一个变量存储最大值 并和二维数组每个成员比较 最后把最大值赋值给数组最后一位成员,然后倒数第二位。。。以此类推
*  编写时间 :2013 4 18
******************************************************/
#include <stdio.h>
#include <stdlib.h>

int main(int argc , cahr *argv[])
{
    int i, j, k, f = 3, h = 3;
    int p, tmp;
    int a[3][3] = { 1, 3, 5, 7, 9, 2, 4, 6, 8};

    for(k = 0; k < 9; k++)
    {
        p = a[f][n];
        for(i = 3, j = 3; j >= 0, i >= 0; j--)
        {
            if(p < a[i][j])
            {
                tmp = a[i][j];
                a[i][j] = p;
                p = tmp;
            }
            if(j == 0)
            {
                i--;
                j = 3;
            }   
        }        
        
        a[f][h] = p;
        h--;
        
        if(h == 0)
        {
            h = 3;
            f--;
        }
        
    }

    for(i = 0; i < 3; i++)
    {
        for(j = 0; j < 3; j++)
        {
            printf("%d\t",a[i][j]);
        }
    }

   
    return EXIT_SUCCESS;
}
搜索更多相关主题的帖子: 还是 include 最大值 倒数 
2013-04-18 20:39
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:5 
数组越界  a[3]的最大下标是2

DO IT YOURSELF !
2013-04-18 20:47
w716169470
Rank: 2
等 级:论坛游民
帖 子:51
专家分:25
注 册:2013-4-18
收藏
得分:0 
回复 2楼 wp231957
恩, 我的思路没问题吧, ?
2013-04-18 20:48
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:5 
你的代码有多处笔误  根本就无法编译  再仔细看看吧

另: 结尾处 return 0; 即可

DO IT YOURSELF !
2013-04-18 20:50
w716169470
Rank: 2
等 级:论坛游民
帖 子:51
专家分:25
注 册:2013-4-18
收藏
得分:0 
回复 4楼 wp231957
恩 刚才发帖着急了, 我再好好看看。
2013-04-18 20:53
邓士林
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:淮河河畔
等 级:贵宾
威 望:61
帖 子:2392
专家分:13384
注 册:2013-3-3
收藏
得分:10 
你的数组越界,而且把h写成n了,修改下:
/******************************************************
*  函数功能 :二维数组排序
*  函数思路 :运用一个变量存储最大值 并和二维数组每个成员比较 最后把最大值赋值给数组最后一位成员,然后倒数第二位。。。以此类推
*  编写时间 :2013 4 18
******************************************************/
#include <stdio.h>
#include <stdlib.h>

int main(int argc , char *argv[])
{
    int i, j, k, f = 2, h = 2;
    int p, tmp;
    int a[3][3] = { 1, 3, 5, 7, 9, 2, 4, 6, 8};

    for(k = 0; k < 9; k++)
    {
        p = a[f][h];
        for(i = 2, j = 2; j >= 0, i >= 0; j--)
        {
            if(p < a[i][j])
            {
                tmp = a[i][j];
                a[i][j] = p;
                p = tmp;
            }
            if(j == 0)
            {
                i--;
                j = 3;
            }   
        }        
        
        a[f][h] = p;
        h--;
        
        if(h == 0)
        {
            h = 3;
            f--;
        }
        
    }

    for(i = 0; i < 3; i++)
    {
        for(j = 0; j < 3; j++)
        {
            printf("%d\t",a[i][j]);
        }
    }

   
    return EXIT_SUCCESS;
}

Maybe
2013-04-18 20:55
w716169470
Rank: 2
等 级:论坛游民
帖 子:51
专家分:25
注 册:2013-4-18
收藏
得分:0 
回复 6楼 邓士林
32行的h为什么等于3,不是应该等于2吗.? 另 : 编译出来不是升序是降序。
2013-04-18 21:20
快速回复:二位数组升序排序不用指针实现我编写出来的代码有误不知道是思路错了还 ...
数据加载中...
 
   



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

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