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.


 

posted on 2008-11-30 09:58  sandboy  阅读(307)  评论(0)    收藏  举报