exit 用法 pascal
vars,st:string;a:array[1..26]ofstring;c:array[1..26]ofboolean;ans,e,g,i,k,x,n:longint...
var
s,st:string;
a:array[1..26]of string;
c:array[1..26]of boolean;
ans,e,g,i,k,x,n:longint;
procedure del(var ss:string); //删除空格
begin
while pos(' ',ss)<>0 do delete(ss,pos(' ',ss),1);
end;
function f(l,r:longint):longint;
var
kh,fh,i:longint;
begin
if l>r then exit;
kh:=0;
fh:=0;
for i:=r downto l do
begin
if st[i]=')' then inc(kh) else
if st[i]='(' then dec(kh);
if kh=0 then
begin
if (st[i]in['+','-']) then begin fh:=i; break;end else
if (st[i]='*')and((fh=0)or(st[fh]in['*','^'])) then fh:=i else
if (st[i]='^')and(fh=0)then fh:=i;
end;
end;
if fh=0 then
begin
if (st[l]='(')and(st[r]=')') then exit(f(l+1,r-1)); // exit(f(...)) 这个用法啥子意思 就是exit 后面加个函数是啥子意思
if (st[r]=')')then exit(f(l,r-1));
if (st[l]='(')then exit(f(l+1,r));
if st[l]='a' then exit(x);
f:=0;
for i:=l to r do f:=f*10+ord(st[i])-ord('0');
end
else
begin
case st[fh]of
'+':exit((f(l,fh-1)+f(fh+1,r))mod 35111);
'-':exit((f(l,fh-1)-f(fh+1,r)+35111)mod 35111);
'*':exit((f(l,fh-1)*f(fh+1,r))mod 35111);
'^':begin
f:=1;
e:=f(l,fh-1);g:=f(fh+1,r);
for i:=1 to g do f:=f*e mod 35111;
end;
end;
end;
end; 展开
s,st:string;
a:array[1..26]of string;
c:array[1..26]of boolean;
ans,e,g,i,k,x,n:longint;
procedure del(var ss:string); //删除空格
begin
while pos(' ',ss)<>0 do delete(ss,pos(' ',ss),1);
end;
function f(l,r:longint):longint;
var
kh,fh,i:longint;
begin
if l>r then exit;
kh:=0;
fh:=0;
for i:=r downto l do
begin
if st[i]=')' then inc(kh) else
if st[i]='(' then dec(kh);
if kh=0 then
begin
if (st[i]in['+','-']) then begin fh:=i; break;end else
if (st[i]='*')and((fh=0)or(st[fh]in['*','^'])) then fh:=i else
if (st[i]='^')and(fh=0)then fh:=i;
end;
end;
if fh=0 then
begin
if (st[l]='(')and(st[r]=')') then exit(f(l+1,r-1)); // exit(f(...)) 这个用法啥子意思 就是exit 后面加个函数是啥子意思
if (st[r]=')')then exit(f(l,r-1));
if (st[l]='(')then exit(f(l+1,r));
if st[l]='a' then exit(x);
f:=0;
for i:=l to r do f:=f*10+ord(st[i])-ord('0');
end
else
begin
case st[fh]of
'+':exit((f(l,fh-1)+f(fh+1,r))mod 35111);
'-':exit((f(l,fh-1)-f(fh+1,r)+35111)mod 35111);
'*':exit((f(l,fh-1)*f(fh+1,r))mod 35111);
'^':begin
f:=1;
e:=f(l,fh-1);g:=f(fh+1,r);
for i:=1 to g do f:=f*e mod 35111;
end;
end;
end;
end; 展开
展开全部
exit 是退出当前程序块。即在任何子程序中执行 exit , 那么将退出这个子程序。如果是在主程序中执行 exit,那么将退出整个程序。
相当于 goto 这个程序块的末尾的 end 。
例如:试除法判断素数时,一旦整除,就把函数值赋为false ,然后exit。
注意:类似上面,exit 也是只对当前这一个子程序产生作用,如果多重嵌套子程序,那么其中某个子程序执行了exit 以后,将返回到调用它的那个语句的下一个语句。
例如:
function f(x:longint):longint;
var
begin
if ... then exit(f(x+1)); <--这里指f:=f(x+1);把f(x+1)当作答案退出.
...
end;
你那个程序中的exit(f(l+1,r-1))中的f(l+1,r-1)是你那个函数.
懂不懂?不懂问我
相当于 goto 这个程序块的末尾的 end 。
例如:试除法判断素数时,一旦整除,就把函数值赋为false ,然后exit。
注意:类似上面,exit 也是只对当前这一个子程序产生作用,如果多重嵌套子程序,那么其中某个子程序执行了exit 以后,将返回到调用它的那个语句的下一个语句。
例如:
function f(x:longint):longint;
var
begin
if ... then exit(f(x+1)); <--这里指f:=f(x+1);把f(x+1)当作答案退出.
...
end;
你那个程序中的exit(f(l+1,r-1))中的f(l+1,r-1)是你那个函数.
懂不懂?不懂问我
Sigma-Aldrich
2018-06-11 广告
2018-06-11 广告
Duolink PLA技术可通过同一个实验即可完成对蛋白质互作及其修饰的检测、定量以及确定细胞定位等。Duolink基于原位PLA技术(即邻位连接分析技术),可以帮助您在内源蛋白质表达过程中进行该分析。...
点击进入详情页
本回答由Sigma-Aldrich提供
展开全部
在Pascal中,exit可用在自定义函数中或主程序中,以下为详细说明:
自定义函数中的exit:
在自定义函数中,exit的作用是返回函数的值,如下代码:
var a:longint;
function f(a:longint):longint;
begin
exit(a+2) //返回函数的值a+2
end;
begin
readln(a);
writeln(f(a)); //调用函数f()
end.
样例输入:
10
输出:
12
在自定义函数f()中,利用exit来返回该函数的值a+2。
主程序中的exit:
在主程序中,exit的作用是结束程序,如下代码:
var a:longint;
begin
readln(a);
writeln(a+1);
exit;
writeln(a+2);
end.
样例输入:
10
输出:
11
在输出时没有输出12,即没有运行writeln(a+2);这一语句,因为当程序运行到exit语句时,就直接结束了程序,exit后面的代码不会执行。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
先运行括号里的程序,当此程序运行完后退出其所在子程序!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询