求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