今天遇到一个问题创建对称矩阵,本以为很简单,却在创建的时候怎么也创建不出来,然后百度,翻了半天也没翻到。最后还是自己想出来了。
代码如下:
代码语言:javascript复制#include <stdio.h>
int i,j,a[10][10] ={0};
/*int a[4][4] = {
{1,2,3,4},
{2,2,2,3},
{3,2,3,4},
{4,3,4,4},
};*/
int main()
{ srand((unsigned) time(NULL)); //用时间做种,每次产生随机数不一栿
for(i=0;i<10; i)
{
//a[i][0] = i 1;
for(j=0;j<10; j)
{
if(j>i) a[i][j] = rand() 1;
else if(i>j) a[i][j] = a[j][i];
else a[i][j] = rand()%3 1;
}
}
for(i=0;i<10; i)
{ for(j=0;j<10; j)
printf("M",a[i][j]);
printf("n");}
return 0;
}
输出结果如下:
思路:
i,表示行;j,表示列。矩阵只有三种情况,无论先绘列还是先绘行。
第一种情况:i=j,行列相同。
第二种情况:j>i,列大于行,先绘制行的话,行数增大的过程中总是列大于行然后才是行大于列,在列大于行的情况下,给矩阵赋值,a[i][j];
第三种情况:i>j,行大于列,直接使用 a[i][j]=a[j][i];