完善程序

1.三角形内切圆的面积

题目描述: 给出三角形三边的边长,求此三角形内切圆(如下图所示,三角形的内切圆是和三角形三边都相切的圆)的面积。

输入: 三个正实数abc(满足a+b>cb+c>ac+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.(字符串替换)给定一个字符串SS仅包含大小写字母),下面的程序将S中的每个字母用规定的字母替换,并输出S经过替换后的结果。程序的输入是两个字符串,第一个字符串是给定的字符串S,第二个字符串S’由26个字母组成,它是a~z的任一排列,大小写不定,S’规定了每个字母对应的替换字母:S’中的第一个字母是字母Aa的替换字母,即 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.

 

posted on 2009-01-13 11:59  sandboy  阅读(442)  评论(0)    收藏  举报