zoukankan      html  css  js  c++  java
  • 【C】【两维静态数组】2个例子

    题目1:打印一个两维数组

    #include <stdio.h>
    #define N 3
    int A[N][N] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
    int main()
    {
    	int i = 0;
    	int j = 0;
    	for (i = 0; i < N; i++)
    	{
    		for (j = 0; j < N; j++)
    		{
    			printf("%d ", A[i][j]);
    		}
    		printf("\n");
    	}
    
    	return 0;
    }
    

     输出:

    1 2 3
    4 5 6
    7 8 9
    请按任意键继续. . .

    注意:

    1.两维静态数组的定义及初始化int A[N][N] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};

    2.第二个for循环中,j = 0不要忘了

    3.两维数组可以用A[i][j]进行访问,有条件?

    思考:

    这里的A是几维数组?

    两维指针到底是几级指针?传递二维数组名时该如何取元素?


    题目2:计算两个N阶矩阵相乘的结果

    #include "oj.h"
    #include "string.h"
    #include <stdio.h>
    /*
    功能:计算结果矩阵某一项的值,第x行,第y列
    输入:	MatrixA : 矩阵A
    		MatrixB : 矩阵B
    		N		: 矩阵的阶
    		x		: 计算项在x行
    		y		: 计算项在y列
    输出:	MatrixC	: 计算结果矩阵的[x, y]的值
    */
    int calcItem(int **MatrixA, int **MatrixB, int N, int x, int y, int **MatrixC)
    {
        int i = 0;
    	int* MA = (int*)MatrixA;
    	int* MB = (int*)MatrixB;
    	int* MC = (int*)MatrixC;
    	MC[x * N + y] = 0;
        for (i = 0; i < N; i++)
    	{
    		MC[x * N + y] = MC[x * N + y] + MA[x * N + i] * MB[i * N + y];
        }
        return 0;
    }
    
    /*
    功能: 矩阵相乘    
    输入: MatrixA,MatrixB    
    输出: MatrixC
    返回: 0     成功
    	  -1	失败
    */
    int matrix(int **MatrixA, int **MatrixB, int **MatrixC, int N)
    {
        int i = 0;
        int j = 0;
        if (N < 1)
        {
            return -1;
        }
        if ((NULL == MatrixA) || (*MatrixA == NULL))
        {
            return -1;
        }
        if ((NULL == MatrixB) || (*MatrixB == NULL))
        {
            return -1;
        }
        if ((NULL == MatrixC) || (*MatrixC == NULL))
        {
            return -1;
        }
        
        for (i = 0; i < N; i++)
        {
            for (j = 0; j < N; j++)
            {
                calcItem(MatrixA, MatrixB, N, i, j, MatrixC);
            }
        }
    
    	return 0;
    }
    

     测试用例:

    void CExampleTest::TestCase01()
    {
    	int A[3][3] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
    	int C[3][3], ExpectC[3][3] = {{30, 36, 42}, {66, 81, 96}, {102, 126, 150}};
    
    	matrix((int**)A, (int**)A, (int**)C, 3); 
    
    	CPPUNIT_ASSERT(0 == memcmp(C, ExpectC, sizeof(C)));
    }
    

     思考:

    两维指针转一维指针int* MA = (int*)MatrixA等的内涵?

  • 相关阅读:
    Flask学习 1创建第一个页面
    Flask教程
    微信服务号认证和不认证的区别
    python保存selenium的cookies写入和读出
    centos 无界面安装selenium+chrome+chromedirver的设置
    win7系统下安装Splash。
    ubuntu mysql5.6二进制安装
    Python socket实现处理多个连接
    Python 简单soket例子
    Python socket网络编程(通信介绍)
  • 原文地址:https://www.cnblogs.com/caixu/p/2826447.html
Copyright © 2011-2022 走看看