九色国产,午夜在线视频,新黄色网址,九九色综合,天天做夜夜做久久做狠狠,天天躁夜夜躁狠狠躁2021a,久久不卡一区二区三区

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
多維數(shù)組
C++中數(shù)組可以嵌套,就是多維數(shù)組。
多維數(shù)組存儲(chǔ)與訪(fǎng)問(wèn)方式
二維數(shù)組:一維數(shù)組可對(duì)應(yīng)數(shù)學(xué)中的向量,而二維數(shù)組可對(duì)應(yīng)矩陣,可用一個(gè)二維數(shù)組存儲(chǔ)矩陣。
圖1  二維數(shù)組mat示意圖
二維數(shù)組的橫向稱(chēng)為行,縱向稱(chēng)為列,上面這個(gè)數(shù)組為三行六列。定義二維數(shù)組的通用格式為:
《存儲(chǔ)類(lèi)型》 類(lèi)型 數(shù)組名[常量行表達(dá)式] [常量列表達(dá)式];
行與列用常量表達(dá)式表示。
二維數(shù)組分析:上面的數(shù)組可定義為:
int mat[3][6];
第一行第一列的元素為mat[0][0],第三行第六列元素為 mat[2][5], 下標(biāo)仍是從0開(kāi)始。
計(jì)算機(jī)內(nèi)存是一維編址的,多維數(shù)組必須要轉(zhuǎn)化為一維方式存儲(chǔ),越右的下標(biāo)變化越快,二維數(shù)組則按行排列,先排第一行,再排第二行,直到所有行排完,即所謂按行排列:
mat[0][0] mat[0][1] mat[0][2] mat[0][3] mat[0][4] mat[0][5] mat[1][0] mat[1][1] mat[1][2] mat[1][3] mat[1][4] mat[1][5] mat[2][0] mat[2][1] mat[2][2] mat[2][3] mat[2][4] mat[2][5]
有了確定的關(guān)系后可以算出多維數(shù)組任一元素在內(nèi)存的位置。設(shè)有a數(shù)組m行n列,每個(gè)元素占b個(gè)字節(jié),a[i][j] 的首地址為:數(shù)組的首地址+(i*n+j)*b;
多維數(shù)組分析:C/C++ 中的多維數(shù)組基本的定義是以數(shù)組作為元素構(gòu)成的數(shù)組,二維數(shù)組的數(shù)組元素是一維數(shù)組,三維數(shù)組的數(shù)組元素是一個(gè)二維數(shù)組,依此類(lèi)推。也就是說(shuō),多維數(shù)組用的是一個(gè)嵌套的定義。
多維數(shù)組的數(shù)組名:代表數(shù)組中第一維(最高維)第一個(gè)元素(0號(hào)元素)在內(nèi)存中的首地址,如三維數(shù)組的數(shù)組名代表的是組成三維數(shù)組的第一個(gè)二維數(shù)組的存儲(chǔ)首地址。
當(dāng)數(shù)組作為函數(shù)的參數(shù)進(jìn)行傳遞時(shí),多維數(shù)組同樣是作為第一維第一個(gè)數(shù)組的首地址傳遞給函數(shù),所以物理上是傳地址。在函數(shù)中對(duì)形參的數(shù)組元素的修改實(shí)際上是對(duì)作為實(shí)參的原數(shù)組的元素進(jìn)行修改。
初始化:
對(duì)于二維數(shù)組,可用嵌套一維數(shù)組初始化進(jìn)行:
int matrix[3][6]={{1,3,5,7,9,11},{2,4,6,8,10,12},{3,5,7,11,13,17}};
也可以按數(shù)組元素存儲(chǔ)次序列出各元素的值:
int matrix[3][6]={1,3,5,7,9,11,2,4,6,8,10,12,3,5,7,11,13,17};
還可以對(duì)部分元素賦初值,沒(méi)有明確初值的元素清0:
int matrix[3][6]={{1,3},{2,4},{3,5,7}};
其結(jié)果等效于:
int matrix[3][6]={{1,3,0,0,0,0},{2,4,0,0,0,0},{3,5,7,0,0,0}};
最后還可由初始化數(shù)據(jù)來(lái)確定數(shù)組最高維,如
int matrix[][6]={1,3,5,7,9,11,2,4,6,8,10,12,3,5,7,11,13,17};
結(jié)果定義的matrix是三行六列的數(shù)組。也可以
int matrix[][6]={{1,3},{2,4},{3,5,7}};
同樣也是三行六列。注意這里只能最高維省略。
多維數(shù)組作為參數(shù):在作為函數(shù)的形式參數(shù)時(shí),可以最高維(第一維)省略。因?yàn)榫幾g器只要根據(jù)后面每一維(從第二維開(kāi)始)的大小,就可計(jì)算數(shù)組每一個(gè)元素的存儲(chǔ)位置。
基于同樣的理由,也只能省略第一維。進(jìn)一步考慮,對(duì)多維數(shù)組,編譯器不檢查邊界,其實(shí)只是不檢查最高維(第一維)的邊界,較低各維的大小是在控制之中的。
復(fù)合類(lèi)型只能對(duì)各元素逐個(gè)操作,不能整體操作。
【例5.4】已知矩陣 int mat[8][8],找出其中的極點(diǎn)與鞍點(diǎn)。如某元素在所在行相鄰點(diǎn)中與所在列相鄰點(diǎn)中均為最大或最小,則為極點(diǎn);如某元素在所在行(或列)相鄰點(diǎn)中為最大,同時(shí)該元素在所在列(或行)相鄰點(diǎn)中為最小,則為鞍點(diǎn)。
#include<iostream>
#include<iomanip>
using namespace std;
int mat[8][8]={0,3,5,7,11,13,17,19,1,2,3,9,16,17,21,18,3,5,4,14,22,19,26,15,5,11,9,6,16,15,
23,12,9,12,8,7,8,9,10,11,7,6,15,14,13,10,9,10,13,4,7,24,20,18,12,12,15,10,9,8,25,19,16,14};
int maxmin(int a,int b,int c){
if(a>b&&b<c)  return -1;
else if(a<b&&b>c) return 1;
else return 0;//b為最大返回1 ,最小返-1,其他為0
}
int main (void){
int i,j,k,l;
for(i=1;i<=6;i++)
for(j=1;j<=6;j++){
k=maxmin(mat[i][j-1],mat[i][j],mat[i][j+1]);
if(k==0)  continue;
l=maxmin(mat[i-1][j],mat[i][j],mat[i+1][j]);
if(l==0) continue;
if(k==1&&l==1)
cout<<"極大點(diǎn):"<<setw(2)<<mat[i][j]<<" ; i="<<i<<" ; j="<<j<<endl;
else if(k==-1&&l==-1)
cout<<"極小點(diǎn):"<<setw(2)<< mat[i][j]<<" ; i="<<i<<" ; j="<<j<<endl;
else cout<<"鞍  點(diǎn):"<<setw(2)<<mat[i][j]<<" ; i="<<i<<" ; j="<<j<<endl;
}
return 0;
}多維數(shù)組作為函數(shù)參數(shù)
【例5.5】矩陣轉(zhuǎn)置與矩陣相乘。 下標(biāo)作為參數(shù)傳遞。
#include <iostream>
#include <iomanip>
using namespace std;
void inverse(int [3][6], int [6][3]);
void multi(int [6][3], int [3][4], int [6][4]);
void output(int [6][4]);
int main(){
int middle[6][3], result[6][4];
int matrix1[3][6]={8,10,12,23,1,3,5,7,9,2,4,6,34,45,56,2,4,6};
int matrix2[3][4]={3,2,1,0,-1,-2,9,8,7,6,5,4};
inverse(matrix1,middle);
multi(middle,matrix2,result);
output(result);
return 0;
}
void inverse(int matrix1[3][6],int middle[6][3]){
int i,j;
for (i=0;i<3;i++)
for (j=0;j<6;j++)
middle[j][i]=matrix1[i][j];
return;
}
void multi(int middle[6][3],int matrix2[3][4],int result[6][4]){
int i,j,k;
for (i=0;i<6;i++){
for (j=0;j<4;j++){
result[i][j] = 0;
for (k=0;k<3;k++)
result[i][j]+=middle[i][k]*matrix2[k][j];
}
}
return;
}
void output(int result[6][4]){
int i,j;
cout <<"result"<<'\n';
for (i=0;i<6;i++){
for (j=0;j<4;j++)
cout <<setw(6)<<result[i][j];
cout<<'\n';
}
return;
}
缺陷與改進(jìn):多維數(shù)組作為函數(shù)參數(shù),最高維可以不寫(xiě),但較低維必須明確標(biāo)出。這限定了二維數(shù)組的構(gòu)造,所以用二維數(shù)組進(jìn)行矩陣運(yùn)算很難表示成通用的算法。
既然二維數(shù)組使用一維數(shù)組方式存儲(chǔ),則用一維數(shù)組加上行列信息傳遞,可不受數(shù)組構(gòu)造的限制。
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶(hù)發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
二維數(shù)組和多維數(shù)組
C# 多維數(shù)組 | 菜鳥(niǎo)教程
java學(xué)習(xí)——25.二維數(shù)組
C#交錯(cuò)數(shù)組
Excel數(shù)組應(yīng)該如何進(jìn)行區(qū)分?
C語(yǔ)言指針導(dǎo)學(xué)(3)
更多類(lèi)似文章 >>
生活服務(wù)
熱點(diǎn)新聞
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服