一維陣列上機練習

2022-12-03 13:27:03 字數 5027 閱讀 3672

基本練習:(採用檔案輸入輸出)

1.輸入一串小寫字母(以"."為結束標誌),統計出每個字母在該字串**現的次數(若某字母不出現,則不要輸出) ,例:

輸入:aaaabbbccc.

輸出:a:4

b:3c:3

規定: 檔名: 輸出檔案:輸出檔案

程式:var a:array['a'..'z'] of integer;

n:char;

begin

assign(input,』tongji,in』);reset(input);

assign(output,』

read(n);

while n<>'.' do

begin

inc(a[n]);

read(n);

end;

for n:='a' to 'z' do

if a[n]<>0 then writeln(n,':',a[n]);

close(input);close(output);

end.

2.輸入乙個不大於32767(integer)的正整數n,將它轉換成乙個二進位制數,例如:

輸入:100

輸出:1100100

規定: 檔名: 輸出檔案:輸出檔案

程式:var

a:array[1..16] of integer;

b,c,d,e:integer;

begin

assign(input,'');reset(input);

assign(output,'');rewrite(output);

readln(b);

if b>=0 then write(b,'=')

else write(b,'= -');

b:=abs(b);d:=0;

while b>0 do

begin

inc(d);

a[d]:=b mod 2;

b:=b div 2;

end;

for e:=d downto 1 do write(a[e]);

writeln;

readln;

close(input);close(output);

end.

提高練習:(採用檔案輸入輸出)

*3.輸入乙個由10個整數組成的序列,其中序列中任意連續三個整數都互不相同,求該序列中所有遞增或遞減子串行的個數,例如:

輸入:1 10 8 5 9 3 2 6 7 4

輸出:6

對應的遞增或遞減子串行為:

1 10

10 8 5

5 99 3 2

2 6 7

7 4規定: 檔名: 輸出檔案:輸出檔案

const n=10;

var a:array[1..n]of integer;

i,k,x:integer;

begin for i:=1 to n do

read(a[i]);

i:=2;

x:=1;

if a[i-1]<=a[i] then k:=1 else k:=2;

while i begin inc(i);

case k of

1: if a[i-1]>a[i] then begin k:=2;inc(x);end;

2: if a[i-1]end;

end;

writeln(x);

end.

*4.輸入n個數,將這n個數按從小到大的順序顯示出來;

規定: 檔名: 輸出檔案:輸出檔案

vara:array[1..100000000] of integer;

b,c,d,i,z:longint;

begin

assign(input,' ');reset(input);

assign(output,' ');rewrite(output);

readln(i讀入輸入個數

for i:=1 to i do read(a[i迴圈讀入,放入陣列

for c:=1 to i do

begin

for b:=(c+1) to i do begin

if a[c]>a[b] then

begin

a[c]:=a[c] xor a[b];

a[b]:=a[c] xor a[b];

a[c]:=a[c] xor a[b];

end;

end;

end;

for z:=1 to i do

write(a[z], ' ');

close(input);close(output);

end.

**5.猴子選大王:有n只猴子圍成一圈,每只猴子各乙個從1到n中的依次編號,打算從中選出乙個大王;經過協商,決定出選大王的規則:從第乙個開始迴圈報數,數到m的猴子出圈,最後剩下來的就是大王。

要求:從鍵盤輸入n、m,程式設計計算哪乙個編號的猴子成為大王

樣例:輸入:7 3

輸出:4

輸入:5 2

輸出:3

待解:輸入:999 15

輸出:?

規定: 檔名: 輸出檔案:輸出檔案

var n,m,i,j,k,l,t:longint;

a:array[0..100000] of longint;

f:array[0..100000] of boolean;

begin

readln(n,m);

for i:=1 to n do

begin a[i]:=i; f[i]:=true; end;

j:=0; k:=0;

while j<>n-1 doj 為已經篩除的個數

begin

t:=0;

while t<>m do

begin迴圈報數

if f[k] then inc(tt為現在報數的號數

l:=k;

if k<>n then inc(k) else k:=1;//檢測編號是否大於總人數

end;

f[l]:=false;

inc(j);

end;

for i:=1 to n do

if f[i] then begin writeln(i); halt; end;

end.

排序4.1 簡單排序

1.選擇排序

選擇排序的基本思想是:

對待排序的記錄序列進行n-1遍的處理,第1遍處理是將l[1..n]中最小者與l[1]交換位置,第2遍處理是將l[2..n]中最小者與l[2]交換位置,......

,第i遍處理是將l[i..n]中最小者與l[i]交換位置。這樣,經過i遍處理之後,前i個記錄的位置就已經按從小到大的順序排列好了。

例1:輸入序列資料按非減順序輸出.

程式如下:

program xzpx;

const n=7;

var a:array[1..n] of integer;

i,j,k,t:integer;

begin

write('enter date:');

for i:= 1 to n do read(a[i]);

writeln;

for i:=1 to n-1 do

begin

k:=i;

for j:=i+1 to n do

if a[j]i then

begin t:=a[i];a[i]:=a[k];a[k]:=t;end;

end;

write('output data:');

for i:= 1 to n do write(a[i]:6);

writeln;

end.

2.插入排序

插入排序的基本思想:經過i-1遍處理後,l[1..i-1]己排好序。

第i遍處理僅將l[i]插入l[1..i-1]的適當位置p,原來p後的元素一一向右移動乙個位置,使得l[1..i]又是排好序的序列。

例2:輸入序列資料按非減順序輸出.

程式1:

program crpx;

const n=7;

var a:array[1..n] of integer;

i,j,k,t:integer;

begin

write('enter date:');

for i:= 1 to n do read(a[i]);

writeln;

for i:=2 to n do

begin

k:=a[i];j:=i-1;

while (k0) do

begin a[j+1]:=a[j];j:=j-1 end;

a[j+1]:=k;

end;

write('output data:');

for i:= 1 to n do write(a[i]:6);

writeln;

end.

3.氣泡排序

氣泡排序又稱交換排序其基本思想是:對待排序的記錄的關鍵字進行兩兩比較,如發現兩個

記錄是反序的,則進行交換,直到無反序的記錄為止。

例:輸入序列資料按非減順序輸出。

程式1:

program mppx;

const n=7;

var a:array[1..n] of integer;

i,j,k,t:integer;

begin

write('enter date:');

for i:= 1 to n do read(a[i]);

for i:=1 to n -1 do

for j:=n downto i+1 do

if a[j-1]

begin t:=a[j-1];a[j-1]:=a[j];a[j]:=t end;

write('output data:');

for i:= 1 to n do write(a[i]:6);

writeln;

end.

實驗十二一維陣列

1 熟練掌握使用一維陣列程式設計。2 熟練掌握排序演算法。12 1 除錯示例,輸入乙個正整數n 0源程式 有錯誤的程式 errora include void main if i n a n x for i 0 i n 1 i printf d a i putchar n 執行結果 改正後程式的執行...

C語言陣列上機實驗報告

c語言程式設計實驗報告 1 實驗目的 1.熟練掌握一維陣列,二維陣列的定義,初始化和輸入輸出方法 2.熟練掌握字元陣列和字串函式的使用 3.掌握和陣列有關的常用演算法 如查詢排序等 2 實驗內容 4 程式設計實現 折半查詢 的過程。折半查詢的處理過程 在乙個資料已排好序的陣列中,首先比較要查詢的值與...

實驗8二維陣列

一 實驗目的 1 掌握二維陣列的定義 賦值和輸入輸出方法 2 學會如何應用二維陣列解決問題 二 實驗內容 1 將兩個給定的距陣 3 3 相乘得到另乙個距陣並將其列印出來。其中提示 1 定義三個陣列a 3 3 b 3 3 c 3 3 先分別輸入a b兩個陣列的元素值。2 計算則應設計乙個三重巢狀迴圈,...