作业帮 > 综合 > 作业

pascal 让电脑产生10个随机数,算出它们的平均数,从小到大排列

来源:学生作业帮 编辑:拍题作业网作业帮 分类:综合作业 时间:2024/04/27 12:27:35
pascal 让电脑产生10个随机数,算出它们的平均数,从小到大排列
首先 可以用random函数生成10个随机数,再全部加起来,除以个数就是平均数了.从小到大排列可以用冒泡排序的方法.
Var
a:array[1..10]of Integer;
i,j:Integer;
Begin
Randomize; {在使用random函数前先打乱}
For i:=1 to 10 do
Begin
a[i]:=Random(100)+1; {生成一个1至101间的随机数}
j:=j+a[i]; {把数加进统计变量中算平均数}
End;
For i:=1 to 10 do {冒泡排序}
For j:=i+1 to 10 do
If a[i]>a[j] Then
Begin
a[i]:=a[i] xor a[j]; {交换两个数的位置}
a[j]:=a[i] xor a[j];
a[i]:=a[i] xor a[j];
End;
For i:=1 to 10 do
Write(a[i],' ');
Writeln;
Writeln(j/10:2:2);
Readln;
End.
_____________________
测试成功 望采纳
再问: 看不懂? 把意思也打下来,谢谢.
再答: 几个函数的意义: randomize是随机函数的生成器。 random是随机函数,random(100); 表示生成一个0到一百的随机数。 先用for语句循环10次,每次生成一个随机数,然后每个都加进累加变量里(用来求平均数,因为平均数的计算方法是 总数÷数量,这里把所有生成的数加起来,就是总数,数量是10,所以平均数是总数÷10) 冒泡排序法: 就是把一个数组看成一个水池,重(数大的)的会沉下去,轻(数小的)的会飘上来,所以只要比较相邻的两个数谁大谁小,再看情况调换(就是if语句中的部分)即可。 具体的冒泡排序可以到此网址看: http://baike.baidu.com/view/254413.htm#sub254413 for i:=1 to 10 do Write(a[i],' '); 这句就是表示循环十次,并把数组中的每个数据依次输出,比如: 循环的第一次:i的值是1,所以a[i]就表示a的第一个数据,也就是最小的(之前排序了) 循环的第二次:i的值是2,所以a[i]就表示a的第二个数据,也就是第二小的..... 以此类推,输出所有的10个数据。 Writeln;这句表示输出一行空行,就是表示新开一行,比如我这段代码: Write('ss'); Writeln; Write('aa'); 程序的最终输出结果就是 ss (开行 括号里是不会出现的,只是我的解释) aa Write(j/10:2:2); 这句表示输出j的值÷10,除不尽的保留两位小数。 ———————— 大概就是这样了, 望采纳..打的好辛苦呢!