完善程序
1.三角形内切圆的面积
题目描述: 给出三角形三边的边长,求此三角形内切圆(如下图所示,三角形的内切圆是和三角形三边都相切的圆)的面积。
输入: 三个正实数a、b、c(满足a+b>c,b+c>a,c+a>b), 表示三角形三边的边长。
输出: 三角形内切圆的面积,结果四舍五入到小数点后面2位。
输入样例:
3 4 5
输出样例:
3.14
程序:
program program1;
var
a, b, c, r, s, t: real;
begin
read(a, b, c);
s := ( ① ) / 2;
t := ② (s * (s - a) * (s - b) * (s - c));
r := t / s;
writeln(3.1415927 * r * ③ : 0 : ④ );
end.
2.判断质数
题目描述:给出一个正整数,判断这个数是否是质数。
输入:一个正整数n(1 ≤ n ≤ 10000)。
输出:如果n是质数,输出"YES";否则,输出"NO"。
输入样例: 10
输出样例: NO
程序:
var
① : integer;
begin
read(n);
if n = 2 then writeln( ② )
else if ( ③ ) or (n mod 2 = 0) then writeln('NO')
else begin
i := 3;
while i * i <= n do begin
if ④ then begin
writeln('NO');
exit;
end;
i := i + 2;
end;
writeln('YES');
end;
end.
3.(全排列)下面程序的功能是利用递归方法生成从 1 到 n(n<10)的 n 个数的全部可能的排列(不一 定按升序输出)。例如,输入 3,则应该输出(每行输出 5 个排列):
123 132 213 231 321 312
程序:
Program ex401; Var
i,n,k:integer;
a:array[1..10] of integer;
count:longint; {变量 count 记录不同排列的个数,这里用于控制换行}
Procedure perm(k:integer);
var j,p,t:integer;
begin
if ① then
begin
inc(count);
for p:=1 to k do
write(a[p]:1);
write(' ');
if ( ② ) then writeln;
exit;
end;
for j:=k to n do
begin
t:=a[k]; a[k]:=a[j]; a[j]:=t;
③ ;
t:=a[k]; ④ ;
end
end;
begin
writeln('Entry n:');
read(n);
count:=0;
for i:=1 to n do a[i]:=i;
⑤ ;
end.
4、(求字符的逆序)下面的程序的功能是输入若干行字符串,每输入一行,就按逆序输出该行,最后键入-1终止程序。
请将程序补充完整。
Program j401;
type str1=string[100];
var line:str1; kz:integer;
procedure reverse(var s:str1);
var I,j:integer; t:char;
begin
i:=1; j:=length(s);
while (i<j) do begin
t:=s; s:=s[j]; s[j]:=t;
①;
②;
end;
end;
begin
writeln(‘continue? -1 for end.’);
readln(kz);
while ( ③ )do
begin
readln(line);
④ ;
writeln(line);
writeln(‘continue? -1 for end.’);
readln(kz);
end;
end.
2 2 3 3
2 -1 1 3
4 1 1 5
4 4 5 5
5.(字符串替换)给定一个字符串S(S仅包含大小写字母),下面的程序将S中的每个字母用规定的字母替换,并输出S经过替换后的结果。程序的输入是两个字符串,第一个字符串是给定的字符串S,第二个字符串S’由26个字母组成,它是a~z的任一排列,大小写不定,S’规定了每个字母对应的替换字母:S’中的第一个字母是字母A和a的替换字母,即 S中的A用该字母的大写替换,S中的a用该字母的小写替换;S’中的第二个字母是字母B 和b的替换字母,即S中的B用该字母的大写替换,S中的b用该字母的小写替换;… …以此类推。
Var change:string;
Str:string;
Procedure CheckChangeRule;
Var i:integer;
Begin
for i:=1 to 26 do begin
if ____①_____ then
change[i]:=chr(ord(change[i])-ord('A')+ord('a'));
end;
end;
Procedure ChangeString;
Var len,i:integer;
begin
len:=length(str);
for i:=1 to len do begin
if ______②______ then
begin
str[i]:=upcase(change[ord(str[i]-ord('A')+1]);
end;
else
begin
_______④_______
end;
end;
end;
begin
readln(str);
readln(change);
CheckChangeRule;
_______⑤_______
writeln(str);
end.
浙公网安备 33010602011771号