動態(tài)矩陣的產(chǎn)生與管理一_第1頁
動態(tài)矩陣的產(chǎn)生與管理一_第2頁
動態(tài)矩陣的產(chǎn)生與管理一_第3頁
動態(tài)矩陣的產(chǎn)生與管理一_第4頁
動態(tài)矩陣的產(chǎn)生與管理一_第5頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、沈 陽 航 空 工 業(yè) 學 院 課程設計 學 號 _200604111013_ 班 級 _6411101_ 姓 名 _崔獻威_指導教師 _王曉巖_2008年3 月12 日沈陽航空工業(yè)學院課程設計任務書材料科學與工程學院 金屬材料工程專業(yè) 6411101班 學號200604111013課程設計題目:動態(tài)矩陣的產(chǎn)生與管理一二、課程設計工作自2008年3月3日起至2008年3月7日止三、課程設計內(nèi)容:用C語言編寫軟件完成以下任務:利用鏈表的方法,產(chǎn)生任意行數(shù)和列數(shù)的矩陣,用于存儲某個二維矩陣。行數(shù)和列數(shù)由用戶從鍵盤輸入,從而體現(xiàn)動態(tài)性。提示:先用鏈表動態(tài)管理1行的數(shù)據(jù),有了基礎之后再設計管理二維的數(shù)

2、據(jù)四、課程設計要求:程序質(zhì)量:l 貫徹結構化的程序設計思想。l 用戶界面友好,功能明確,操作方便。l 用戶界面中的菜單至少應包括“輸入矩陣的行數(shù)和列數(shù)”、“輸入矩陣元素”、“打印矩陣”、“退出”4項。l 代碼應適當縮進,并給出必要的注釋,以增強程序的可讀性。l 。課程設計說明書:課程結束后,上交課程設計說明書(打印稿和電子稿),其內(nèi)容如下:l 封面l 課程設計任務書l 目錄l 需求分析(分析題目的要求)l 程序流程圖(總體流程圖和主要功能模塊流程圖)l 核心技術的實現(xiàn)說明及相應程序段l 個人總結l 參考資料l 源程序及適當?shù)淖⑨屩笇Ы處煟篲 學生簽名:_沈 陽 航 院 設 計 用 紙目錄一、需

3、求分析1二、程序流程圖1三、核心技術的實現(xiàn)說明及相應程序段4四、個人總結10五、參考文獻10六、源程序1113一、需求分析動態(tài)矩陣的產(chǎn)生有幾個步驟組成,1 輸入動態(tài)矩陣的維數(shù) 2 用鏈表建立一個動態(tài)矩陣 3 輸出動態(tài)矩陣 1 輸入動態(tài)矩陣的維數(shù) 輸入矩陣的行數(shù)和列數(shù) 2 產(chǎn)生動態(tài)矩陣 首先在內(nèi)存開辟一個空間并且輸入一個元素,判斷行數(shù)和列數(shù)是否滿足要求,當滿足要求繼續(xù)開辟內(nèi)存空間,并且與前一個元素相連,直到行數(shù)和列數(shù)不滿足要求 3 輸出動態(tài)矩陣 輸出矩陣的元素二、程序流程圖1、程序總體結構圖當 n = 1 輸入值 n =1 真 假 n = 2? 真 假 真 n = 3? 假 輸入行數(shù) 和列數(shù) n

4、 = 4 ? 產(chǎn)生矩陣 真 假 輸出矩陣 退出 表12、產(chǎn)生矩陣流程圖輸入矩陣行數(shù)row和列數(shù)lineCount=0 在內(nèi)存中開辟一段內(nèi)存單元附值給head q head->next=NULL p=head->next輸入行數(shù)row和列數(shù)line當count<line*row 新開辟一段內(nèi)存空間附值給newMem q->next=newMem newMem->next=p count+ q=q->next表23輸出矩陣p=head i=0 j=0 當i<row 當j<line 輸出p->a j+ i+表3三、核心技術的實現(xiàn)說明及相應程序段#

