1. 【元旦摆花】(3+3+3+3=12分)
元旦快到了,红旗小学为了在校门口用红花和黄花排成一个29×29的鲜花方阵,需要计算红花和黄花各需要多少盆。摆花时规定最外层是红花,而且从外到内分别是一圈红花,一圈黄花,这样每层都是红花和黄花间隔。下面的图3展示的是5×5方阵摆花的样子。
下列程序用来统计红花和黄花的数量,并输出红花和黄花的数量。请完善程序。
program test7;
const n=29;
var
red_s,yellow_s,i,j:integer;
red:boolean;
begin
i:=n;
red_s:= 0 ;yellow_s:=0;
red:=true;
repeat
if red=true then
begin
red_s:=red_s+(i-1)*4;
red:= not(red) ;
end
else
begin
yellow_s:=yellow_s+(i-1)*4;
red:=not(red);
end;
i:=i-2;
until i=1;
if red=true then red_s:= red_s+1 else yellow_s:=yellow_s+1 ;
writeln('red flower=',red_s,' yellow flower=', yellow_s );
end.
2. 【一元一次方程求解】(3+3+3+4=13分)
数学中在求解形如ax+b=c的一元一次方程时,首先会移项(把b移到等号右边),然后利用算式x=(c-b)/a来计算出未知数x的值。
下列程序就是用来对形如ax+b=c的一元一次方程进行求解,其中,b、c可以是任意整数,而a则为不等于零的整数。而且规定,从键盘输入的一元一次方程的形式都为ax+b=c这样的格式(也可为ax-b=c的形式),方程输入时以字符形式保存到字符数组exp[ ]中(输入时,无论a,b为何值,它们的值都必须原样写在对应的位置上。如,a=1,b=0时,则方程应以“1x+0=c”的形式输入,而不能以“x=c”的形式输入),并且以“.”作为输入结束标志。请完善程序。
program test8;
var
str_a,str_b,str_c:string;
x,a,b,c,i,j,k,code:integer;
op,ch:char;
exp:array[1..20] of char;
begin
write('input expression:');
read(ch);i:=0;
repeat
i:=i+1;exp[i]:=ch;
read(ch);
until ch='.' ;
j:=1;
while exp[j]<>'x' do
begin
str_a:= str_a+exp[j] ;j:=j+1;
end;
j:=j+1;
op:=exp[j];
j:=j+1;
while exp[j]<>'=' do
begin
str_b:=str_b+exp[j];j:=j+1;
end;
j:=j+1;
for k:=j to i do str_c:=str_c+exp[k];
val(str_a,a,code);val(str_b,b,code);val(str_c,c,code);
if op='-' then b:=-b;
x:= (c-b) div a ;
writeln('x=',x);
end.