欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

C語言if函數(shù)生成矩陣 C語言生成矩陣

C語言如何生成一個隨機矩陣

生產(chǎn)隨機的矩陣的關(guān)鍵在于使用隨機函數(shù)rand()。

網(wǎng)站制作、建網(wǎng)站找專業(yè)網(wǎng)站設(shè)計公司創(chuàng)新互聯(lián):定制網(wǎng)站、模板網(wǎng)站、仿站、重慶小程序開發(fā)、軟件開發(fā)、成都app開發(fā)等。做網(wǎng)站價格咨詢創(chuàng)新互聯(lián):服務(wù)完善、十余年建站、值得信賴!網(wǎng)站制作電話:18980820575

rand()

表頭文件: #includestdlib.h

定義函數(shù) :int rand(void)

函數(shù)說明 :

因為rand的內(nèi)部實現(xiàn)是用線性同余法做的,他不是真的隨機數(shù),只不過是因為其周期特別長,所以有一定的范圍里可看成是隨機的,rand()會返回一隨機數(shù)值,范圍在0至RAND_MAX 間。在調(diào)用此函數(shù)產(chǎn)生隨機數(shù)前,必須先利用srand()設(shè)好隨機數(shù)種子,如果未設(shè)隨機數(shù)種子,rand()在調(diào)用時會自動設(shè)隨機數(shù)種子為1。rand ()產(chǎn)生的是假隨機數(shù)字,每次執(zhí)行時是相同的。若要不同,以不同的值來初始化它.初始化的函數(shù)就是srand()。

返回值:

返回0至RAND_MAX之間的隨機整數(shù)值,RAND_MAX的范圍最少是在32767之間(int),即雙字節(jié)(16位數(shù))。若用unsigned int 雙字節(jié)是65535,四字節(jié)是4294967295的整數(shù)范圍。

0~RAND_MAX每個數(shù)字被選中的機率是相同的.

基于隨機函數(shù),使用雙重循環(huán)語句便可以生成一個隨機矩陣,下面是一個10x10隨機矩陣的代碼,數(shù)值范圍在0~1000:

#include?stdio.h?????????????????????

#include?stdlib.h????????????????????

#define?M?10???????????????????????????

#define?N?10???????????????????????????

int?main(void)?????????????????????????

{??????????????????????????????????????

int?i?=?0,?j?=?0;??????????????????

int?Arr[M][N]?=?{{0}};?????????????

srand(time(NULL));?????????????????

for?(i?=?0;?i??M;?++i)????????????

{??????????????????????????????????

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

{??????????????????????????????

Arr[i][j]?=?rand()?%?1000;?

}??????????????????????????????

}??????????????????????????????????

printf("Array[%d][%d]?is:?\n",?M,?N);

for?(i?=?0;?i??M;?++i)????????????

{??????????????????????????????????

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

{??????????????????????????????

printf("%d\t",?Arr[i][j]);?

}??????????????????????????????

printf("\n");??????????????????

}??????????????????????????????????

return?0;??????????????????????????

}

c語言中,如何生成一個5*5的隨機矩陣,并且(重點)每行的相鄰數(shù)之差在[-4,4]之間 ?

#include stdio.h

#include stdlib.h

#include time.h

#include limits.h

// 數(shù)組最大的尺寸常量

const int MAX_ARRAY_SIZE = 10;

// 表示一個區(qū)間的結(jié)構(gòu)體

struct Range

{

// 區(qū)間的下限

int lower;

// 區(qū)間的上限

int upper;

};

//表示整個區(qū)間的一個特殊區(qū)間

const struct Range ALL_RANGE={INT_MIN,INT_MAX};

//表示空區(qū)間的一個特殊區(qū)間

const struct Range EMPTY_RANGE={INT_MAX,INT_MIN};

//取兩個區(qū)間 r1,r2的交集,并返回

struct Range merge(struct Range r1,struct Range r2)

