用PASCAL语言求回文数问题
发布网友
发布时间:2023-09-18 05:47
我来回答
共3个回答
热心网友
时间:2023-09-22 00:11
ls显然错。。比如1122,按照你的操作顺序的话就是1进1出2进2出,最终也能得到空栈,但1122显然不是回文。。
这个是我写的程序,因为不知道数据范围,所以用了string,如果数据太大的话建议改成ansistring。。
var a:char; s1,s2:string;
begin
a:=#0;
while a<>'#' do
begin
read(a);
if a='#' then break;
s1:=s1+a; s2:=a+s2;
end;
if s1=s2 then writeln('It is a palin word') else writeln('It is not a palin word');
end.
这个程序就是比较正序和倒序是否相同,如果相同则为回文,否则不为回文。。
没编译过,直接在上面拍的,不过相信不会错吧。。
热心网友
时间:2023-09-22 00:12
从左扫,将遇见的且跟栈顶不一样的元素压入栈,如果碰见跟栈顶元素一样的就把栈顶出栈,最后看一下栈是否为空,为空则为回文数,否则不
热心网友
时间:2023-09-22 00:12
这样是不是更准确?
var i,j:integer;
s,s1:string;
t:char;
a:array[1..200] of integer;
begin
s:='';
repeat
read(t);
if (t>='0')and(t<='9') then s:=s+t;
until t='#';
for i:=1 to length(s) do a[i]:=ord(s[i])-48;
for j:=length(s) downto 1 do s1:=s1+chr(a[j]+48);
if s=s1 then write('Yes') else write('No');
end.
pascal 回文数问题
先把符号保存好,要连位置也要保存。再求s1的倒序s2,求s1与s2的lcs,而此时的lcs即是回文数了,求的同时要用标记数组做好标记。输出时结合先前保存好的字符输出就行了。时间复杂度是O(n^2),要看你的除去符号之后的长度了。
pascal 回文数问题,急,50高分!
function check (m: mtype) :boolean;/*若整数数组m为回文数,则返回true,否则返回false*/ var i:integer;{ check←false;for i←1to do /*返回m非回文数标志*/ if m[i] ≠m[p-i+1] then exit;check←true; /*返回m为回文数标志*/ };{check} n进制加法运算 整数...
PASCAL 回文素数
这道题有两种思路:(1)用筛法求出1..1e8范围内的素数,然后判断每个素数是否是回文数。(2)生成1..1e8范围内的回文数,然后判断它是否是素数。思路1的复杂度是O(n),思路2的复杂度是O(√n*√n)=O(n),从复杂度来看两种思路没有差别。但思路1用筛法用素数要开O(n)的数组,在n=1e8是...
pascal:求1000以内二进制和十进制回文数的数
一位回文数有:1,2,…,9,共9个;二位回文数有:11,22,…,99,共9个;三位回文数有:101,111,…,999,共90个;四位回文数有:1001,1111,…,9999,共90个;五位回文数有:10001,10101,…,99999,共900个;六位回文数有:100001,101101,…,999999,共900个。到六位数为止,...
pascal编程100~999回文数
"回文数"是一种数字.如:98789, 这个数字正读是98789,倒读也是98789,正读倒读一样,所以这个数字 对于三位的回文数,其实就是个位、百位相同的数,可以用下面的程序输出:var i,j:integer;begin for i:=1 to 9 do for j:=0 to 9 do writeln(i,j,i);end.以上程序非常简单,结果也是正确...
求一个数是否为回文数的pascal程序,看了半天,不知哪错了,烦请高手指点...
longint;s:array[1..9] of integer;f:boolean;begin readln(t);i:=0;while t>0 do begin a:=t mod 10;inc(i);s[i]:=a;t:=t div 10;end;f:=true;for j:=1 to i do if s[j]<>s[i-j+1] then f:=false;if f=true then write('yes') else write('no');end....
pascal问题 用下面的程序求回文数得不到结果 哪有问题?
procedure h(var a1:integer;yes1:boolean);这个地方应该改成 procedure h(var a1:integer; var yes1:boolean);这样yes的值才能传出来。
pascal回文数问题
var n, tmp : longint; s1, s2 : string;function isPal(s : string) : boolean; var l, i : longint; begin l := length(s); for i := 1 to l div 2 do if s[i] <> s[l-i+1] then exit(false); exit(true); end;begin readln(n); str...
pascal 求100—2011之间的所有回文数和个数,如101、111……
var i,j,t,ans,l:integer;s:string;begin ans:=0;for i:=100 to 2011 do begin str(i,s);t:=1;l:=length(s);for j:=1 to l do if s[j]<>s[l+1-j]then begin t:=0;break;end;if t=1 then begin writeln(s);inc(ans);end;end;writeln(ans);end.最后输出总个数 你...
Pascal素数回文数
function plus:boolean;//处理fig类型的加1,从而生成比原回文数大一个的回文数(将中间数字+1,考虑向两边数字进位)。如果不能加一则返回假,否则返回真var i:integer;begin plus:=true; inc(w[w[0]]); for i:=w[0] downto 1 do if w[i]=10 then if i=1 then ...