5、include<stdlib.h>#include<stdio.h>#include<string.h>#define NULL 0#define LEN sizeof(struct number)定義結構體,用來存儲一個結點數(shù)據(jù)struct number int num; struct number *next;int row;int tier;struct number *head;struct number *creat()int i,n,m; struct number *p1,*p2,*p3;n=0;for(i=0;i<row;i+) pri

6、ntf("n第 %d 行",i+1); n=0; if(i=0) 在內(nèi)存中開辟一段空間 p1=p2=(struct number*)malloc(sizeof(LEN); else p1=(struct number*)malloc(sizeof(LEN); printf("n請輸入數(shù)據(jù) :"); scanf("%d",&p1->num); while(n<tier) n=n+1; if(n=1&&i=0) head = NULL;head=p1; else p2->next=p1; p2=p

7、1; if(n!=tier) p1=(struct number*)malloc(sizeof(LEN); printf("n請輸入數(shù)據(jù) :"); scanf("%d",&p1->num); p2->next = NULL; p3=head; return head; void print(struct number *head)int n; struct number *p; p = head; if(head!=NULL) do printf("%d t",p->num); p = p->next;

8、 n+;if(n%tier=0)printf("n"); while(p!=NULL); 輸入函數(shù)void input_row_tier() printf("n 請輸入行數(shù) :");scanf("%d",&row); printf("n 請輸入列數(shù) :"); scanf("%d",&tier);void main() int mm;while(1) printf("n 1 輸入行和列"); printf("n 2 錄入"); printf(

9、"n 3 輸出"); printf("n 4 退出 nt");scanf("%d",&mm);switch(mm) case 1: input_row_tier();break; case 2: creat();break; case 3: print(head);break; case 4: exit(0);break;四、個人總結在C 語言中,數(shù)組的長度是固定的。但是在有時,不知道究竟使用多少元素的時候,就必須定義足夠長的數(shù)組,這樣不僅浪費內(nèi)存資源,而且在程序編寫過程中很容易出現(xiàn)一些不可意料的錯誤。C語言中提供的內(nèi)存管理程

10、序可以幫助我們開辟固定長度的內(nèi)存空間,這樣我們根據(jù)內(nèi)存空間、 利用鏈表的相關知識可以創(chuàng)建動態(tài)數(shù)組。 在編制程序的過程中,使我學會了鏈表的有關操作,掌握了動態(tài)內(nèi)存管理的方法,雖然只是一個小的程序,但是我是通過自己的努力一步步完成的,使我受益很深。五、參考文獻1 譚浩強C程序設計北京:清華大學出版社,20052 劉成等C語言程序設計實驗指導與習題集北京:中國鐵道出版社,2006六、源程序#include<stdlib.h>#include<stdio.h>#include<string.h>#define NULL 0#define LEN sizeof(str

11、uct number)struct number int num; struct number *next;int row;int tier;struct number *head;struct number *creat()int i,n,m; struct number *p1,*p2,*p3;n=0;for(i=0;i<row;i+) printf("n第 %d 行",i+1); n=0; if(i=0) p1=p2=(struct number*)malloc(sizeof(LEN); else p1=(struct number*)malloc(sizeof

12、(LEN); printf("n請輸入數(shù)據(jù) :"); scanf("%d",&p1->num); while(n<tier) n=n+1; if(n=1&&i=0) head = NULL;head=p1; else p2->next=p1; p2=p1; if(n!=tier) p1=(struct number*)malloc(sizeof(LEN); printf("n請輸入數(shù)據(jù) :"); scanf("%d",&p1->num); p2->nex

13、t = NULL; p3=head; return head; void print(struct number *head)int n; struct number *p; p = head; if(head!=NULL) do printf("%d t",p->num);p = p->next; n+;if(n%tier=0)printf("n"); while(p!=NULL); void input_row_tier() printf("n 請輸入行數(shù) :");scanf("%d",&row); printf("n 請輸入列數(shù) :"); scanf("%d",&tier);void main() int mm;while(1) printf("n 1 輸入行和列"); printf("n 2 錄入

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論