{

struct Range common;

if(r1.upper r2.lower || r1.lower r2.upper)

{

return EMPTY_RANGE;

}

else

{

common.lower = r1.lower r2.lower ? r1.lower : r2.lower;

common.upper = r1.upper r2.upper ? r1.upper : r2.upper;

return common;

}

}

//判斷區(qū)間r是不是空的

int isEmpty(struct Range r)

{

return r.lower r.upper;

}

/*

生成隨機數(shù)組

參數(shù):

rowsAmount : 要產(chǎn)生的隨機數(shù)組的行數(shù)

colsAmount : 要產(chǎn)生的隨機數(shù)組的列數(shù)

rowValueDifferRange : 要產(chǎn)生的隨機數(shù)組的行元素的差范圍數(shù)

colValueDifferRange : 要產(chǎn)生的隨機數(shù)組的列元素的差范圍數(shù)

randArray : 保存產(chǎn)生的隨機數(shù)組

currentRow : 當(dāng)前要產(chǎn)生的數(shù)組元素行位置。遞歸使用。

currentCol : 當(dāng)前要產(chǎn)生的數(shù)組元素列位置。遞歸使用。

*/

void generate( int rowsAmount,int colsAmount,

struct Range rowValueDifferRange,struct Range colValueDifferRange,

int randArray[][MAX_ARRAY_SIZE],

int currentRow,int currentCol)

{

struct Range currentRowValueRange = ALL_RANGE;

struct Range currentColValueRange = ALL_RANGE;

struct Range currentValueRange;

if(currentRow == rowsAmount)

return;

// 第一個隨機數(shù)可以任意取

if(currentRow == 0 currentCol == 0)

{

// 生成當(dāng)前的隨機數(shù)

randArray[currentRow][currentCol] = rand();

}

else

{

// 根據(jù)當(dāng)前已經(jīng)存在的相鄰列(在左邊),決定要生成的隨機數(shù)的范圍

if(currentCol0)

{

currentColValueRange.lower = randArray[currentRow][currentCol-1] + colValueDifferRange.lower;

currentColValueRange.upper = randArray[currentRow][currentCol-1] + colValueDifferRange.upper;

}

// 根據(jù)當(dāng)前已經(jīng)存在的相鄰行(在上邊),決定要生成的隨機數(shù)的范圍

if(currentRow0)

{

currentRowValueRange.lower = randArray[currentRow-1][currentCol] + rowValueDifferRange.lower;

currentRowValueRange.upper = randArray[currentRow-1][currentCol] + rowValueDifferRange.upper;

}

// 將由列決定的取值范圍,和由行決定的取值范圍,取交集

currentValueRange = merge(currentRowValueRange,currentColValueRange);

// 如果合并后的區(qū)間是空的,也就是說當(dāng)前無法生成一個隨機數(shù)。

if(isEmpty(currentValueRange))

{

if(currentCol==0)

{

currentRow--;

currentCol = colsAmount-1;

}

else

{

currentCol--;

}

// 需要從新生成上一個隨機數(shù)

return generate(rowsAmount,colsAmount,

rowValueDifferRange,colValueDifferRange,

randArray,

currentRow,currentCol);

}

// 根據(jù)求出的范圍生成隨機數(shù)

else

{

// 生成當(dāng)前的隨機數(shù)

randArray[currentRow][currentCol] =

rand()%(currentValueRange.upper - currentValueRange.lower) +

currentValueRange.lower;

}

}

if(currentCol==(colsAmount-1))

{

currentRow++;

currentCol = 0;

}

else

{

currentCol++;

}

// 生成下一個隨機數(shù)

generate( rowsAmount,colsAmount,

rowValueDifferRange,colValueDifferRange,

randArray,

currentRow,currentCol);

}

int main(int argc, char *argv[])

