計算機三級網絡技術:十類必記語句(2)
(6)求平均值
變量說明:
變量i是循環變量,變量終值等于數組中元素的個數,a[i]是一個一維數組;變量pjz表示平均值;變量cnt是一個記數變量。if是一個條件判斷語句,此處假設判斷a[i]是不是偶數。(注:pjz和cnt的初始值一般都是0,此處省去了該變量的賦值語句。)
表達式含義:
通過for循環依次判斷當前數組元素a[i]的值是否是偶數(該條件根據題目要求而定),如果是偶數,則將a[i]的值累加到變量pjz中,同時,記數變量cnt的值加1,所有循環結束后,再將變量pjz的總和除以個數cnt得到平均值并將該值賦給變量pjz。
例如:
假設,數組a[4]中的5個數字為:2、4、5、11、12,計算偶數的平均值。
①本題數組a[4]中共有5個元素,因此要進行5次for循環進行判斷。
②循環結束后,通過表達式計算:18/=3,變量pjz的最終結果等于6。
(7)數組排序
變量說明:
i和J都是循環變量,同時也是數組b的下標變量,temp是兩數轉換時的中間變量,以上變量名都可以由考生自定義,而數組b口的名稱需要根據題目要求進行命名。另外,變量cnt表示數組中元素的總數,該變量值一般需要計算得到,可參考第(5)點中的相關語句,此處不再重復講解。
表達式含義:
在一維數組b口中,通過兩個for循環對數組中的每個數進行比較。
①首先,在第一層for循環中,循環變量i的值與數組下標的值同步,即都是從0開始,每循環一次,變量值加1,即數組下標值加l,直到讀取到倒數第2個元素時,循環結束,注意,因為一維數組的下標值是從0開始的,因此,當數組有 cnt元素時,最后一個元素的數組下標值實際等于cnt-1,當i值等于cnt-1的值的時候,將不再執行for循環體中的語句。
②然后第2層for循環中,循環變量j的起始位置是從上一個循環i值位置的下一位置開始,即i+1的位置開始,在該循環中,i的值始終保持不變,而i的值依次遞增加1,直到i值等于元素總數cnt值時結束循環,這樣,就能將第i個數與其后面所有的數進行比較。
③最后,通過一個排序語句,對數組中的元素進行升序或降序排序。
例如:
假設,數組b[5]中的6個數字及順序為:7、5、8、3、4、6,即:b[0]=7,b[1]5,b[2]=8,b[3]=3,b[4]=4,b[5]=6,按從小到大的順序排序。
①執行流程如下:
.首先執行第一層for循環的第1次循環,i的起始值為0,b[0]=7,即b[i]的當前值等于7。
.此時開始執行第二層的for循環,j的起始值為i+1,此時b[j]=b[1]=5。將b[0]和b[1]進行比較,如果b[0]>b[1],
則交換兩個數的位置,交換位置后b[i]=b[O]=5,b[j]=b[1]=7;
.繼續執行第二層for循環,此時,j的值加1,則b[j]=b[2]=8,再將b[j]與b[i]進行比較,此時b[i]的值小于b[j]的值,不符合判斷,兩數的位置不變;依次類推,再繼續讀取b[3]、b[4]、b[5]的值與b[0]的值進行比較,這樣,在所有的比較結束后,最小的一個數就排到了b[0]的位置了。
.此時,完成了第一層循環的第l次循環,數組序列為:3、5、7、8、4、6。
②執行第一層for循環的第2次循環時,i的值加l,即b[i]=b[1]=5,此時是從數組的第2個元素開始,然后再執行第二層for循環,j的值從i+1=1+1=2開始,接著比較b[i]和bD]的大小,按升序排列,根據①中的說明,執行類似的操作,再將b[3]、 b[4]、b[5]后面與b[1]比較大小,重新排序,當第一層for循環的第2次循環結束后,數組序列為:3、4、5、7、8、6。
③根據前兩個步驟可以看出,在第一層for循環的兩次循環結束后,最小的兩個數也都按升序的方式排列到最前面了,依次類推,第一層for循環的第3次循環將從數組的第3個元素開始進行判斷,最后,在所有的循環結束后,數組序列為:3、4、5、6、7、8。
總之,記住一點,在執行兩層for循環時,只有第二層循環中的所有循環執行完畢,第一層循環才會開始新一輪的循環計算。另外,還要注意的是,只有兩個緊接著的或有包含關系的for語句才構成雙重循環,如果兩個for語句之間有別的語句,則兩個for語句是相對獨立的,不構成雙重循環。
(8)將數值存入數組的語句
變量說明:
變量i是循環變量,變量終值等于數組中元素的個數,a[i]是需要計算的一維數組,b[cnt]是用來保存結果的一維數組, cnt是數組的下標變量。(注:cnt的初始值一般都是0,此處省去了該變量的賦值語句。)
表達式含義:
通過for循環依次判斷當前數組元素a[i]的值是否是奇數(該條件根據題目要求而定),如果是奇數,則將a[i]的值賦給變量b[cnt],同時cnt的值加1。
例如:
假設,數組a[4]中的5個數字為:7、2、5、11、13,計算偶數的平均值。
①本題數組a[4]中共有5個元素,因此要進行5次for循環進行判斷。
②循環結束后,通過表達式計算:18/=3,變量pjz的最終結果等于6。
(9)判斷一個數與其前面或后面連續幾個數的語句
①小于后連續5個數
⑦大于前連續5個數
變量說明:
a[i]表示一維數組變量,i是數組下標變量,a[i-1]、…、a[i-5]分別表示當前數組元素a[i]的前5個數組元素;a[i+1]、…、 a[i+5]則表示前數組元素a[i]的后5個數組元素。
表達式含義:
通過數組下標變量確定當前數組元素的前5個或后5個元素的位置,然后再通過大于或小于號連接各個數組變量,判斷數組元素之間的大小關系。
例如:
判斷數組a[9]中連續大于后5個數的數字,數組a[9]中包含的數是:a[0]=2、a[1]=3、a[3]=10、a[4]=9、a[5]=6、a[6]=7、 a[7]=5、a[8]=8、a[9]=1、a[10]=15。
可以看出,只有數字a[3]=10和a[4]=9才可同時符合連續大于該數后面5個數的要求,對于后面不足5個數的數字將不參與比較。
(10)對文件中的記錄按字段排序關鍵語句:
變量說明:
變量i和j都是循環變量,同時表示的是結構體中的一行記錄;dm是產品代碼的變量名,sell[i].dm是第i行的產品代碼的值, me、dj、sl和je分別是產品名稱、單價、數量和金額的變量名,同樣sell[i].mc、sell[i].dj、sell[i].sl和sell[i].je也分別代表各字段在第i行對應的變量值;tmp是用來保存記錄的中間變量;PR0是結構體名。
表達式含義:
首先通過兩個for循環對結構體中的兩條記錄進行比較(具體的控制流程,與第(7)點中的類似),通過strcmp()函數比較兩條記錄中上一條記錄的產品名稱是否小于下一條記錄的產品名稱(ASCIl碼值),如果兩個產品名稱相同,則比較上一條記錄的金額是否小于下一條記錄的金額。無論滿足哪個條件,都將執行條件語句中的語句序列,即:把sell[i](當前記錄)的值復制到tmp,然后將把sell[j](當前記錄后面的記錄)的值復制到sell[i],最后將tmp的值復制到sell[j],這樣就完成了記錄的排序。
本例題可參考第(7)點的例題,此處不在重復說明。