This presentation is the property of its rightful owner.
1 / 24

Mod 运算 符号与被除数同 Div 运算 符号 与分子分母同时有关系 PowerPoint PPT Presentation

Mod 运算 符号与被除数同 Div 运算 符号 与分子分母同时有关系. -9 mod 2=-1 mod -1=1 -9 div 2 =-4 9 div -1 =-4. 6. 7. Maxsize-1. 5. 0. 4. 1. rear. front. 3. 2. program dw; var a:array[0..7] of integer; f,r,i,x,t,j:integer; begin f:=0;r:=0; for i:=1 to 15 do begin

Mod 运算 符号与被除数同 Div 运算 符号 与分子分母同时有关系

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.

- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript

Mod 运算 符号与被除数同

Div 运算 符号 与分子分母同时有关系

• -9 mod 2=-1

• mod -1=1

• -9 div 2 =-4

• 9 div -1 =-4

6

7

Maxsize-1

5

0

4

1

rear

front

3

2

program dw;

var a:array[0..7] of integer;

f,r,i,x,t,j:integer;

begin

f:=0;r:=0;

for i:=1 to 15 do

begin

if x<>-1 then begin inc(r);a[r mod 8]:=x end

else inc(f);

end;

for i:=f+1 to r do

begin

j:=i mod 8;

write(a[j]);

inc(t);

end;

writeln;

writeln(t);

writeln(r);

writeln(f);

end.

1>3

(1>3) or (5=5)

三、栈的主要运算

（1）栈的初始化操作（栈置空）

top：＝0

（2）判断栈空函数

function sempty(stack:arraytype):boolean;

begin

sempty:=(top=0);

end;

（3）判断栈满函数

function sfull(stack:arraytype):boolean;

begin

sfull:=(top=n);

end;

三、栈的主要运算

sfull(stack)=true

（4）进栈的操作过程（压栈push）

procedure push(x:integer);

begin

if sfull(stack)

then writeln(‘Stack full!’)

else

begin

top:=top+1; stack[top]:= x；

end；

end;

表达式变换

历届初赛题（选）

(9tg)表达式(1+34)*5-56／7的后缀表达式为( )

A. 1+34*5-56／7 B . -*+1 34 5／56 7

C. 1 34+5*56 7／-D. 1 34 5*+56 7／-

E. 1 34+5 567-*／

a+b*c-(d+e)

请你试一试

• 将下列中缀表达式转换成后缀表达式：

16-9*（4+3）

2*(x+y)/(1-x)

(25+8)*(4*(4+7)+7)

16□9□4□3□+*-

2□x□y□+*1□x□-/

25□8□+4□4□7□+*7□+*

历届初赛题（选）

(9tg)表达式(1+34)*5-56／7的后缀表达式为( )

A. 1+34*5-56／7 B . -*+1 34 5／56 7

C. 1 34+5*56 7／-D. 1 34 5*+56 7／-

E. 1 34+5 567-*／

top

top

top

(25+8)*(4*(4+7)+7)

25 8 + 4 4 7 + * 7 + *

33

8

25

【问题描述】根据后缀算术表达式计算其值，注意相邻的数值型数据间用空格隔开，数据与运算符间也用空格隔开，表达式以@结束。计算的值保留两位小数，并对第三位四舍五入。

【输入】 输入一行以@结束的表达式

【输出】结果

【样例】

①建立一个栈，放操作数

②从左到右读入表达式，若为数，则将它转换为数值后入栈；若为运算符，则从栈中弹出两个数计算，并将结果入栈。

③若表达式未读完，就重复②。

④最后栈顶的数值（栈中应只剩栈顶元素）则为结果。

program track;

var t1:array[1..10000] of real;

top:integer; ch:char; st:string; f:boolean;

x:real;

begin

ch:=''; top:=0; f:=false;

while ch<>'@' do

begin

while (ch in ['0'..'9','.']) do

end;

if f then

begin inc(top); val(st,x); t1[top]:=x; f:=false; end;

if ch in ['+','-','*','/'] then

begin

case ch of

'+':t1[top-1]:=t1[top-1]+t1[top];

'-':t1[top-1]:=t1[top-1]-t1[top];

'*':t1[top-1]:=t1[top-1]*t1[top];

'/':t1[top-1]:=t1[top-1] / t1[top];

end;

dec(top);

end;

end;

write(round(t1[1]*100)/100:0:2);

end.

16 4.5 + 5 /@

25 8 + 4 4 7 + * 7 + *@

栈的应用二

PRKJ＃＃OGRAN＃MLX；

VAR＠CONSTN：＃＝10；

PROGRAMLX；

CONSTN＝10；

【分析】通过栈操作模拟程序员的输入过程；

PRKJ＃＃OGRAN＃MLX；

VAR＠CONSTN：＃＝10；

PROGRAMLX；

CONSTN＝10；

{栈}

PRKJ＃＃OGRAN＃MLX；

VAR＠CONSTN：＃＝10；

{栈指针}

【数据结构】

type stack=array[1..100] of char;

Var s:stack；

top：0..100;

ch:char； i:integer;

procedure setnull(var s:stack); {置栈为空}

begin

top:=0

end;

procedure pop(var s:stack); {出栈}

begin

if top=0 then writeln(‘underflow’)

else top:=top -1；

end;

procedure push(var s:stack;x:char); {入栈}

