當前位置:首頁 » 存儲配置 » c語言矩陣存儲

c語言矩陣存儲

發布時間: 2023-07-12 16:24:55

① 急!!!!!在線等!c語言 定義一個二維數組來存放一個矩陣,然後將矩陣轉置輸出

/*
程式功能:
矩陣轉置
(transportation)
*//*輸入:m×n矩陣a
*//*輸出:矩陣b,b=at
*/#include
void
main()
{
int
i,
j,
m=5,
n=5;
int
b[6][6],
a[6][6];
printf("請依序輸入二維陣列a(5x5)的元素內容(可以5個一行,可以空格或回車隔開):
\n");
for
(i
=
1;
i
<=
5;
i++)
{
for
(j
=
1;
j
<=
5;
j++)
{
scanf("%d",
&a[i][j]);
}
}
printf("\n\n原始:\n");
for(i
=
1;
i
<=
m;
i
++)
{
for(j
=
1;
j
<=n;
j++)
{
printf("%4d",a[i][j]);
}
printf("\n");
}
printf("\n轉置後:\n");
for
(i
=
1;
i
<=
m;
i++)
{
for
(j
=
1;
j
<=
n;
j++)
{
b[i][j]
=
a[j][i];
/*作轉置的動作*/
printf("%4d
",
b[i][j]);
/*輸出轉置後的結果*/
}
printf("\n");
}}

② C語言中如何定義矩陣

兩種方式可以參考:
1、最簡單的就是二維數組,比如存儲全是整形的一個m*n的矩陣。然後可以定義int a[m][n]。
輸入或者輸出可以用兩層循環來完成,外層控制行m比如for(i=0;i<m;++i),內層控制列n比如for(j=0;j<n;++j);
2、第二種方式就是壓縮矩陣進行存儲,如果學了數據結構應該比較好理解。
結構體進行封裝,比如:
第一步:先定義一個有效數據的位置
typedef struct node
{
int hang;int lie;int data;//用來存儲一個有效數據位的行列和值
}node;
typedef struct matrix
{
node *m;//一個數組,用來存儲所有的node數據
int sum;//記錄一共有多少個有效數據位
}matrix;

③ C程序:從文件中讀取矩陣數據,並顯示出來,利用鏈式存儲結構。

md.row;
p->
return
sm;
}
}
sm->,col,列數,數據這樣存儲的。
你這個不會是稀疏矩陣吧!
typedef
struct
{
int
row,矩陣每個維度的大小自然先讀出來.d
=sm->
for(i=0;md=sm->
p->md;head.md;
typedef
struct
strucSparseMat
{
int
m;head;
p=p->
return
md;
}
讀矩陣,如果儲存了;count=i;head.md;p,如果數據個數也儲存了就最好了。
SparseMat
*readMat(FILE
*fp,fp);next->next
=NULL;next=p->pre=NULL,fp),sizeof(n);
MatNode
head.d;next=(PMatNode)malloc(sizeof(MatNode));
p->head.md){
break;
}
else
{
p->,n;
int
count,fp);
p->md;
fread(&n,1,sizeof(n),fp);
fread(&count.col;
typedef
struct
struMatNode{
matdata
md;//
}SparseMat;i++)
{
if(!readdata(fp,sm->!fp)return
NULL;
if(feof(fp)
&&
;
p=&sm->head;md.col=sm->!md)return
NULL;
fread(md,1,sizeof(md);head.md,*PMatNode;p->.row=sm->head;
if(feof(fp))return
NULL;
if(,
SparseMat
*sm)
{
int
i;
PMatNode
p;
if(!fp)return
NULL;next;
//&sp->
}MatNode,要看情況了;
double
d;
}matdata,sizeof(count),1;//i<count
&&
!feof(fp);next->pre=p;
p->,1、列號、數據還可以這樣存儲矩陣!
一般都是行數;
p->!sm)return
NULL;
fread(&m;
struMatNode
*pre,*nxt;
matdata
*readdata(FILE
*fp,matdata
*md){
if(啥時候矩陣,開始流行用鏈表做了!
行號

④ c語言矩陣怎麼寫

方法1:直接定義10*10的數組,讀取全部數據,再根據選擇的行列數列印輸出部分數據。

方法2:通過文件流指針的移動,跨過不需要的內容。(這里控制文件流指針可利用ftell和fseek函數來移動指定位元組數)我是利用fscanf讀取需要的內容,遇到需要跳行就用fgets來跳過。(注意常量參數根據自己需求修改)。

說明:邊讀取邊列印輸出,就不需要變數存儲。我的代碼是把讀取出來的內容存放在三維數組中(文件內容你沒指定,如是單純數字,二維數組即可,我是作為字元串處理,故用三維數組。),數組是根據實際大小,動態申請,寫成兩個獨立函數。

下面是代碼:

#include <stdio.h>

#include <string.h>

#include <malloc.h>

#define MAXR 10//文件中矩陣最大行

#define MAXC 10//文件中矩陣最大列

#define MS 3//矩陣中元素字元串最大字元數(包含結束符號,不可小於實際內容)

#define MBUF 100//文件中一行最大字元數,可設置大一點

char ***getMem(int r,int c,int len);//動態申請一個三維數組

void freeMem(char ***datas,int r,int c);//釋放數組空間

void showDatas(char ***datas,int r,int c);//列印輸出結果

int main()

{

int r=MAXR+1,c=MAXC+1,i=0,j=0;

char ***datas=NULL,str[3],buf[MBUF];

FILE *fp=NULL;

printf("請輸入要獲取的行數和列數: ");

while(r<0 || r>MAXR || c<0 || c>MAXC)scanf("%d%d",&r,&c);

datas=getMem(r,c,MS);

fp=fopen("C:\test.data","r");

if(!fp) return 1;

while(fscanf(fp,"%s",str)!=-1)

{

if(i<c) strcpy(datas[j][i],str),i++;

if(i==c)

{

if(!fgets(buf,sizeof(buf),fp)) break;

i=0,j++;

}

if(j==r) break;

}

showDatas(datas,r,c);

freeMem(datas,r,c);

return 0;

}

void showDatas(char ***datas,int r,int c)

{

int i,j;

for(i=0;i<r;i++,printf(" "))

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

printf("%s ",datas[i][j]);

printf(" ");

}

void freeMem(char ***datas,int r,int c)

{

int i,j;

if(!datas)

{

for(i=0;i<r;i++,free(datas[i]))

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

free(datas[i][j]);

free(datas);

}


}

char ***getMem(int r,int c,int len)

{

int i,j;

char ***datas=NULL,**dr=NULL;

datas=(char ***)malloc(sizeof(char **)*r);

if(!datas) return NULL;

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

{

dr=(char **)malloc(sizeof(char *)*c);

if(!dr) return NULL;

else

{

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

{

dr[j]=(char *)malloc(sizeof(char)*len);

if(!dr[j]) return NULL;

}

datas[i]=dr;

}

}

return datas;

}

熱點內容
手機網頁緩存視頻 發布:2025-02-03 23:38:48 瀏覽:826
agnes演算法 發布:2025-02-03 23:38:05 瀏覽:29
私密上傳在哪 發布:2025-02-03 23:33:04 瀏覽:1000
切冰解壓 發布:2025-02-03 23:30:36 瀏覽:764
解壓攪拌聲 發布:2025-02-03 23:11:35 瀏覽:831
伺服器硬碟誤拔了怎麼辦 發布:2025-02-03 23:05:26 瀏覽:868
易手遙控連接密碼是多少 發布:2025-02-03 22:44:26 瀏覽:167
sql安裝程序配置伺服器失敗 發布:2025-02-03 22:44:25 瀏覽:588
可以寫腳本的點擊器 發布:2025-02-03 22:44:22 瀏覽:613
c演算法代碼 發布:2025-02-03 22:42:20 瀏覽:863