- 1、本文档共2页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
阵列摘要
*陣列(array) :相同型態資料的集合(可看成一常數指標constant pointer)
系統會給一足夠大的記憶體區塊,來儲存使用者宣告的陣列,並把陣列的名稱設
成記憶體區塊的起始位址,也就是說:陣列名稱代表的是,陣列的起始位址。而
且此位址是經由系統指定與維護管理,不能被更改 !
陣列名稱就是系統分配給我們的陣列起始位址!
陣列宣告方式: 資料型態 陣列名稱[陣列元素個數] ;
Ex.
float fa[2];
(變數) :表示該變數所在的位址
short int ia[4]; // sizeof(short int)=2
*(位址) :存於此位址的值或內容
fa[0] fa[1]
ia[0] ia[1] ia[2] ia[3]
int ary[5]; // 宣告含有五個元素的陣列。
int aryvalue[3] = {5, 4, 3}; // 宣告含有三個元素的陣列,並給定初值。
*設定初值:由陣列的第一個元素(index 0)開始填值,未給者補零。(row major)
初值多給時會導致出錯。
int ia[4]={1,3,5};
= 相當於 ia[0]=1; ia[1]=3, ia[2]=5, ia[3]=0
int aryMore[4] = {0, 1, 2, 3, 4};
// 陣列長度只有4 ,但給了5 個值,可能會出錯!
int m[2][3]={ 1, 2, 3, 4, 5, 6};
int ma[2][3]={ 1, 2, 3, 4 };
int mb[2][3]={ { 1, 2, 3 },
{ 4, 5, 6 }
};
int mc[2][3]= { { 1, 2 },
{ 4 }
};
*宣告時可不給陣列大小,compiler 會自動計算 。
int ib[]={2,4,6,8}; = int ib[4]={2,4,6,8};
*計算陣列的個數:
ex. sizeof(ib)/sizeof(ib[0]); = 4, 陣列ib 的元素個數。
*陣列資料的複製(copy) :
ex. int iax[4]={5,4,3,8};
int iay[4];
1) iay=iax; // Whats wrong ?
2) for ( k=0; k4; k++) iay[k]=iax[k]; // copy array’s elements one by one
*利用陣列來實現多位數的乘法:
int fac[99]; // 理論上可存99 位數的長整數。
fac[0] = 1; // 從 fac[0] 開始依序儲存個、十、百、千、萬、...位,依此類推的值。
想像當要將fac 這個長整數乘以某數p 時,理論上每一位數都要乘上p ,只是乘
完後有可能會出現需要進位的情形,所以我們要將進位的部分加到下一位,並將
進位後的剩餘結果填入目前的位數中,由個位數開始(此時之前的進位可當成0)
對每一個位數重複這個運算。
例如:
int value = fac[k] * p + c; // 每一位都要乘以 p ,並加上前一位的進位值 c !
c = value / 10; // 取出進位數存於 c ,如上,準備要將其加到下一位。
fac[k] = value % 10; // 餘數即為該位數最後的結果。
階乘的定義: n! = (1)*(2)*...*(n-2)*(n-1)*(n) 。
你能根據這個定義與上述的討論,算出 15 以上的階乘結果嗎?
文档评论(0)