基級班講稿第4講數組及其應用_第1頁
基級班講稿第4講數組及其應用_第2頁
基級班講稿第4講數組及其應用_第3頁
基級班講稿第4講數組及其應用_第4頁
基級班講稿第4講數組及其應用_第5頁
免費預覽已結束,剩余29頁可下載查看

下載本文檔

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

文檔簡介

1、第四講 數組及其應用【引例 1:】 從鍵盤上輸入n個數,輸出他們的最大數,最小數,平均數。輸入: 第一行:n(100). 第二行:n個正整數(1,1000),中間一個空格隔開。輸出: 第一行:最大數。 第二行:最小數。 第三行:n個數的平均值(小數點后保留2位小數)。樣例:輸入: 4 10 4 20 30輸出: 30 4 16.00【引例 2:】 輸入全校學生的期中考試總分,按照成績從高分到低分輸出。學校人數不超過1800人。如:輸入:5600 580 620 610 635輸出:635 620 610 600 580一、數組 一)一維數組1.數組的定義用來描述由固定數目的同一類型的元素組成的

2、數據結構。一維數組類型的定義一維數組類型的一般格式: array下標1.下標2 of ;全校1800名學生: 如:var a: array 1.1800 of integer;1)、a是數組名, 代表的并不是一個變量,而是一批變量: a1,a2,a3a1800共1800個變量。2)、array、of是定義數組的保留字;3)、1.1800是數據編號的下限和上限,說明了數據的個數 (上限-下限+1);4)、最后一個是數據的基類型 :每個數據元素的數據類型。2、數組元素的使用:數組的每個元素和普通的變量完全一樣,可以賦值、輸入、輸出等操作。如: var a: array 1.1800 of inte

3、ger;讀入1800個學生的語文成績:read(a1); a1:=90; ai+j:=120;數組元素的輸入與輸出通常用for循環完成:For i:=1 to 1800 do read(ai);/讀入For i:=1 to 1800 do write(ai);/輸出1、(練習數組的輸入與輸出基本操作)從鍵盤上順序輸入n(N100)的數,按輸入順序和反序輸出。輸入:520 10 4 5 26輸出:20 10 4 5 2626 5 4 10 20var n,i:integer; a:array1.100 of integer;begin readln(n); for i:=1 to n do re

4、ad(ai); for i:=1 to n do write(ai, ); for i:=n downto 1 do write(ai, );end.二)數組的應用2、編程將一個十進制整數k轉化為二進制數(k1000000)。樣例:輸入:19輸出:10011進制基數R基本符號二進制20,1八進制80,1,2,3,4,5,6,7十進制100,1,2,3,4,5,6,7,8,9十六進制160,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F四種進制:各種進制之間的轉換(整數部分):1、十轉換為二、八、十六進制:方法:除R取余法2、二、八、十六進制轉換為十進制:按權展開即可3、二、八、十六

5、進制之間的相互轉換:間接法和直接法var k,n, i:longint; a:array1.20 of integer;begin readln(k); n:=0; while k0 do begin n:=n+1; an:=k mod 2; k:=k div 2; end; for i:=n downto 1 do write(ai);end.3、編程將一個十進制整數k轉化為十六進制數(k1000000)。樣例:輸入:200輸出:C8var k,n,m,i:longint; a:array1.20 of byte;begin readln(k); m:=0; while k0 do begi

6、n m:=m+1; am:=k mod 16; k:=k div 16; end; for i:=m downto 1 do begin if ai=9 then write(ai); end;end. if ai=10 then write(A); if ai=11 then write(B); if ai=12 then write(C); if ai=13 then write(D); if ai=14 then write(E); if ai=15 then write(F); case ai of 10: write(A); 11: write(B); 12: write(C); 1

