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處無限循環了。