{

// 隨機數(shù)組為 5行5列

int rowsAmount=5,colsAmount=5;

//每行的相鄰數(shù)之差在[-4,4]之間

struct Range rowValueDifferRange={-4,4};

//每列相鄰數(shù)之差在[-10,10]之間

struct Range colValueDifferRange={-10,10};

// 隨機數(shù)組

int randArray[MAX_ARRAY_SIZE][MAX_ARRAY_SIZE];

int i,j;

// 重置隨機數(shù)種子

srand(time(NULL));

generate( rowsAmount,colsAmount,

rowValueDifferRange,colValueDifferRange,

randArray,

0,0);

// 輸出隨機數(shù)組

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

{

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

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

printf("\n");

}

return 0;

}

/*

23886 23884 23888 23879 23882

23883 23885 23886 23881 23878

23884 23881 23886 23877 23876

23887 23878 23883 23875 23878

23887 23880 23881 23871 23880

*/

C語言編程:編寫一個函數(shù),實現(xiàn)矩陣的乘法。

如果確定距陣的大小長度,定義兩個二維數(shù)組,用兩個for循環(huán)兩數(shù)據(jù)輸入到內(nèi)存,是每兩個for輸入一個數(shù)組,然后定義另外一個數(shù)組,用來得到結(jié)果距陣,再用三個嵌套的for將結(jié)果放入第三個數(shù)組當(dāng)中,即c[i][j]=a[i][k]+b[k][j],k是在第三重循環(huán),這樣就可以得到要求的距陣,如果不確定大小長度就在輸入語句的每個for循環(huán)的轄區(qū)內(nèi)加一個變量作為標(biāo)記程序運行時求出距陣的大小

c語言子函數(shù)返回一個矩陣

代碼沒看出問題,可能是你打印的時候打印得不對,上面的代碼沒有做打印動作。

數(shù)據(jù)結(jié)構(gòu)(使用C語言)關(guān)于矩陣

你的測試數(shù)據(jù)不符合條件,不是對稱矩陣。但函數(shù)調(diào)試已調(diào)試好了,無誤。

#include stdio.h

#define N 3

#define M (N*N+N)/2

void add(int C[],int A[],int B[])

{

for(int i=0;iM;i++)

C[i]=A[i]+B[i];

}

void print(int C[])

{

int i,j,t;

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

{

for(int j=0;jN;j++)

{

if(i=j) t=(i+1)*i/2+j;

else t=(j+1)*j/2+i; //下三角存儲

printf("%d ",C[t]);

}

printf("\n");

}

}

int main(void)

{

int a[N][N]={{1,2,3},{10,20,30},{2,4,5}};

int b[N][N]={{20,40,50},{3,5,6},{30,50,60}};

int A[M],B[M],C[M];

int i,j,t=0,k=0;

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

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

{

A[t++]=a[i][j];

B[k++]=b[i][j];

}

add(C,A,B);

print(C);

return 0;

}

用C語言編寫一個矩陣運算的程序,高分!

//矩陣三元組之矩陣相加 相乘

#include iostream

using namespace std;

typedef int Elemtype;

#define MAXSIZE 12500 //最大非零元素

typedef struct Triple

{

Elemtype value;

int row,col;

}Triple;

typedef struct TSMatrix

{

Triple data[MAXSIZE+1];

int mu,nu,tu;

}TSMatrix;

TSMatrix T;

void InputMatrix(TSMatrix T) //輸入t個非零元素

{

cout"請輸入稀疏矩陣的信息,(行,列,非零元素個數(shù))"endl;

cinT.muT.nuT.tu;

int i;

cout"請輸入非零元素的信息(行,列,值),提醒(下標(biāo)從1開始)"endl;

for(i=1;i=T.tu;++i)

{

cinT.data[i].rowT.data[i].colT.data[i].value;

}

}

void Output(TSMatrix T)

{

cout"矩陣的三元組表示(ROW=)"T.mu" COL="T.nu"非零個數(shù)="T.tuendl;

int i;

for(i=1;i=T.tu;++i)

{

cout"ROW(行):"T.data[i].row" COL(列):"T.data[i].col" Value(值)"T.data[i].valueendl;

}

}

void TransposeSMatrix(TSMatrix M,TSMatrix T) //矩陣的轉(zhuǎn)置

