永发信息网

C语言编程:将矩阵中的元素由小到大排列后输出谢谢亲们,求助

答案:2  悬赏:60  手机版
解决时间 2021-04-02 19:21
  • 提问者网友:人傍凄凉立暮秋
  • 2021-04-02 09:14
C语言编程:将矩阵中的元素由小到大排列后输出谢谢亲们,求助
最佳答案
  • 五星知识达人网友:未来江山和你
  • 2021-04-02 09:40
#include "stdio.h"
#include "stdlib.h"
#define N 8
#define M 10
int main(void){
    int m[N][M],i,j,k,t,*p,l;
    printf("Before ordering:
");
    for(i=0;i        for(j=0;j        printf("
");
    }
    printf("
After ordering:
");
    for(p=(int *)m,t=N*M,l=i=0;i        for(k=i,j=k+1;j            if(p[k]>p[j])
                k=j;
        if(k-i)
            p[k]^=p[i],p[i]^=p[k],p[k]^=p[i];
        printf(++l%M ? "%4d" : "%4d
",p[i]);
    }
    return 0;
}追答
追问:谢谢你p[k]^=p[i],p[i]^=p[k],p[k]^=p[i]是什么意思(*^ω^*)
追答:^是异或的意思,即前后两个整数的对应二进制位相同为0,相异为1。在这里p[k]^=p[i],p[i]^=p[k],p[k]^=p[i];的作用与j=p[k],p[k]=p[i],p[i]=j;作用一样,只是前者效率高一些而已。
全部回答
  • 1楼网友:西风乍起
  • 2021-04-02 10:44
矩阵是什么样的矩阵,给个例子追答
追问:老师没说具体的矩阵应该自己随便给一个就可以吧
追答:#include <stdio.h>
#include<stdlib.h>
void sort(int array[], int count) {
    int b;
    for (int i = 0; i < count - 1; i++) {
        for (int j = 0; j < count - 1 - i; j++) {
            if (array[j] >= array[j + 1]) {
                b = array[j];
                array[j] = array[j + 1];
                array[j + 1] = b;
            }
        }
    }
}
int main() {
    int a[5][10] = {{0}};
    printf("排序前: ");
    for (int i = 0; i < 5; i++) {
        for (int j = 0; j < 10; j++) {
            a[i][j] = rand() % 100 + 1;
            printf("%3d ", a[i][j]);
        }
        printf(" ");
    }
    printf("排序后: ");
    for ( int i = 0; i < 5; i++) {
        sort(a[i], 10);
        for (int j = 0; j < 10; j++) {
            printf("%3d ", a[i][j]);
        }
        printf(" ");
    }
    
    return 0;
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