求12+22+32+…+1002

var
a:integer;
sum:longint;

begin
a:=12;
sum:=0;
while a<1002 do
begin
sum:=sum+a;
a:=a+2
end;
writeln('Sum:',sum);
readln;
end.

求s=1+1/2+1/3+…+1/100

var
sum:real;
a:integer;

begin
sum:=0;
for a:=1 to 100 do
begin
sum:=sum+1/a;
end;
writeln('Sum:',sum);
readln;
end.

计算100之内所有的奇数之和。

var
a:integer;
sum:longint;

begin
sum:=0;
for a:=1 to 100 do
begin
if (a mod 2 <>0) then
begin
sum:=sum+a
end;
end;
writeln('Sum:',sum);
readln;
end.

计算n!,其中n由键盘输入。 

var
a,b,n:longint;
begin
n:=1;
write('Enter A and A>=1');
readln(a);
for b:=1 to a do
begin
n:=n*b;
end;
writeln('N!:',n);
readln;
end.

求10个数中的最大值和最小值。

var
a:array[1..10] of int64;
i,max,min:int64;
begin
for i:=1 to 10 do
    begin
    write('Input a[',i,']:');
    readln(a[i]);
    end;
max:=a[1];
min:=a[1];
for i:=1 to 10 do 
    begin
    if max <= a[i] then max:=a[i];
    if min >= a[i] then min:=a[i];
end;
writeln('max is ',max,' ':4,'min is',min);
readln;
end.

按字母表的顺序,从字母A到Z顺序打印输出。

var
a:integer;
begin
for a:=65 to 90 do
begin
write(chr(a));
end;
readln();
end.

求菲波拉契数列a0,a1,a2,……a20。 

a0=0,a1=1,a2=a1+a0,a3=a2+a1,……, an=an-1+an-2;如0,1,1,2,3,5,8,13,21,……

var
a:array[0..20] of longint;
i,i1,i2:integer;

begin
write('Enter a[0] and a[1]');
readln(a[0],a[1]);
for i:=2 to 20 do
begin
i1:=i-1;
i2:=i-2;
a[i]:=a[i1]+a[i2];
end;
write('a[20]:',a[20]);
readln;
end.

用WHILE循环完成如下3题:

①求s=1+2+3+4+…+10

var
a,sum:integer;
begin
a:=1;
sum:=0;
while a<=10 do
begin
sum:=sum+a;
a:=a+1;
end;
writeln('Sum :',sum);
readln;
end.

②求s=1+1/2+1/3+…+1/100

var
sum:real;
a:integer;

begin
sum:=0;
a:=1;
while a<=100 do
begin
sum:=sum+1/a;
a:=a+1;
end;
writeln('Sum:',sum);
readln;
end.

③计算n!,其中n由键盘输入。

var
a,b,n:int64;
begin
n:=1;
b:=1;
write('Enter A and A>=1');
readln(a);
while b<=a do
begin
n:=n*b;
b:=b+1;
end;
writeln('N!:',n);
readln;
end.

输入任一的自然数A, B, 求A , B的最小公倍数。

label 1,2;
var
A,B : int64;
N : int64;

begin
1:
write('Enter A and B');
readln(a,b);
N:=1;
if (a<=0) or (b<=0) then
begin
writeln('sorry,wrong number');
goto 1;
end;

while true do
begin
if (N mod A =0) and (N mod B =0) then
    begin
    goto 2;
    end;
N:=N+1;
end;
2:
writeln('The Number is ',N);
readln
end.

小球从100高处自由落下,着地后又弹回高度的一半再落下。求第20次着地时, 小球共通过多少路程?

var
a,b,sum:real;

begin
sum:=0;
a:=100;
b:=1;
while b<=20 do
begin
sum:=sum+a;
a:=a/2;
sum:=sum+a;
b:=b+1;
end;
writeln('The way is ',sum);
readln;
end.

Faibonacci数列前几项为: 0,1,1,2,3,5,8,…,其规律是从第三项起, 每项均等于前两项之和。求前30项,并以每行5个数的格式输出。

var
a:array[1..30] of longint;
i:integer;