begin

if top=100 then writeln(‘overflow’)

else begin top:=top+1；s[top]:=x; end;

end；

{eof函数，判断文件是否结束}

begin{主程序}

assign(input,’program.in’);reset(input);

assign(output,’program.out’);rewrite(output);

while not eof do

begin

setnull(s);

while not eoln do

begin

case ch of

‘#’:pop(s);

‘@’:setnull(s)

else push(s,ch)

end;

end;

for i:=1 to top do write(s[i]);

writeln；

end ;

close(input);close(output);

end.

{eoln函数，判断一行是否结束}

{出栈}

{置栈为空}

PRKJ＃＃OGRAN＃MLX；

VAR＠CONSTN：＃＝10；

{入栈}

{输出}

PROGRAMLX；

CONSTN＝10；

• 2010tgdx1.元素R1、R2、R3、R4、R5入栈的顺序为R1、R2、R3、R4、R5。如果第1个出栈的是R3，那么第5个出栈的可能是(ACD )。A.R1         B.R2         C.R4         D.R5

• 2008tg6．设栈S的初始状态为空，元素a，b，c，d，e，f依次入栈，出栈顺序为b，d，c，f，e，a那么栈容量至少应该是（D）。A．6 B．5 C．4 D．3 E．2

• 3. 2007tg 7. 地面上有标号为A、B、C的3根细柱, 在A柱上放有10个直径相同中间有孔的圆盘, 从上到下次依次编号为1, 2, 3, ……，将A柱上的部分盘子经过B柱移入C柱, 也可以在B柱上暂存。如果B柱上的操作记录为：“进，进，出，进，进，出，出，进，进，出，进，出，出”。那么, 在C柱上, 从下到上的盘子的编号为（ D ）。A. 2 4 3 6 5 7 B. 2 4 1 2 5 7 C. 2 4 3 1 7 6

• D. 2 4 3 6 7 5 E. 2 1 4 3 7 5

（8tg）设栈S和队列Q的初始状态为空,元素e1,e2,e3,e4,e5,e6依次通过钱S,一个元素出栈后即进入队列Q,若出队的顺序为e2,e4,e3,e6,e5,e1,则钱S的容量至少应该为( ) 。A) 2 B) 3 C) 4 D) 5

(9tg_多项)已知元素(8，25，14，87，5l，90，6，19，20)，问这些元素以怎样的顺序进入栈，才能使出栈的顺序满足：8在5l前面；90在87后面；20在14后面；25在6前面；19在90后面。 ( )

A)20，6，8，51，90，25，14，19，87

B)51，6，19，20，14，8，87，90，25

C)19，20，90，7，6，25，5l，14，87

D)6，25，51，8，20，19，90，87，14

E)25，6，8，51，87，90，19，14，20

（13tg）地面上有标号为A、B、C的三根柱，在A柱上放有10个直径相同中间有孔的圆盘，从上到下依次编号为1，2，3……，将A柱上的部分盘子经过B柱移入C柱，也可以在B柱上暂存。如果B柱上的操作记录为“进、进、出、进、进、出、出、进、进、出、进、出、出”。那么，在C柱上，从下到上的编号为（ ）。

A．2 4 3 6 5 7 B．2 4 1 2 5 7 C．2 4 3 1 7 6 D．2 4 3 6 7 5

历届初比赛题(选)

B

D

D

(11tg_多项)设栈S的初始状态为空，元素a, b, c, d, e, f, g依次入栈，以下出栈序列不可能出现的有（ ）。

A. a, b, c, e, d, f, g B. b, c, a, f, e, g, d C. a, e, c, b, d, f, g

D. d, c, f, e, b, a, g E. g, e, f, d, c, b, a

(12tg_多项)设栈S的初始状态为空，元素a, b, c, d, e 依次入栈，以下出栈序列不可能出现的有（ ）。

A. a, b, c, e, d B. b, c, a, e, d

C. a, e, c, b, d D. d, c, e, b, a

(12tg ) 某个车站呈狭长形，宽度只能容下一台车，并且只有一个出入口。已知某时刻该车站状态为空，从这一时刻开始的出入记录为：“进，出，进，进，进，出，出，进，进，进，出,出”。假设车辆入站的顺序为1，2，3，……，则车辆出站的顺序为（ ）。 A. 1, 2, 3, 4, 5 B. 1, 2, 4, 5, 7 C. 1, 4, 3, 7, 6 D. 1, 4, 3, 7, 2 E. 1, 4, 3, 7, 5

C E

C

C

要将中缀表达式转化为等价的后缀表达式，须从左至右扫描中缀表达式，并用一个栈存放中缀表达式的“（”和暂时不能参与计算的运算符。

1、当读到数字直接送至后缀表达式中2、当读到运算符t时，a.将栈中所有优先级高于或等于t的运算符弹出，送到后缀表达式中； b.t进栈3、读到左括号时总是将它压入栈中4、读到右括号时，将靠近栈顶的第一个左括号上面的运算符全部依次弹出，送至后缀表达式后，再丢弃左括号。

5、中缀表达式读完后，若栈中还有运算符，则将栈中运算符全部依次弹出，送至后缀表达式。

6

9

4

3

+

*

-

5

+

#

6 9 4 3 +*-5 +

6-9*(4+3)+5#

+ 1

( 0

* 2

- 1

+ 1

+ 1

# -1