矩陣儲存c語言,C語言矩陣

本文目錄一覽:

double類型的矩陣保存與讀取,用C語言

「fscanf(fp,”%lf”,w[i][j]);」 讀取的時候不要漏掉取地址運算&

「fseek(fp, 1L, 1);    //從當前位置跳過一個位元組」 為什麼要跳過一個位元組?fscanf會自動調整指針位置

「for (i = 0; i=n2; i++)」 =的寫法比較少,你得確保i真的能取到n2

c語言矩陣的壓縮存儲

#define N 4

#define M 5

#includestdio.h

#includestdlib.h

#includetime.h

typedef int ElemType;

typedef struct triplist

{

int row,col;

ElemType val;

}tl;

tl a[N*M];

void print_array(ElemType b[][M+1])

{

int i,j;

printf(“\n”);

for(i=1;i=N;i++)

{

for(j=1;j=M;j++)

printf(“%5d”,b[i][j]);

printf(“\n”);

}

}

void create_triplist(ElemType b[N][M+1],tl a[ ])

{

int i,j;

int t=1;

for(i=1;i=N;i++)

for(j=1;j=M;j++)

if(b[i][j])

{

a[t].row=i;

a[t].col=j;

a[t].val=b[i][j];

t++;

}

a[0].row=N;

a[0].col=M;

a[0].val=t-1;

for(i=1;i=N*M;i++)

printf(“%d\t%d\t%d\n”,a[i].row,a[i].col,a[i].val);

}

int main()

{

ElemType b[N+1][M+1]; //這裡我把b[N][M+1] 的N後邊加一

int e,f;

srand((unsigned)time(NULL));

for(e=1;e=N;e++)

for(f=1;f=M;f++)

b[e][f]=rand()/10000;

print_array(b);

create_triplist(b,a);

return 0;

}

看看能不能運行,因為我運行出來的和這個結果都一樣,只是有內存問題,加一之後就沒有這個提示了

C語言對矩陣的存儲與讀取如何進行?

這個要你自己實現一個串化和反串化的類。Mfc你可以使用Archive對象做,c的話要自己實現過程。

C語言矩陣按行存儲相乘?

#includestdio.h

int main()

{

float a[100][100],b[100][100],c[100][100];//定義三個數組,分別存儲矩陣A,B,C

int m1,n1,m2,n2,i1,j1,i2,j2,i3,j3,i4,j4,k;

float s[100][100]={0};//賦值使數組s元素初值全部為零

printf(“請輸入矩陣A行數m1,列數n1:”);//輸入矩陣A行數,列數

scanf(“%d,%d”,m1,n1);

printf(“請輸入矩陣B行數m2,列數n2:”);//輸入矩陣B行數,列數

scanf(“%d,%d”,m2,n2);

printf(“\n\n”);//如果不可以相乘,下面將出現判斷,在此換行,便於觀看

if(n1!=m2)

printf(“不可以相乘!!!”);//判斷是否可以相乘

printf(“\n\n”);

if((m1100)||(n1100))

printf(“數目過多!!!”);//控制矩陣A元素數量在數組容納範圍內

else

{

for(i1=1;i1=m1;i1++)

{

for(j1=1;j1=n1;j1++)

{

printf(“a[%d][%d]=:”,i1,j1);

scanf(“%f”,a[i1-1][j1-1]);//輸入矩陣A元素

}

}

}

printf(“\n”);//分隔開A,B的元素輸入,便於觀看

if((m2100)||(n2100))

printf(“數目過多!!!”);

else

{

for(i2=1;i2=m2;i2++)

{

for(j2=1;j2=n2;j2++)

{

printf(“b[%d][%d]=:”,i2,j2);

scanf(“%f”,b[i2-1][j2-1]);//輸入矩陣B元素

}

}

}

printf(“矩陣A:\n”);//輸出矩陣A,便於觀看,檢驗

for(i3=0;i3m1;i3++)

{

for(j3=0;j3n1;j3++)

{

printf(“%f”,a[i3][j3]);

}

printf(“\n”);

}

printf(“\n”);//與矩陣B的輸出結果隔開,便於觀看

printf(“矩陣B:\n”);//輸出矩陣A,便於觀看,檢驗

for(i4=0;i4m2;i4++)

{

for(j4=0;j4n2;j4++)

{

printf(“%f”,b[i4][j4]);

}

printf(“\n”);

}

printf(“\n”);

printf(“矩陣C=A*B:\n”);

for(i4=0;i4m1;i4++)

{

for(j4=0;j4n2;j4++)

{

for(k=0;kn1;k++)

{

s[i4][j4]=s[i4][j4]+a[i4][k]*b[k][j4];//定義矩陣乘法,相乘時,有一個指標是一樣的,都用k

}

c[i4][j4]=s[i4][j4];//定義矩陣乘法

printf(“%f”,c[i4][j4]);

if(j4==n2)

printf(“\n”);//控制在列指標到達N時換行

}

}

return 0;

}