begin
a[1]:=0;
a[2]:=1;
i:=3;
while i<=30 do
begin
a[i]:=a[i-1]+a[i-1];
i:=i+1;
end;
i:=1;
while i<=26 do
begin
writeln(a[i],' ':4,a[i+1],' ':4,a[i+2],' ':4,a[i+3],' ':4,a[i+4]);
i:=i+5;
end;
readln;
end.

鸡兔同笼,头30,脚90, 求鸡兔各几只?

var
a,b:integer;
begin
b:=(90-30*2) div 2;
a:=30-b;
writeln('Number of C is ',a,' Number of R is ',b);
readln;
end.

用REPEAT循环完成如下3题:

①求s=1+2+3+4+…+10

var
s,i:integer;
begin
i:=1;
s:=0;
repeat
s:=s+i;
i:=i+1;
until i=11;
write('S: ',s);
readln;
end.

②求s=1+1/2+1/3+…+1/100

var
s,i:real;
begin
s:=0;
i:=1;
repeat
s:=s+1/i;
i:=i+1;
until i=101;
write('S is ',s);
readln;
end.

③计算n!,其中n由键盘输入。

var
n,i,f:int64;
begin
write('Input N Please:');
readln(n);
i:=2;
f:=1;
repeat
f:=f*i;
i:=i+1;
until i=n+1;
writeln('N! is ',f);
readln;
end.

读一组实数,遇零终止,打印其中正、负数的个数及各自的总和。

var
i,sumf,sumz:real;
nf,nz:integer;
begin
sumf:=0;
sumz:=0;
nf:=0;
nz:=0;
    repeat
        write('Input A Number : ');
        readln(i);
        if i>0 then
            begin
            sumz:=sumz+i;
            nz:=nz+1;
            end;
        if i<0 then
            begin
            sumf:=sumf+i;
            nf:=nf+1;
            end;
        writeln('ZhengShuHe:',sumz,' ':4,'ZhengShuGeShu:',nz);
        writeln('FuShuHe:',sumf,' ':4,'FushuGeShu:',nf);
    until i=0;
writeln('Shutdown');
writeln('ZhengShuHe:',sumz,' ':4,'ZhengShuGeShu:',nz);
writeln('FuShuHe:',sumf,' ':4,'FushuGeShu:',nf);
readln;
end.

用辗转相除法求两个自然数的最大公约数。

Program ex4_13;
var  m,n,r  :  integer;
begin
  readln(m,n);
    repeat
        r:=m mod n;
        m:=n;
        n:=r;
    until r=0;
  writeln(m);
  readln;
end.

找出被2、3、5除时余数为1的最小的十个数。

var
a,b,c,d:integer;


begin
a:=10;
repeat
b:=a mod 2;
c:=a mod 3;
d:=a mod 5;
a:=a+1;
until (b=1) and (c=1) and (d=1);
writeln('The Number Is ',a);
readln;
end.

将一根长为369cm的钢管截成长为69cm和39cm两种规格的短料。在这两种规格的短料至少各截 一根的前提下, 如何截才能余料最少。

var
  l, min, remain, x, a: Integer;
begin
  l := 369 - 69 - 39;
  min := l;
  x := 0;
  a := 0;
  repeat
    remain := (l - 69 * x) mod 39;
    if (remain >= 0) and (remain < min) then
    begin
      min := remain;
      a := x;
    end;
    Inc(x);
  until remain < 0;
  Inc(a);
  x := (369 - min - 69 * a) div 39;
  Writeln('69cm:', a, '; 39cm:', x, '; Remain:', min);
  Readln;
end.

求s=11+22+33+..+NN

label 1;
var
i,n:integer;
s:int64;
begin
1:
s:=0;
write('Input N please :');
readln(n);
if (n<=9) and (n>=1) then
    begin
for i:=1 to n do s:=s+i*11;
    end
else
begin
writeln('Erorr Sorry GO BACK');
goto 1;
end;
writeln('S=',s);
readln;
end.

求s=1+1/2!+1/3!+…+1/10!

var
i:integer;
b:int64;
a,s:real;


begin
b:=1;
for i:=1 to 10 do
begin
b:=b*i;
a:=1/b;
s:=s+a;
end;
writeln('S=',s);
readln;
end.  

Pascal:循环结构的程序设计,习题
https://Mundnaity.moe/post/pascal_chap4_ex
作者
申酉和风
发布于
2016-09-24
许可协议