成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

創(chuàng)建矩陣的函數(shù)c語言程序,c語言定義矩陣

c語言矩陣怎么寫?

方法1:直接定義10*10的數(shù)組,讀取全部數(shù)據(jù),再根據(jù)選擇的行列數(shù)打印輸出部分?jǐn)?shù)據(jù)。

創(chuàng)新互聯(lián)公司專業(yè)為企業(yè)提供筠連網(wǎng)站建設(shè)、筠連做網(wǎng)站、筠連網(wǎng)站設(shè)計(jì)、筠連網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計(jì)與制作、筠連企業(yè)網(wǎng)站模板建站服務(wù),十余年筠連做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。

方法2:通過文件流指針的移動(dòng),跨過不需要的內(nèi)容。(這里控制文件流指針可利用ftell和fseek函數(shù)來移動(dòng)指定字節(jié)數(shù))我是利用fscanf讀取需要的內(nèi)容,遇到需要跳行就用fgets來跳過。(注意常量參數(shù)根據(jù)自己需求修改)。

說明:邊讀取邊打印輸出,就不需要變量存儲(chǔ)。我的代碼是把讀取出來的內(nèi)容存放在三維數(shù)組中(文件內(nèi)容你沒指定,如是單純數(shù)字,二維數(shù)組即可,我是作為字符串處理,故用三維數(shù)組。),數(shù)組是根據(jù)實(shí)際大小,動(dòng)態(tài)申請(qǐng),寫成兩個(gè)獨(dú)立函數(shù)。

下面是代碼:

#include stdio.h

#include string.h

#include malloc.h

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

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

#define MS 3//矩陣中元素字符串最大字符數(shù)(包含結(jié)束符號(hào),不可小于實(shí)際內(nèi)容)

#define MBUF 100//文件中一行最大字符數(shù),可設(shè)置大一點(diǎn)

char ***getMem(int r,int c,int len);//動(dòng)態(tài)申請(qǐng)一個(gè)三維數(shù)組

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

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

int main()

{

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

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

FILE *fp=NULL;

printf("請(qǐng)輸入要獲取的行數(shù)和列數(shù):\n");

while(r0 || rMAXR || c0 || cMAXC)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(ic) 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;ir;i++,printf("\n"))

? for(j=0;jc;j++)

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

printf("\n");

}

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

{

int i,j;

if(!datas)

{

? for(i=0;ir;i++,free(datas[i]))

? ? ? for(j=0;jc;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;ir;i++)

{

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

? if(!dr) return NULL;

? else

? {

? ? ? for(j=0;jc;j++)

? ? ? {

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

? ? ? ? ? if(!dr[j]) return NULL;

? ? ? }

? ? ? datas[i]=dr;

? }

}

return datas;

}

c語言,矩陣

上面那個(gè)程序是我寫的,下面寫的是兩個(gè)2*2矩陣相加和相乘的程序(行數(shù)和列數(shù)可以在主函數(shù)中更改),不得不說一句,有關(guān)矩陣的東西就是麻煩:

#include stdio.h

#include stdlib.h

int** NewMatrix(int row,int col) //動(dòng)態(tài)開辟一個(gè)數(shù)組

{

int i,j;

int** matrix;

matrix=(int **)malloc(sizeof(int *)*row);

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

{

matrix[i]=(int*)malloc(sizeof(int)*col);

}

//輸入矩陣的元素

printf("please input the array elements:\n") ;

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

{

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

{

scanf("%d",matrix[i][j]);

}

}

return matrix;

}

//兩矩陣相加a[row][col]+b[row][col]

int **addMatrix(int** a,int** b,int row,int col)

{

int i,j;

int** matrix;

//動(dòng)態(tài)建立一個(gè)矩陣空間以存放運(yùn)算結(jié)果

matrix=(int **)malloc(sizeof(int *)*row);

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

{

matrix[i]=(int*)malloc(sizeof(int)*col);

}

//計(jì)算a+b

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

{

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

{

matrix[i][j] = a[i][j] + b[i][j];

}

}

return matrix;

}

//兩矩陣相乘a[row][com]*b[com][col]

int **multiplyMatrix(int **a,int **b,int row,int com,int col)

{

int i,j,k;

int** matrix;

//動(dòng)態(tài)建立一個(gè)矩陣空間以存放運(yùn)算結(jié)果

matrix=(int **)malloc(sizeof(int *)*row);

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

{

matrix[i]=(int*)malloc(sizeof(int)*col);

}

//計(jì)算a+b

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

{

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

{

matrix[i][j] = 0;

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

{

matrix[i][j] += a[i][k] * b[k][j];

}

}

}

return matrix;

}

void main()

{

int i,j;

int row = 2,col = 2; //行數(shù)和列數(shù)在此更改

int **a,**b,**c;

a = NewMatrix(row,col); //動(dòng)態(tài)建立矩陣a

b = NewMatrix(row,col); //動(dòng)態(tài)建立矩陣b

//調(diào)用函數(shù),求兩矩陣的和

c = addMatrix(a,b,row,col);

//輸出兩矩陣的和

printf("\na add b is:\n");

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

{

printf("\n");

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

{

printf("%d ",c[i][j]);

}

}

//調(diào)用函數(shù),求兩矩陣的積

c = multiplyMatrix(a,b,row,row,col);

//輸出兩矩陣的積

printf("\na multiply b is:\n");

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

{

printf("\n");

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

{

printf("%d ",c[i][j]);

}

}

}

本來程序還可以寫得簡單一些,由于你要求兩矩陣同時(shí)能夠相加和相乘,從而可以判定兩矩陣的行數(shù)和列數(shù)應(yīng)該是相等的,因而在函數(shù)傳遞參數(shù)的時(shí)候只要傳一個(gè)就行了。但是考慮到程序的可移植性,我在寫相加和相乘的子函數(shù)時(shí),考慮了普遍性,即對(duì)于給定的任意的row和col(甚至row != col),加法和乘法都能夠適用。然而這樣一來,形參看起來就比較多了。你自己就情況而定吧,不懂的地方發(fā)我消息。

C語言 簡單的矩陣生成

i=i+1;//這里你i加了1造成下面的for循環(huán)不成立

a[i][j]=count;

count++;

for (;i==0;)上面你給i加了1,使得i不等于0,for語句循環(huán)條件也就不成立。所以不進(jìn)循環(huán)。

下面另一個(gè)循環(huán)不進(jìn)也是相同原因。

當(dāng)前標(biāo)題:創(chuàng)建矩陣的函數(shù)c語言程序,c語言定義矩陣
當(dāng)前地址:http://jinyejixie.com/article10/hsdcgo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站制作網(wǎng)站導(dǎo)航、企業(yè)網(wǎng)站制作動(dòng)態(tài)網(wǎng)站、品牌網(wǎng)站建設(shè)域名注冊

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站建設(shè)
克拉玛依市| 尼勒克县| 福泉市| 阳曲县| 宣威市| 龙江县| 峡江县| 荔浦县| 于田县| 武乡县| 扎赉特旗| 颍上县| 调兵山市| 涟水县| 阿拉善右旗| 婺源县| 牡丹江市| 钦州市| 青州市| 房山区| 聂拉木县| 乌苏市| 万宁市| 满城县| 永川市| 正镶白旗| 黔东| 原阳县| 乌兰县| 锡林郭勒盟| 毕节市| 阿克陶县| 辽宁省| 灵山县| 会同县| 博乐市| 彰化县| 垣曲县| 辽中县| 嵊泗县| 济阳县|