C語言,編輯一個程序,輸入一個三階矩陣,儲存在數組中,並判斷矩陣的行和,列和,對角線和是否相等

#includestdio.h

#define N 3

#define M 3

int abs(float x)

{

if(x0.0f) return -x;

else return x;

}

int main()

{

float m[N][M];

float sumr[N]={0.0f}, sumc[M]={0.0f},diag[N]={0.0f},sumd=0.0f,sumd2=0.0f; //

int i,j;

printf(“Input %d * %d matrix :\n”, N,N);

//create and compute sums

for (i = 0; i  N; ++i)

{

for (j= 0; j  M; ++j)

{

scanf(“%f”, m[i][j]);

sumr[i] += m[i][j];        //sum of rows

sumc[j] += m[i][j];        //sum of columns

if(i==j) diag[i] +=m[i][j]; //diagonal elements

}

}

//print 

int flag=1;     // 

printf(“sum of rows\n”);

for (i = 0; i  N; ++i)

{

printf(“%7.2f\n”,sumr[i]);

if(flag  iN-1) 

flag = flag(abs(sumr[i+1]-sumr[i])1e-10);

}

printf(“\nsum of columns:\n”);

for (j = 0; j  M; ++j)

{

printf(“%7.2f”,sumc[j]);

if(flag  jM-1) 

flag = flag(abs(sumc[j+1]-sumc[j])1e-10);

}

printf(“\ndiagonal elements:\n”);

const int K = (NM)?N:M;

for (i = 0; i  K; ++i)

{

printf(“%7.2f”,diag[i]);

sumd +=diag[i];

}

printf(“\t-sum:”);

printf(“%7.2f\n”,sumd);

//reverse diagonal

printf(“\nreverse diagonals:\n”);

for (i = K-1; i =0; –i)

{

printf(“%7.2f”,m[K-i-1][i]);

sumd2 +=m[K-i-1][i];

}

printf(“\t-sum:”);

printf(“%7.2f\n”,sumd2);

if (flag  abs(sumc[M-1]-sumd)1e-10  abs(sumc[M-1]-sumd2)1e-10)

 flag  = 1;

else flag  = 0;

if(flag)

printf(“\nIS a magic matrix! \n”);

else

printf(“\nNOT a magic matrix! \n”);

return 0;

}

/*Results:

Input 3 * 3 matrix :

8 1 6

3 5 7

4 9 2

sum of rows

  15.00

  15.00

  15.00

sum of columns:

  15.00  15.00  15.00

diagonal elements:

   8.00   5.00   2.00   -sum:  15.00

reverse diagonals:

   6.00   5.00   4.00   -sum:  15.00

IS a magic matrix!

*/

c語言 矩陣的存儲和轉置 實現

#define MAXSIZE 100;

後面的的分號去掉,應為是文本替換,所以後面的date[MAXSIZE+1];會變成 100;+1

#define MAXSIZE 100

——–

int q,p,m.n=1;

中間有個逗號寫成句號了

int q,p,m,n=1;

——–

