国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

數(shù)據(jù)結(jié)構(gòu)題集--數(shù)組(二維數(shù)組)

2019-11-17 05:31:44
字體:
供稿:網(wǎng)友
設(shè)計一個矩陣相乘的程序
假設(shè)有  

   1  5  7  3            3  9  1  4  1  4
A= 3  6  3  9         B= 5  6  7  9  0  3
   1  2  8  7            3  2  7  2  5  6
   0  3  1  9            9  7  4  7  8  0
   3  2  5  4

求出A*B的矩陣
程序構(gòu)思:
我們所知的矩陣乘法運(yùn)算的算式如下:

Cij = Aik X Bkj   的k從1到 n 的和,那么可以用一個3層循環(huán)來運(yùn)算此算式:

C(1,1)=A(1,1)*B(1,1)+A(1,2)*B(2,1)+A(1,3)*B(3,1)+A(1,4)*B(4,1)
      =(1*3)+(5*5)+(7*3)+(3*9)
      =3+25+21+27
      =76
同理
C(1,2)=A(1,1)*B(1,2)+A(1,2)*B(2,2)+A(1,3)*B(3,2)+A(1,4)*B(2,2)
      =(1*9)+(5*6)+(7*2)+(3*7)
      =9+30+14+21
      =74
依此類推,我們可以求得矩陣A與矩陣B的矩陣乘積。
void main(void)
{
    int matrixa[5][4]={1,5,7,3,
                       3,6,3,9,
                       1,2,8,7,
                       0,3,1,9,
                       3,2,5,4};
    int matrixb[4][6]={3,9,1,4,1,4,
                       5,6,7,9,0,3,
                       3,2,7,2,5,6,
                       9,7,4,7,8,0};
    int matrixc[5][6];
    int i,j,k;
    for(i=0;i<5;i++)
        for(j=0;j<6;j++)
        {
            matrixc[i][j]=0;
            for(k=0;k<4;k++)
                matrixc[i][j]+=matrixa[i][k]*matrixb[k][j];
        }
        for(i=0;i<5;i++)
    {
        for(k=0;k<4;k++)
            printf("%5d",matrixa[i][k]);
        printf("/n");
    }
    printf("/nThe matrixb:/n");
    for(k=0;k<4;k++)
    {
        for(j=0;j<6;j++)
            printf("%5d",matrixb[k][j]);
        printf("/n");
    }
    printf("/nMatrix C=Matrix A* Matrix B/n");
    for(i=0;i<5;i++)
    {
        for(j=0;j<6;j++)
            printf("%5d",Matrixc[i][j]);
        printf("/n");
    }
}
運(yùn)行結(jié)果:
The Matrix A:
1  5  7  3
3  6  3  9
1  2  8  7
0  3  1  9
3  2  5  4

The Matrix B:
3  9  1  4  1  4
5  6  7  9  0  3
3  2  7  2  5  6
9  7  4  7  8  0

Matrix C=Matrix A*Matrix B:
   76   74   97   84  60  61
  129  132  102  135  90  48
  100  86   99   87  97  58
   99   83   64   92  77  15
   70   77   68   68  60  48

二維數(shù)組行列互換
程序?qū)嵗?br />    設(shè)計一個能將二維數(shù)組轉(zhuǎn)換成以列為主的一維數(shù)組和以行為主的一維數(shù)組。
    默認(rèn)二維數(shù)組數(shù)據(jù)為:
           9  7  6  6
           3  5  3  3
    Data = 6  6  4  7
           7  5  1  4
           1  2  8  0
程序構(gòu)思:
    依題意知道,本程序所運(yùn)用的數(shù)據(jù)結(jié)構(gòu)為“二維數(shù)組”,上報為進(jìn)行數(shù)組以列為主和以行為主的轉(zhuǎn)換。
已知該二維數(shù)組的大小為 5*4
以行為主的數(shù)組轉(zhuǎn)換公式為:
    Data[i][j]的位置=(i*4)+j
以列為主的數(shù)組的轉(zhuǎn)換公式為:
    Data[i][j]的位置=(j*5)+i
聲明一個大小為20的一維數(shù)組,用來存久違轉(zhuǎn)換以列為主后的數(shù)據(jù),并聲明一個大小為20的一維數(shù)組,用來存久違轉(zhuǎn)換后以行為主的數(shù)據(jù)。
void main(void)
{
    int data[5][4]={ 9,7,6,6,
                     3,5,3,5,
                     6,6,4,7,
                     7,5,1,4,
                     1,2,8,0};
    int rawdata[20];
    int coldata[20];
    int i,j;
    printf("The Data of two dimensional array:/n");
    for(i=0;i<5;i++)
    {
        for(j=0;j<4;j++)
            printf("%4d",data[i][j]);
        printf("/n");
    }
    for(i=0;i<5;i++)
        for(j=-;j<4;j++)
            rowdata[i*4+j]=data[i][j];
    printf("/nThe Row Major Matrix:/n");
    for(i=0;i<20;i++)
        printf("%3d",rowdata[i]);
    printf("/n");
    for(i=0;i<5;i++)
        for(j=0;j<4;j++)
            coldata[j*5+i]=data[i][j];
    printf("/nThe Column Major Matrix:/n");
    for(i=0;i<20;i++)
 &nbs


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 丹棱县| 城固县| 黑山县| 贡嘎县| 南雄市| 乌鲁木齐市| 凤山市| 旌德县| 奈曼旗| 前郭尔| 乌兰察布市| 明溪县| 榆中县| 长宁区| 彰化市| 黔东| 和林格尔县| 伊金霍洛旗| 鄂州市| 天津市| 鱼台县| 阿图什市| 金华市| 阳新县| 东源县| 北海市| 江北区| 汉中市| 米易县| 成武县| 涞源县| 泸水县| 茂名市| 安达市| 梁河县| 简阳市| 盐山县| 夏河县| 岳普湖县| 高淳县| 富蕴县|