freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

[計算機軟件及應(yīng)用]第06章數(shù)組(已修改)

2025-01-31 17:34 本頁面
 

【正文】 第 6章 數(shù) 組 第 6章:數(shù) 組 ?學(xué)習(xí)的意義 到目前為止,我們已經(jīng)討論了 C語言中的基本數(shù)據(jù)類型,如果用基本數(shù)據(jù)類型來定義某些變量,那么這些變量在內(nèi)存中將占用各自的內(nèi)存單元,變量之間的制約關(guān)系無法體現(xiàn),不能表現(xiàn)出這些變量之間的關(guān)聯(lián)性,看不出它們之間有任何的聯(lián)系,我們把這些變量稱之為 “ 離散變量 ” ,對它們的訪問只能通過變量名逐一進行 。 下面來思考一個問題: 例 ? 有沒有更好的方法來解決呢? 有!就是用 數(shù)組 來編程。 ? 構(gòu)造數(shù)據(jù)類型之一 ? 數(shù)組 :有序數(shù)據(jù)的集合 ,用數(shù)組名標識 ? 元素 :屬同一數(shù)據(jù)類型 ,用數(shù)組名和下標確定 ?學(xué)習(xí)目標 ?學(xué)習(xí)內(nèi)容 ? 一維數(shù)組 ? 一維數(shù)組的定義和引用 ? 一維數(shù)組的賦值 ? 一維數(shù)組的應(yīng)用舉例 ? 二維數(shù)組 ? 二維數(shù)組的定義和引用 ? 二維數(shù)組的賦值 ? 二維數(shù)組的應(yīng)用舉例 ? 字符串與數(shù)組 ? 字符串的本質(zhì) ? 字符及字符串操作的常用函數(shù) ? 字符串數(shù)組 ?數(shù)組綜合應(yīng)用舉例 ?本章小結(jié) ? 理解數(shù)組變量在內(nèi)存中的存放形式; ? 掌握一維數(shù)組和二維數(shù)組變量的定義和數(shù)組元素的引用; ? 掌握字符串與字符數(shù)組的區(qū)別; ? 掌握各種字符串庫函數(shù)的用法; 1 一維數(shù)組 一維數(shù)組的定義 ? 定義方式: 存儲類型符 數(shù)據(jù)類型符 數(shù)組變量名 [整型常量表達式 ]; 數(shù)組中各元素的存儲類別 數(shù)組元素的數(shù)據(jù)類型 合法的標識符 表示元素個數(shù) 下標從 0開始 [ ]: 數(shù)組運算符 單目運算符 左結(jié)合 不能用 ( ) 用分號結(jié)尾 例如: int a[10]。 //定義了有 10個數(shù)據(jù)元素的 int型數(shù)組 a float f[20]。 //定義了有 20個數(shù)據(jù)元素的 float型數(shù)組 f char str1[10], str2[20]。 //定義了有 10個和 20個數(shù)據(jù)元素的 char型 數(shù)組 str1和 str2 ? 定義說明: (1) 數(shù)組定義時,必須指定數(shù)組的大?。ɑ蜷L度),數(shù)組大小必須是整型常量表達式,不能是變量或變量表達式。 (2) 數(shù)組定義后,系統(tǒng)將給其分配一定大小的內(nèi)存單元,其所占內(nèi)存單元的大小與數(shù)組元素的類型和數(shù)組的長度有關(guān)。 數(shù)組所占內(nèi)存單元的字節(jié)數(shù) = 數(shù)組大小 sizeof(數(shù)組元素類型) (3) 數(shù)組中每個數(shù)組元素的類型均相同,它們占用內(nèi)存中連續(xù)的存儲單元,其中第一個數(shù)組元素的地址是整個數(shù)組所占內(nèi)存塊的低地址,也是數(shù)組所占內(nèi)存塊的首地址,最后一個數(shù)組元素的地址是整個數(shù)組所占內(nèi)存塊的高地址(末地址)。 例如,下面對數(shù)組的定義是錯誤的: int n = 10。 int a[n]。 //數(shù)組的大小不能是變量 int b[]。 //數(shù)組的大小不能是浮點常量 int c[n+10]。 //數(shù)組的大小不能是變量表達式 例如: short int a[20]。 則數(shù)組 a所占內(nèi)存單元的大小為: 20 * sizeof(short) = 20 * 2 = 40(字節(jié))。 sizeof運算符 ? sizeof運算符 功能: 獲取變量和數(shù)據(jù)類型所占內(nèi)存大?。ㄗ止?jié)數(shù)) 格式: sizeof 表達式 sizeof(數(shù)據(jù)類型名或表達式) 例: sizeof (int) 其值為 2(在 ) 其值為 4( 在 ) sizeof (long) 其值是 4 sizeof 10L 其值也是 4 unsigned long a = 2。 sizeof (a) 其值也是 4 一維數(shù)組的引用 ? 引用格式: 數(shù)組變量名 [下標 ] ? 引用說明: (1) 下標可以是整型常量、整型變量或整型表達式。 C語言規(guī)定,下標的 最小值是 0,最大值則是數(shù)組大小減 1 。 占用的字節(jié)數(shù)為: 10 * sizeof(short) = 10 * 2 = 20 a[0] a[1] a[2] a[9] …… 內(nèi)存 地址 2022 2022 2022 2022 a …… 第 1個元素 …… 第 2個元素 第 3個元素 第 10個元素 例: short int a[10]。 ? 引用說明: (2) 只能逐個引用數(shù)組元素,不能一次引用整個數(shù)組 (3) 數(shù)組定義以后,數(shù)組中的每一個元素其實就相當與一個變量,所以我們有時也把數(shù)組元素稱為 下標變量 。對變量的一切操作同樣也適合于數(shù)組元素。 (4) 數(shù)組引用要注意越界問題。 (5) 數(shù)組必須 先定義 , 后使用 例 int a[10]。 printf (“%d”, a)。 (?) 必須 for (j = 0。 j 10。 j++) printf (“%d\t”, a[j])。 (?) 例: int a[3]。 a[0] = 2。 //將數(shù)組 a的第 1個元素賦值為 2 a[1] = 4。 //將數(shù)組 a的第 2個元素賦值為 4 a[2] = a[0] + a[1]。 //將數(shù)組 a的第 1個元素的值與第 2個元 素的值相加賦給第 3個元素(值為 6) 存儲單元有效地址 = 數(shù)組的起始地址 + 下標 sizeof( 數(shù)組元素類型 ) short int a[10]。 short x = a[10]。 //引用越界 , a[10]的地址為: 2022 + 10 * 2 = 2020, 只能引用 a[0]~ a[9] 例 int x = a[1]。 //錯誤,應(yīng)先定義數(shù)組 a,再引用 int a[10]。 一維數(shù)組的賦值 ? 一維數(shù)組的初始化賦值 數(shù)據(jù)類型符 數(shù)組變量名 [常量表達式 ] = {表達式 1,表達式 2, … ,表達式 n}; ? 初始化賦值說明: (1) “=”后面的表達式列表一定要用 { }括起來,被括起來的表達式列表被稱為初值列表,表達式之間用“ , ”分隔; (2) 表達式的個數(shù)不能超過數(shù)組變量的大??; 例 int a[4] = {1, 2, 3, 4, 5}。 //超出了數(shù)組的大小 (3) 表達式 1是第 1個數(shù)組元素的值,表達式 2是第 2個數(shù)組元素的值,依此類推; 例 int a[5] = {0, 1, 2, 3, 4}。 經(jīng)過以上定義和初始化后, a[0] = 0, a[1] = 1, a[2] = 2, a[3] = 3, a[4] = 4。 ? 初始化賦值說明: (4) 如果表達式的個數(shù)小于數(shù)組的大小,則未指定值的數(shù)組元素被賦值為 0; 例 int a[10] = {0, 1, 2, 3, 4}。 a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9] a 0 0 1 1 2 2 3 3 4 4 0 0 0 0 0 0 0 0 0 0 (5) 當對全部數(shù)組元素賦初值時,可以省略數(shù)組變量的大小,此時數(shù)組變量的實際大小就是初值列表中表達式的個數(shù)。 例 char str[ ] = {39。a39。, 39。b39。, 39。c39。, 39。d39。, 39。e39。 }。 則數(shù)組 str的實際大小為 5。 注意: 在定義數(shù)組時,如果沒有為數(shù)組變量賦初值,那么就不能省略數(shù)組的大小。而且數(shù)組不初始化,其數(shù)組元素為隨機值。 ? 一維數(shù)組在程序中賦值 C語言除了在定義數(shù)組變量時用初值列表對數(shù)組整體賦值以外,無法再對數(shù)組變量進行整體賦值。 例 int a[5]。 a = {1, 2, 3, 4, 5}。 a[ ] = {1, 2, 3, 4, 5}。 a[5] = {1, 2, 3, 4, 5}。 錯誤! 數(shù)組定義后,如何對數(shù)組進行賦值呢? 只能通過 C語句對數(shù)組中的數(shù)組元素逐一賦值。 ? 使用賦值語句來逐一賦值 例 int a[4]。 a[0] = 1。 a[1] = 2。 a[2] = 3。 a[3] = 4。 char str[80]。 str[0] = 39。b39。 str[1] = 39。y39。 str[2] = 39。e39。 str[3] = 39。\039。 //將數(shù)組 str賦值為一字符串 bye 這種方法是一種簡單而且行之有效的方法,它適用于長度較小的數(shù)組或?qū)﹂L度較大的數(shù)組部分元素賦值,而且可對每個數(shù)組元素賦不同的值。 ? 一維數(shù)組在程序中賦值 ? 使用循環(huán)語句來逐一賦值 例如,將數(shù)組 a的各元素賦值成奇數(shù)序列 。 int a[10], i。 for (i = 0。 i 10。 i++) a[i] = 2* i + 1。 例如,接受用戶鍵盤輸入賦值給數(shù)組各元素。 int a[10], i。 for (i = 0。 i 10。 i++) scanf(%d, amp。a[i])。 判斷下列賦值是否正確? int a[3]。 scanf (%d%d%d, a)。 這種方法是在編程中普遍使用的一種方法,它適用于對某數(shù)組元素進行有規(guī)律的賦值或接受用戶通過鍵盤輸入對數(shù)組元素的賦值 。 ? 一維數(shù)組在程序中賦值 ? 使用 memset函數(shù)來賦值 memset函數(shù)原型: void *memset (void *s, char ch, unsigned n) 功能: 就是將 s為首地址的一片連續(xù)的 n個字節(jié)內(nèi)存單元都賦值為 ch。 例如, 將數(shù)組 str的每個數(shù)據(jù)單元賦值為 39。a39。 char str[10]。 memset (str, 39。a39。, 10)。 例如, 將數(shù)組 a的每個數(shù)據(jù)單元賦值為 0(清 0) 。 int a[10]。 memset (a, 0, 10*sizeof(int))。 這種方法是適合于字節(jié)型數(shù)組的整體賦值,或?qū)Ψ亲止?jié)型數(shù)組進行清 0 。 ? 一維數(shù)組在程序中賦值 ? 使用 memcpy函數(shù)實現(xiàn)數(shù)組間的賦值 memcpy函數(shù)原型: void *memcpy (void *d, void *s, unsigned n) 功能: 將 s為首地址的一片連續(xù)的 n個字節(jié)內(nèi)存單元的值拷貝到以 d為首地址的一片連續(xù)的內(nèi)存單元中 。 例如, 兩個數(shù)組元素之間的賦值 。 int a[5] = {1, 2, 3, 4, 5}, b[5], i。 for (i = 0。 i 5。 i++) b[i] = a[i]。 memcpy (b, a, 5* sizeof(int))。 注意: 在使用 memset和 memcpy函數(shù)時,源程序中要包含頭文件 “ ”。在 TC或 BC下頭文件也可用 “ ”,在 VC下,則也可用 “ ”。 函數(shù)參數(shù)的傳遞方式 值傳遞方式 根據(jù)實參傳遞給形參值的不同,通常有 值傳遞方式 和地址傳遞方式 兩種。 ? 方式: 函數(shù)調(diào)用時 ,為形參分配單元 ,并將實參的值 復(fù)制 到形參中;調(diào)用結(jié)束,形參單元被釋放,實參單元仍保留并維持原值。 ? 特點: ① 形參與實參占用 不同 的內(nèi)存單元 ② 單向 傳遞 7 x 11 y ② 調(diào)用 例 : 交換兩個數(shù) (值傳遞方式 )
點擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
公安備案圖鄂ICP備17016276號-1