网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > C/C++
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
本月文章推荐
.在C++Builder中显示透明位图.
.C++中的运算符重载函数基础及其值.
.gdb用法.
.本人用C++编写的约瑟夫环的小程序.
.C++中的虚函数(virtual function).
.对C++递增(增量)运算符重载的思考.
.C语言库函数 (A类字母).
..
.把其它程序(如网页等)的文字拖放.
.C++中运算符优先级的学习注解.
.监视剪贴板内容.
.自解密的加密程序的制作.
.5.  运算符.
.C++ 类的作用域.
.C语言库函数 (E类字母).
.剖析Windows任务管理器开发原理与.
.链表的c语言实现(七).
.开发自己的英文语音朗读软件.
.在delphi把字符串分割成一维数组.
.WINDOWS键盘事件的挂钩监控原理及.

数据结构题集--数组(二维数组)

发表日期:2008-3-8


设计一个矩阵相乘的程序
假设有  

   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的矩阵
程序构思:
我们所知的矩阵乘法运算的算式如下:

Cij = Aik X Bkj   的k从1到 n 的和,那么可以用一个3层循环来运算此算式:

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];
        }
    printf("The matrix A:\n");
    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");
    }
}
运行结果:
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

二维数组行列互换
程序实例:
    设计一个能将二维数组转换成以列为主的一维数组和以行为主的一维数组。
    默认二维数组数据为:
           9  7  6  6
           3  5  3  3
    Data = 6  6  4  7
           7  5  1  4
           1  2  8  0
程序构思:
    依题意知道,本程序所运用的数据结构为“二维数组”,上报为进行数组以列为主和以行为主的转换。
已知该二维数组的大小为 5*4
以行为主的数组转换公式为:
    Data[i][j]的位置=(i*4)+j
以列为主的数组的转换公式为:
    Data[i][j]的位置=(j*5)+i
声明一个大小为20的一维数组,用来存久违转换以列为主后的数据,并声明一个大小为20的一维数组,用来存久违转换后以行为主的数据。
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

上一篇:通用子目录文件显示方法 人气:682
下一篇:数据结构算法集---C++语言实现 人气:994
浏览全部C/C++的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