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;作用一样,只是前者效率高一些而已。
#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
");
}
printf("
After ordering:
");
for(p=(int *)m,t=N*M,l=i=0;i
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;
}
追问:老师没说具体的矩阵应该自己随便给一个就可以吧
追答:#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;
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