1. 用c语言将一个N阶满阶矩阵通过初等行列变换,变为它的逆矩阵。
#define
N
10
#include
<stdio.h>
main()
{int
i,j,a[N][N]={……}//这里如果是程序中定义好的矩阵则自己写
下定义
的数据就可以了,
不是的
话把赋值的等号以及后面去掉就OK
for(i=0;i<N;i++)
for(j=0;j<N;j++)
scanf("%d",&a[i][j]);//如果是程序代码里定义好数据就不用这一句啦
for(i=0;i<N;i++)
for(j=0;j<N-i;j++)
{t=a[i][j];<br/>a[i][j]=a[j][i];<br/>a[j][i]=t;<br/>}
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
printf("%d\t",a[i][j]);
printf("\n");
}
2. 那位高手帮下忙,用c语言编一个矩阵转换程序
兄弟,一看这个就知道是学校的作业,还是老老实实自己做吧,学到的才是自己的,也不是很难。为了方便开发,你可以安装一个Microsoft
Visual
Studio
2005
或者2008,开发环境好点,效率高点。
3. C语言:要求对矩阵的转置变换。 对于输入的矩阵A,要求输出A的转置矩阵。
/*矩阵的行和列运行时输入*/
#include <stdio.h>
#include <malloc.h>
#include <time.h>
#include <stdlib.h>
void rp(int** a,int r,int c)
{
int i,j;
int** ta=(int**)malloc(c*sizeof(int*));
for(i=0;i<c;i++)
{
ta[i]=(int*)malloc(r*sizeof(int));
}
for(i=0;i<c;i++)
{
for(j=0;j<r;j++)
{
ta[i][j]=a[j][i];
printf("%4d",ta[i][j]);
}
printf("\n");
}
for(i=0;i<c;i++)
{
free(ta[i]);
}
free(ta);
}
void main()
{
int r,c,i,j;
printf("输入矩阵的行和列,用空格分开:");
scanf("%d%d",&r,&c);
int** as=(int**)malloc(r*sizeof(int*));
for(i=0;i<r;i++)
{
as[i]=(int*)malloc(c*sizeof(int));
}
srand((unsigned)time(0));
printf("转置前:\n");
for(i=0;i<r;i++)
{
for(j=0;j<c;j++)
{
as[i][j]=rand()%100;
printf("%4d",as[i][j]);
}
printf("\n");
}
printf("转置后:\n");
rp(as,r,c);
for(i=0;i<r;i++)
{
free(as[i]);
}
free(as);
}
输入矩阵的行和列,用空格分开:5 6
转置前:
94 90 24 5 20 80
22 60 41 18 47 28
0 96 26 1 65 85
20 5 5 90 87 14
71 43 64 96 65 17
转置后:
94 22 0 20 71
90 60 96 5 43
24 41 26 5 64
5 18 1 90 96
20 47 65 87 65
80 28 85 14 17
请按任意键继续. . .
4. C语言 矩阵变换
二维数组的第一维(就是后面一个[])作为行,第二维(就是前面一个[])作为列,这是一种惯用理解方式。你的理解恰好把行和列反了一下。
这种理解方式也不是没有原因的,一维数组我们叫一行,可以用元素指针自增自减的方式遍历整个行,但我们不能用元素指针自增自减来遍历二维数组的整个列。
5. C语言 矩阵变换编程
for(i)循环的i是相同数据组成的矩形框的层号。
for(j)循环的j是矩形框顶行和底行的列号(i列到N - 1 - i列)。该循环显然是填写行的。
for(k)循环的k是矩形框左列和右列的行号(i行到N - 1 - i行)。该循环显然是填写列的。
看看代码:
for(i=0;i<N;++i)
for(j=0;j<N;++j;
a[i][j]=N*i+j;
每一个i都对应N个j(0 -- N - 1),i是行索引,j是列索引,显然是按行操作的
for(i=0;i<N;++i)
for(j=0;j<N;++j;
a[j][i]=N*i+j;
每一个i都对应N个j(0 -- N - 1),j是行索引,i是列索引,显然是按列操作的
从以上分析可知,二维数组的两个索引的变化方式的不同,决定了操作方式的不同。第一维(左边的索引)一次变化对应第二维多次变化时,就是按行操作,相反,第一维(左边的索引)多次次变化对应第二维一次变化时,就是按列操作。
6. C语言考试 矩阵转换
楼主学习过数据结构没有?
#include <stdio.h>
#define M 5
#define N 5
void main()
{
int array[M][N];
int TSMatrix[M*N][3];
int i,j,k;
for(i=0;i<M;i++)
for(j=0;j<N;j++)
scanf("%d",&array[i][j]);
k=0;
for(i=0;i<M;i++)
for(j=0;j<N;j++)
{
if(array[i][j]!=0)
{
TSMatrix[k][0]=i+1;
TSMatrix[k][1]=j+1;
TSMatrix[k][2]=array[i][j];
k++;
}
}
for(i=0;i<k;i++)
printf("%d %d %d\n",TSMatrix[i][0],TSMatrix[i][1],TSMatrix[i][2]);
}
7. 编写程序,实现矩阵转换,即将一个 m行n列的矩阵行和列互换
在C语言中假设原数组为a,互换行列后的数组为b:
main()
{
int a [2][3]={{1,2,3},{4,5,6}};
int b [3][2],i,j;
printf("Array a:\n");
for (i=0;i<=1;i++)
{
for(j=0;j<=2;j++)
{
printf("%5d",a[i][j]);
b[j][i]=a[i][j];
}
printf("\n");
}
printf("Array b:\n");
for(i=0;i<=2;i++)
{
for(j=0;j<=1;j++)
printf("%5d",b[i][j]);
printf("\n");
}
}
8. C语言将一个二维数组行和列的元素互换,存到另一个二维数组中,即矩阵的转换
#include <stdio.h>
int main ( )
{ int i,j,a[3][4],b[4][3];
for(i=0; i<3; i++)
for(j=0; j<4; j++)
a[i][j]=i*4+j+1;
printf("二维数组A: ");
for(i=0; i<3; i++)
{ for(j=0; j<4; j++)
{ printf("%4d",a[i][j]); //输出A矩阵
b[j][i]=a[i][j]; //转置到B矩阵
}
printf(" ");
}
printf(" 二维数组B: ");
for(i=0; i<4; i++) //输出B矩阵
{ for(j=0; j<3; j++)
printf("%4d",b[i][j]);
printf(" ");
}
return 0;
}
9. c语言矩阵变换
scanf()函数返回成功赋值的数据项数,读到文件末尾出错时则返回EOF。
程序在while处无限循环了。