7、3: write(D); 14: write(E); 15: write(F); end;方法一var k,n,i:longint; a:array1.20 of byte;begin readln(k); n:=0; while k0 do begin n:=n+1; an:=k mod 16; k:=k div 16; end; for i:=n downto 1 do if ai=9 then write(ai) else write(chr(ai+55);end.方法二const b:array1.6 of char=(A,B,C,D,E,F);var k,n,i:longint; a

8、:array1.20 of byte;begin readln(k); n:=0; while k0 do begin n:=n+1; an:=k mod 16; k:=k div 16; end; for i:=n downto 1 do if ai0 then write(i, );end.5、用篩選法求n(N=10000000)以內的素數個數。樣例3輸入:10000000輸出:664579樣例1:輸入:10000輸出:1229樣例2:輸入:1000000輸出:78498var s,k,n,i,f:longint;begin readln(k); s:=0; for n:=2 to k d

9、o begin f:=0; for i:=2 to trunc(sqrt(n) do if n mod i=0 then begin f:=1; break; end; if f=0 then inc(s); end; writeln(s);end.一般算法var n,i,j:longint; s:int64; a:array1.10000000 of 0.1;0:不是,1:是 begin readln(n); for i:=1 to n do ai:=1; a1:=0; for i:=2 to trunc(sqrt(n) do if ai=1 then begin j:=2*i; while

10、 jaj then 交換ai和aj begin t:=ai; ai:=aj; aj:=t; end; const maxn=100;var a:array1.maxn of integer; n,i,j,t:integer;begin readln(n); for i:=1 to n do read(ai); for i:=1 to n-1 do for j:=i+1 to n do if aiaj then begin t:=ai; ai:=aj; aj:=t; end; for i:=1 to n-1 do write(ai, ); writeln(an);end.7、校門外的樹【問題描述

11、】 某校大門外長度為L的馬路上有一排樹,每兩棵相鄰的樹之間的間隔都是1米。我們可以把馬路看成一個數軸,馬路的一端在數軸0的位置,另一端在L的位置;數軸上的每個整數點,即0,1,2,L,都種有一棵樹。由于馬路上有一些區域要用來建地鐵。這些區域用它們在數軸上的起始點和終止點表示。已知任一區域的起始點和終止點的坐標都是整數,區域之間可能有重合的部分。現在要把這些區域中的樹(包括區域端點處的兩棵樹)移走。你的任務是計算將這些樹都移走后,馬路上還有多少棵樹。【輸入】第一行有兩個整數L(1 = L = 10000)和 M(1 = M = 100),L代表馬路的長度,M代表區域的數目,L和M之間用一個空格隔

12、開。接下來的M行每行包含兩個不同的整數,用一個空格隔開,表示一個區域的起始點和終止點的坐標。【輸出】一行,這一行只包含一個整數,表示馬路上剩余的樹的數目。【樣例輸入】500 3150 300100 200470 471【樣例輸出】298var f:array0.10000 of integer; i,j,l,m,a,b,s:integer;begin readln(l,m); for i:=0 to l do fi:=1; for i:=1 to m do begin readln(a,b); for j:=a to b do fj:=0; end; for i:=0 to l do s:=s

13、+fi; writeln(s);end.8、排隊接水 有n個人排隊在一個水籠頭前接水,每個人的接水時間互不相等。找出一種n個人排隊接水的順序,使他們平均等待的時間最短。輸入: 第一行:n(tj then begin tem:=ti; ti:=tj; tj:=tem; tem:=numi; numi:=numj; numj:=tem; end; sum:=0; for i:=1 to n do sum:=sum+(n+1-i)*ti; writeln(sum/n:0:2); for i:=1 to n-1 do write(numi, ); writeln(numn);end.二、多維數組及應用

14、。當一維數組元素的類型也是一維數組時,便構成了二維數組。二維數組定義的一般格式:array下界1.上界1,下界2.上界2 of 元素類型;如:var a:array1.5,1.4 of integer;則表示a是二維數組,共有5*4=20個元素,它們是:a1,1a1,2a1,3a1,4a2,1a2,2a2,3a2,4a3,1a3,2a3,3a3,4a4,1a4,2a4,3a4,4a5,1a5,2a5,3a5,4對二維數組的輸入與輸出也可用二重循環來實現:輸入:for i:=1 to 5 do for j:=1 to 4 do read(ai,j);輸出:for i:=1 to 5 do beg

15、in for j:=1 to 4 do write(ai,j, ); writeln; end;數組初始化為0;for I:=1 to n do for j:=1 to n do aI,j:=0;或者:fillchar(a,sizeof(a),0);1、輸入班級中每個學生的數學、英語、物理成績,求出每個人的總分、以及各科的平均分。輸入:第一行:n(人數);以下n行:每行3個數分別代表數學、英語、物理成績。輸出:第一行:n個同學的總分。第二行:三科的平均分輸入:577 88 9989 78 9790 80 7068 95 7897 87 79輸出:264 264 240 241 263 84.2

16、 85.6 84.6 var a:array1.60,1.4 of integer; n,i,j:integer;begin readln(n); for i:=1 to n do for j:=1 to 3 do read(ai,j); for i:=1 to n do for j:=1 to 3 do ai,4:=ai,4+ai,j; for i:=1 to n do for j:=1 to 3 do an+1,j:=an+1,j+ai,j; for i:=1 to n do write(ai,4, );writeln; for i:=1 to 3 do writeln(an+1,i/n:0:1);end.2、輸出楊輝三角輸出楊輝三角的前N行(N=10)。樣例:輸入:4輸出:111121133114641var a:array1.100,1.100 of int64; n,i,

溫馨提示

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

評論

0/150

提交評論