{

T.mu=M.nu;T.nu=M.mu;T.tu=M.tu;

int i,j,k=1;

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

{

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

if(M.data[j].col==i)

{

T.data[k].row=i;

T.data[k].col=M.data[j].row;

T.data[k].value=M.data[j].value;

++k;

}

}

}

void AddMastrix(TSMatrix M,TSMatrix T,TSMatrix Q) //矩陣相加

{

int index_a,index_b,i=1,j=1,k=1;

Q.mu=M.mu; Q.nu=M.nu;

while (i=M.tuj=T.tu)

{

index_a=(M.data[i].row)*(M.data[i].col)+M.data[i].col;

index_b=(T.data[j].row)*(T.data[j].col)+T.data[j].col;

if(index_aindex_b)

{

Q.data[k]=M.data[i];

i++;

k++;

}

else if(index_aindex_b)

{

Q.data[k]=T.data[j];

j++;

k++;

}

else if(index_a==index_b)

{

if((M.data[i].value+T.data[j].value)!=0)

{

Q.data[k]=M.data[i];

Q.data[k].value=M.data[i].value+T.data[j].value;

k++;

}

++i;

++j;

}

}

//復(fù)制剩余元素

for(;i=M.tu;++i)

{

Q.data[k]=M.data[i];

k++;

}

for(;j=T.tu;++j)

Q.data[k++]=T.data[j];

Q.tu=k-1;

}

void Multiply(TSMatrix M,TSMatrix T,TSMatrix Q) //相乘

{

if(M.nu!=T.mu)

{

cerr"兩矩陣相乘不合法"endl;

return ;

}

int *rowSize=new int[T.mu+1]; //存放每行非零元素的個數(shù)

int *rowStart=new int[T.mu+2]; //矩陣每行在三元組開始位置

int *temp=new int[T.nu+1]; //存放結(jié)果矩陣中每行的計算結(jié)果

int i,Current,k,ROWM,COLM,COLB;

for(i=1;i=T.mu;i++) rowSize[i]=0;

for(i=1;i=T.tu;++i) rowSize[T.data[i].row]++;

rowStart[1]=1;

for(i=2;i=T.mu+1;i++)

rowStart[i]=rowStart[i-1]+rowSize[i-1];

Current=1; k=1;

while (Current=M.tu)

{

ROWM=M.data[Current].row; //當(dāng)前三元組數(shù)據(jù)中元素的行號

for(i=1;i=T.nu;++i) temp[i]=0;

while (Current=M.tuROWM==M.data[Current].row)

{

COLM=M.data[Current].col; //當(dāng)前元素的列號,方便與T矩陣的行號相乘

for(i=rowStart[COLM];irowStart[COLM+1];i++) //對應(yīng)T矩陣中每行的個數(shù)

{

COLB=T.data[i].col;

temp[COLB]+=(M.data[Current].value)*(T.data[i].value);

}

Current++;

}

for(i=1;i=T.nu;i++)

{

if(temp[i]!=0)

{

Q.data[k].row=ROWM;

Q.data[k].col=i;

Q.data[k].value=temp[i];

}

k++;

}

}

Q.mu=M.mu;Q.nu=T.nu;

Q.tu=k-1;

}

int main()

{

TSMatrix T,M,Q,S;

InputMatrix(M);

InputMatrix(T);

cout"兩矩陣相乘"endl;

Multiply(M,T,Q);

Output(Q);

cout"兩矩陣相加"endl;

AddMastrix(M,M,S);

Output(S);

system("pause");

return 0;

}

分享標(biāo)題:C語言if函數(shù)生成矩陣 C語言生成矩陣
文章位置:http://chinadenli.net/article36/hjoipg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供域名注冊定制網(wǎng)站網(wǎng)站改版全網(wǎng)營銷推廣品牌網(wǎng)站設(shè)計網(wǎng)站內(nèi)鏈

廣告

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

營銷型網(wǎng)站建設(shè)