Static TransposeSMatrix(Matrix M,Matrix *T){

Static 大小寫錯了

static TransposeSMatrix(Matrix M,Matrix *T){

——–

q=1;

for(col=1;col=M.nu;++col)

for(p=1;p=M.tu;++p)

這裡用的q,col,p都沒定義

int col,p,q=1;

———–

if(q==M.date[n].ip==M.date[n].j){

printf(“%4d”,M.date[n]);

n++;

};

else

這裡的if塊的大括弧後的分號去掉

分號提前結束了if,後面的else就沒有匹配的if了

if(…){

}

else

———–

*M.mu=q;

*M.nu=p;

*M.date[n].i=p;

*M.date[n].j=q;

*M.date[n].e=m;

*T.date[q].i=M.date[p].j;

*T.date[q].j=M.date[p].i;

*T.date[q].e=M.date[p].e;

結構\類對象等的指針用-調用成員,如果用*的話要加括弧,應為.的優先順序比*高

M-date[n].i=p;

M-date[n].j=q;

M-date[n].e=m;

還有好幾處都是這個問題

———-

void Input(M);

void Output(M);

Static TransposeSMatrix(M,T);

void Output(T);

調用是不加類型,用變數接受返回值, 傳遞表達式做參數

Input(M);

Output(M);

TransposeSMatrix(M,T);

Output(T);

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/160578.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-11-21 01:15
下一篇 2024-11-21 01:15

相關推薦

  • AES加密解密演算法的C語言實現

    AES(Advanced Encryption Standard)是一種對稱加密演算法,可用於對數據進行加密和解密。在本篇文章中,我們將介紹C語言中如何實現AES演算法,並對實現過程進…

    編程 2025-04-29
  • Python將矩陣存為CSV文件

    CSV文件是一種通用的文件格式,在統計學和計算機科學中非常常見,一些數據分析工具如Microsoft Excel,Google Sheets等都支持讀取CSV文件。Python內置…

    編程 2025-04-29
  • 學習Python對學習C語言有幫助嗎?

    Python和C語言是兩種非常受歡迎的編程語言,在程序開發中都扮演著非常重要的角色。那麼,學習Python對學習C語言有幫助嗎?答案是肯定的。在本文中,我們將從多個角度探討Pyth…

    編程 2025-04-29
  • Python被稱為膠水語言

    Python作為一種跨平台的解釋性高級語言,最大的特點是被稱為”膠水語言”。 一、簡單易學 Python的語法簡單易學,更加人性化,這使得它成為了初學者的入…

    編程 2025-04-29
  • OpenJudge答案1.6的C語言實現

    本文將從多個方面詳細闡述OpenJudge答案1.6在C語言中的實現方法,幫助初學者更好地學習和理解。 一、需求概述 OpenJudge答案1.6的要求是,輸入兩個整數a和b,輸出…

    編程 2025-04-29
  • Python按位運算符和C語言

    本文將從多個方面詳細闡述Python按位運算符和C語言的相關內容,並給出相應的代碼示例。 一、概述 Python是一種動態的、面向對象的編程語言,其按位運算符是用於按位操作的運算符…

    編程 2025-04-29
  • Python雙重循環輸出矩陣

    本文將介紹如何使用Python雙重循環輸出矩陣,並從以下幾個方面詳細闡述。 一、生成矩陣 要輸出矩陣,首先需要生成一個矩陣。我們可以使用Python中的列表(List)來實現。具體…

    編程 2025-04-29
  • Python語言由荷蘭人為中心的全能編程開發工程師

    Python語言是一種高級語言,很多編程開發工程師都喜歡使用Python語言進行開發。Python語言的創始人是荷蘭人Guido van Rossum,他在1989年聖誕節期間開始…

    編程 2025-04-28
  • 二階快速求逆矩陣

    快速求逆矩陣是數學中的一個重要問題,特別是對於線性代數中的矩陣求逆運算,如果使用普通的求逆矩陣方法,時間複雜度為O(n^3),計算量非常大。因此,在實際應用中需要使用更高效的演算法。…

    編程 2025-04-28
  • Python語言設計基礎第2版PDF

    Python語言設計基礎第2版PDF是一本介紹Python編程語言的經典教材。本篇文章將從多個方面對該教材進行詳細的闡述和介紹。 一、基礎知識 本教材中介紹了Python編程語言的…

    編程 2025-04-28

發表回復

登錄後才能評論