24小时热门版块排行榜    

查看: 802  |  回复: 12
本帖产生 1 个 程序强帖 ,点击这里进行查看
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

wangww2011

木虫 (著名写手)



zyj8119(金币+5):谢谢朋友精彩的程序!!!! 2010-11-12 01:55:39
nono2009(金币+1, 程序强帖+1):鼓励应助 2010-11-12 08:41:15
我觉得这个答案和题目有点不符合啊
我重写了,虽然不简洁,但是很好理解
CODE:
#include
#include

void process2(int a[][5]) {
    int i, k, tmp;
    int *p = &a[0][0];
    int min[4],max = p[0];
    int index[5];
    int n[5] = {0, 4, 20, 24, 12};

    for (i = 0; i < 25; i++) {//得到最大值
        if (max < p[i]) {
            max = p[i];
            index[4] = i;
        }
    }

    for (k = 0; k < 4; k++) {//得到4个最小值
        min[k] = p[k];
        for (i = 0; i < 25; i++) {
            if (min[k] > p[i]) {
                min[k] = p[i];
                index[k] = i;
            }
        }
        p[index[k]] = max;//把当前的最小值换成最大值
    }

    for (k = 0; k < 4; k++) {//还原原始数组
        p[index[k]] = min[k];
    }

    for (k = 0; k < 5; k++) {//放到特定位置
        tmp = p[n[k]];
        p[n[k]] = p[index[k]];
        p[index[k]] = tmp;
    }
}

void main() {
    int a[5][5] = {
        {16, 17, 18, 19, 1},
        {5, 4, 3, 2, 20},
        {25, 24, 23, 22, 21},
        {6, 7, 8, 9, 10},
        {15, 14, 13, 12, 11}
    };
    int i, j;
    for (i = 0; i < 5; i++) {
        for (j = 0; j < 5; j++)printf("%4d", a[i][j]);
        printf("\n");
    }

    process2(a);

    printf("\n");

    for (i = 0; i < 5; i++) {
        for (j = 0; j < 5; j++)printf("%4d", a[i][j]);
        printf("\n");
    }
    getchar();
}

引用回帖:
Originally posted by zyj8119 at 2010-11-11 22:52:25:

我也感觉有问题,但是找不出在哪里,这个就是答案的程序。。。。

9楼2010-11-12 00:30:18
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 zyj8119 的主题更新
普通表情 高级回复 (可上传附件)
信息提示
请填处理意见