C语言1到16的四阶矩阵,c语言 题一任意输入16个数 4乘4矩阵逆序输出 题二任意输入16个数 4乘4矩阵由大到小输出...

匿名用户

1级

2018-05-17 回答

#include "stdio.h"

int main()

{

int a[4][4]={0};

int i = 0;

int j = 0;

int m = 0;

int b[16] = {0};

printf("请输入一个4X4的二维数组:\n");

for(i=0; i<4; i++)

{

for(j=0; j<4; j++)

{

scanf("%d",&a[i][j]);

}

}

printf("输出该二维数组:\n");

for(i=0; i<4; i++)

{

for(j=0; j<4; j++)

{

printf("%-10d ",a[i][j]);

}

printf("\n");

}

printf("逆序输出:\n");

for(i=3; i>=0; i--)

{

for(j=3; j>=0; j--)

{

printf("%-10d ",a[i][j]);

}

printf("\n");

}

printf("从大到小输出:\n");

//先将矩阵拷贝到一个数组中 这样后面的冒泡的编码会比较好写一点

for (i=0; i<4; i++)

{

for (j=0; j<4; j++)

{

b[m++] = a[i][j];

}

}

//开始冒泡 从小到大排列

for (i=0; i<16; i++)

{

for (j=i+1; j<16; j++)

{

if (b[i] > b[j])

{

m = b[j];

b[j] = b[i];

b[i] = m;

}

}

}

//开始输出 这里直接通过b输出 也可以拷贝到a中再输出

for(i=15; i>=0; i--)

{

printf("%-10d ",b[i]);

if (0 == i%4)//逢4换行

{

printf("\n");

}

}

}

追问:

请问m 与b 是给什么赋值?

追答:

这里的m写的有点不好,第一次的m++和后面的m作为临时变量赋值是两个意思,一个是作为数组下标,另一个是作为临时变量。第一个m++可以换成一个新的变量比如n++,单独做为数组下标。

//开始冒泡 从小到大排列

for (i=0; i<16; i++)

{

for (j=i+1; j<16; j++)

{

if (b[i] > b[j])

{

m = b[j];

b[j] = b[i];

b[i] = m;

}

}

}上面这块代码,m和b[]的赋值是一个典型的冒泡排序算法。

说实话,我觉得这个一维数组的冒泡你看不懂,竟然能看得懂下面二维数组的算法... 难以理解

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值