1. 程式人生 > >C語言矩陣乘法(指標實現)

C語言矩陣乘法(指標實現)

https://img-blog.csdn.net/20140417160403093?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGRoNzYwNTY5Njkx/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast

這是C和指標書上的一道題,充分體現了指標實現陣列操作的過程

void matrix_multiply( int *m1, int *m2, int *r,
                     int x, int y, int z )
{
    register int *m1p;   //暫存器變數提高執行速度,在這可有可無
    register int *m2p;
    register int k;
    int row;
    int column;

    /*
     * 外層的兩個迴圈逐個產生結果矩陣的元素。由於這是按照存在順序
     * 進行的。我們可以通過對r進行間接訪問來訪問這些元素。
     */

    for( row=0; row<x; row+=1 )
    {
        for( column=0; column<z; column+=1 )
        {
            /*
             * 計算結果的一個值。這是通過或得指向m1和m2的合適元素的指標,
             * 當我們進行進行迴圈時,使他們前進來實現的。
             */

            m1p = m1 + row * y;
            m2p = m2 + column;
            *r = 0;

            for( k=0; k<y; k+=1 )    //迴圈得到*r的值
            {
                *r += *m1p * *m2p;   //r陣列元素的值
                m1p += 1;           //m1陣列的行
                m2p += z;          //m2陣列的列 
            }

            /* r 前進一步,指向下一個元素 */

            r++;
        }
    }
}


相關推薦

C語言矩陣乘法指標實現

這是C和指標書上的一道題,充分體現了指標實現陣列操作的過程 void matrix_multiply( int *m1, int *m2, int *r, int x, int y, int z ) { regist

基於MapReduce的大矩陣乘法Spark實現

矩陣-向量乘法實現 xi=∑j=1nmijvj Map函式 Map函式應用於M的一個元素,但是如果執行Map任務的計算節點還沒有將v讀到記憶體,那麼首先以一個整體的方式讀入v,然後v就可以被該Map任務中執行的Map函式所用。每個Map任務將整個向量v和矩陣

加法變乘法——第六屆藍橋杯C語言B組省賽第六題

clu 自己 nbsp 加法 藍橋杯 重新 () std spa 原創 加法變乘法 我們都知道:1+2+3+ ... + 49 = 1225現在要求你把其中兩個不相鄰的加號變成乘號,使得結果為2015 比如:1+2+3+...+10*11+12+...+27*28+29+

C語言執行結果控制檯視窗表格的實現最基礎版

先放張效果圖: 這就是一個簡單的表格(複雜的我辦不到!!),而這個表格的實現也是非常簡單的,就是簡單的 printf 輸出: #include <stdio.h> int main() { printf("=================================

C語言-B樹B-樹的完整實現

B樹的定義 B樹是一種平衡的多路查詢樹。 一顆m階B樹,或為空樹,或為滿足下列特性的m叉樹。 (1)樹中每個結點最多含有m棵子樹; (2)若根結點不是葉子結點,則至少有兩顆子樹; (3)除根之外的所有非終端結點至少有[m/2]; (4)每個非終端結點

C語言貪吃蛇詳解——連結串列實現

貪吃蛇設計思路:螢幕座標:拓展功能:1.F1,F2控制加速減速  空格暫停遊戲  Esc退出2.加速每個食物得分更高先打印出遊戲介面,還有初始化蛇,蛇的節點用字串★表示,遊戲背景用■表示,因為這些字串佔兩個位元組的寬度,所以每次x,y座標的對應關係是x=y*2。在相應位置打印

2018上C語言程序設計高級作業- 第0次作業

原來 高效 成功 加油 專業 今後 kindle 眼神 電子書 1、翻閱鄒欣老師博客關於師生關系博客,並回答下列問題 1)最理想的師生關系是健身教練和學員的關系,在這種師生關系中你期望獲得來自老師的哪些幫助? 師生間的人際關系,是在教學過程中師生交往的基礎上,通

2018上C語言程序設計高級作業-第1次作業

alt wid 小數 keyword earch 數組 data can 計算 一.6-1 計算兩數的和與差 1.設計思路: 1)認真讀題,弄清題目已知信息; 2)理清思路,整理組織答案; 3)輸出提交; 4)流程圖如下: 2.實驗代碼如下: v

2018上C語言程序設計高級作業- 第2次作業

