1:从键盘输入10个数,将这10个数逆序输出,并求这10个数的和,输出这个和。
program p1;
var
a:array [1..10] of integer;
i,s:integer;
begin
for i:=1 to 10 do read(a[i]);
for i:=10 downto 1 do write(a[i],' ');
writeln;
s:=0;
for i:=1 to 10 do s:=s+a[i];
writeln('s=',s);
end.
例2:从键盘输入10个数,将这10个数从大到小的顺序输出。
program p2;
Var n:array[1..10] of integer;
i,j,t:integer;
Begin
For i:=1 to 10 do Readln(n[i]);
For i:=1 to 9 do begin
For j:=i+1 to 10 do begin
If n[i]<n[j] then begin
T:=n[i];
n[i]:=n[j];
n[j]:=t;
End;
End;
End;
For i:=1 to 10 do begin
Write(n[i]:5);
End;
End.
例3:用筛法求100以内的素数(质数)。
分析:素数是除了1和它本身以外没有其它约数的数。用筛法求素数的方法是:用质数筛去合数:从第一个素数2开始,
把它的倍数去掉;这样2以后的第一个非0数就一定也是素数,把它的倍数也删了……重复这个删数过程,直到在所找到
的素数后再也找不到一个非0数。把所有非0数输出。
program p3;
var
a:array [1..100] of integer;
i,j,k:integer;
begin
for i:=1 to 100 do a[i]:=i;
a[1]:=0;i:=2;
while i<=100 do
begin
k:=i;
while k<=100 do
begin
k:=k+i;
a[k]:=0;
end;
{————上面将所有a[i]的倍数清0}
i:=i+1;
while a[i]=0 do i:=i+1;
{————查找接下来的第一个非0数}
end;
for i:=1 to 100 do if a[i]<>0 then write(a[i],' ');
end.
6竞赛小组共有5位同学,这学期每位同学共参与了三项比赛,请统计每位同学的平均分。
分析:定义一个5行3列的二维数组来存放这些成绩。定义一个5个元素的一维数组来存放平均分。
program p1;
var
a:array [1..5,1..3] of integer;
b:array [1..5] of real;
i,j:integer;
begin
for i:=1 to 5 do
begin
for j:=1 to 3 do read(a[i,j]);
readln;
end;
{————从键盘上读入5个同学的三次竞赛成绩}
for i:=1 to 5 do b[i]:=0;
{————先将平均分数组清0}
for i:=1 to 5 do
begin
for j:=1 to 3 do b[i]:=b[i]+a[i,j];{————计算总分}
b[i]:=b[i]/3;{————计算平均分}
end;
for i:=1 to 5 do write(b[i]:5:1);
{————输出平均分}
writeln;
end.
7:输入一串字符,字符个数不超过100,且以"."结束。 判断它们是否构成回文。
分析:所谓回文指从左到右和从右到左读一串字符的值是一样的,如12321,ABCBA,AA等。先读入要判断的一串字符(放入数组letter中),并记住这串字符的长度,然后首尾字符比较,并不断向中间靠拢,就可以判断出是否为回文。
源程序如下:
program ex5_5;
var
letter : array[1..100]of char;
i,j : 0..100;
ch : char;
begin
{读入一个字符串以'.'号结束}
write('Input a string:');
i:=0;read(ch);
while ch<>'.' do
begin
i:=i+1;letter[i]:=ch;
read(ch)
end;
{判断它是否是回文}
j:=1;
while (j<i)and(letter[j]=letter[i])do
begin
i:=i-1;j:=j+1;
end;
if j>=i then writeln('Yes.')
else writeln('No.');
end.
浙公网安备 33010602011771号