明明的隨機數(PASCAL)

2012-03-11 10:42 pm
底線部份不是很明白 能解說嗎?
var a:array[1..100] of integer;
b:array[1..1000] of integer;
s,i,n:integer;begin

assign(input,'random.in'); reset(input);
assign(output,'random.out'); rewrite(output);
readln(n);
for i:=1 to n do read(a[i]);
readln; for i:=1 to n do b[a[i]]:=1;
s:=0;
for i:=1 to 1000 do if b[i]=1 then inc(s);
writeln(s);
for i:=1 to 1000 do if b[i]=1 then write(i,' ');
writeln;
close(input);
close(output);
end.

回答 (1)

2012-03-12 12:32 am
✔ 最佳答案
assign(input,'random.in'); reset(input);
readln(n);
for i:=1 to n do read(a[i]);
readln;
// 以上行打開檔案把random數字讀入到array a 中,n為總行數
//根據補充資料推測,係n個同學每人的隨機數,由1-1000。
for i:=1 to n do b[a[i]]:=1;
以上行,b[]係另一個array,雖然沒有寫出initialize的指令,但可以假設b[1]至b[1000]都係存放數字0,當a[]中有出現的數字,才設為1
即係在數那一個random數曾出現。
假設剛才的random數有3和10,那麼b[3]和b[10]會係1,其餘為0,注意係重覆出現3和10,都係設為1,即係沒有數出現次數
s:=0;
for i:=1 to 1000 do if b[i]=1 then inc(s);
這個在數其有幾多個random數出現過。
以剛才例子,只有b[3]和b[10],s應該數得2
writeln(s); //顯示
for i:=1 to 1000 do if b[i]=1 then write(i,' ');
writeln;
這個列印出那一數字出現過,例子中應為
3 10



收錄日期: 2021-04-16 14:10:48
原文連結 [永久失效]:
https://hk.answers.yahoo.com/question/index?qid=20120311000051KK00393

檢視 Wayback Machine 備份