方法 語句 定義 一個 log 判斷語句 為什麽 字符數組 選擇排序法 作業要求一 : 作業要求二: 6-7 刪除字符串中數字字符 1.設計思路 (1)主要描述算法: 第一步:根據函數接口定義和要求可知本題要起實現刪除一個字符串中的所有數字字符 第二步:首先定義

2018上C語言程序設計高級作業-第3次作業

鏈表 can 指針 turn 算法 rcp HA cto 月份 6-1 輸出月份英文名 設計思路 1、算法 第一步:看函數,看函數聲明 第二步:理解分析 2、流程圖如下 代碼如下 char *a[12][15]={"January","February","March","

2018上C語言程序設計高級作業- 第4次作業

經驗 怎麽 問題 牢騷 很大的 課程 表現 將不 com 作業要求一 作業要求三、學習總結和進度 1、Git地址: 地址 2、點評3個同學的本周作業(在作業中給出被點評同學博客的鏈接),並邀請3名同學點評你的作業。 點評的三位同學: 3、請用表格和折線圖呈現你本學期的代碼行

三羊獻瑞——第六屆藍橋杯C語言B組省賽第三題

lan font oid 漢字 print ack size IV cnblogs 原創 三羊獻瑞 觀察下面的加法算式: 祥 瑞 生 輝 + 三 羊 獻 瑞 ------------------- 三 羊 生 瑞 氣 (如果有對齊問題,可以參看【圖1.jp

C語言判斷素數求素數兩種方法第二種沒看懂Kkkkk有空一定搞明白非原創

素數又稱質數。所謂素數是指除了 1 和它本身以外,不能被任何整數整除的數,例如17就是素數,因為它不能被 2~16 的任一整數整除。 思路1):因此判斷一個整數m是否是素數,只需把 m 被 2 ~ m-1 之間的每一個整數去除,如果都不能被整除,那麼 m 就是一個素數。 思路2):另

c語言基礎-變數整型

一、整型變數 型別 關鍵字 取值範圍 儲存單元位元組數(非固定) 輸出 有符號整型 [signed] int -2147483648~2147483647 4 %d 無

C語言基礎知識期末嘍

演算法結構:一、順序結構、選擇結構、迴圈結構;二、迴圈結構又分為while型、until型、for迴圈結構;程式流程圖; 結構化程式設計方法:(1)自頂向下;(2)逐步細化;(3)模組化設計;(4)結構化編碼。 資料型別: 常量:常量包括字面常量、直接常量和符號常量; 變數:C語言規定標誌符只能由字母

c語言課堂筆記11.24

結構體作為函式引數時,儘量使用指標(節省空間) 識別符號規定: 1。數字,字母,下劃線構成 2。字母,下劃線為首字母 3。區分大小寫 4。保留字不能用 5。長度小於32字元 c語言為強型別語言必須先定義後使用 注意:陣列不要出現越界錯誤(int a[10]; 這個陣列最多到a[9],出現a[

c語言課堂筆記11.18

9的對角乘法表 if語句; 布林變數與零值比較 整型變數與零值比較 浮點變數與零值比較(精度) 指標變數與零值比較(與null比較) 每個case語句的結尾加break否則將多分支重疊 default語句放哪都可以,並且case處理完後最後處理default語句(如果在case之後的話,如

c語言課堂筆記11.17

sizeof 計算位元組數 strlen計算字串長度(不包含\0) 例:lello sizeof計算得6(包含\0) strlen計算得5 printf(“%%”)輸出% fflush清空輸入緩衝區 scanf 只能決定寬度不能決定精度(%m) scanf(“%*”)中% 為賦值抑制符(取完

C語言天天練十九】restrict關鍵詞

引言:在核心的系統呼叫函式裡,常常遇到函式的引數使用restrict限定詞限定的情況,以下就對該關鍵詞做個總結。 1、restrict關鍵詞是C99特性才加入的,因此在編譯使用含有該限定詞的程式時,一定要在後邊加入-std=c99的標誌,使得gcc能夠支援c99標準。 2

C語言程式碼規範程式設計規範

C語言程式碼規範(程式設計規範) 什麼叫規範?在C語言中不遵守編譯器的規定,編譯器在編譯時就會報錯,這個規定叫作規則。但是有一種規定,它是一種人為的、約定成俗的,即使不按照那種規定也不會出錯,這種規定就叫作規範。 雖然我們不按照規範也不會出錯,但是那樣程式碼寫得就會很亂。大家剛開始學習C語言