判斷字串是否迴文(用free pascal解)

時間 2022-04-06 14:25:15

1樓:手機使用者

我說一下思路吧。

首先資料範圍是100000-999999的話,只要迴圈

for i:=100000 to 999999就可以了,這裡迴圈變數不要忘了要用longint

之後只要判斷素數和迴文數就可以了

可以用if 判斷迴文數(i)=false then flag=false;

else if 判斷素數(i)=false then flag(記錄)=false;

if flag=true then writeln(i);

其中flag先置為true

這樣就可以判斷出當前的這個i是不是即是素數也是迴文數了~

判斷素數的方法:

再開一個迴圈j,從2到i-1(簡化一下的話是round(i-1+1,理由去看素數的定義)

然後迴圈,如果i modj<>0 then flagg=false

flagg先置為true

最後如果flagg還是為true那麼這個數就是素數了

判斷迴文數的方法:

把當前這個數轉為字串形式(用函式str,方法參見str函式)

之後把這個字串反向輸入另一個字串(方法是for k:=length(那個字串變數名)) downto 1 do 第二個字串變數名:=第二個字串變數名+第一個字串變數名[k]

這時候不要忘記第二個字串變數名要先置為''

然後if 第二個字串變數名=第一個字串變數名 then 這個數就是迴文數了

把我說的穿起來就行了,那兩個判斷可以抽象出來作為函式function

以上。望採納。

2樓:

program dd;

var s:string;

t,n:longint;

begin

readln(s);

n:=length(s);

for t:=1 to length(s) div 2 doif s[t]<>s[n-t+1] then break;

if s[t]<>s[n-t+1] then writeln('no')

else writeln('yes');

end.

3樓:匿名使用者

你是新手吧

var s:string;

i,n:integer;

f:boolean;

begin

readln(s);

n:=length(s);

f:=true;

for i:=1 to n do

if s[i]<>s[n-i+1] then f:=falseif f then writeln("yes")else writeln("no");

end.

4樓:匿名使用者

var n:string;k:boolean; i:integer;

begin

readln(n);k:=true;

for i:=1 to length(n) do if n[i]<>n[length(n)-i+1] then k:=false;

if k then writeln('yes')else writeln('no');

end.

pascal判斷是否構成迴文怎麼寫? (求詳解)

5樓:二十二翰林

你好!下面是較詳細的解法:

所謂迴文,通俗地講就是正過來反過去都一個樣,那麼假設待判斷的資料長度為n,我們就逐一判斷第一個和第n個、第二個和第n-1個、第三個和第n-2個……這些是否一樣即可。下面這則程式運用了字串思想:

program lx;

varx:string;

i,j:integer;

begin

readln(x); //讀入資料

for i:=1 to length(x) div 2 do //求出該資料長度的一半。

if x[i]<>x[length(x)-i+1] then //length(x)就是前面所說的n。

begin

writeln('bu gou cheng'); exit; //如果對稱的兩位不相等,說明他們構不成迴文,於是輸出不構成,並立即結束程式。

end;

writeln('gou cheng'); //構成的話,就輸出構成。

end.

謝謝。祝你好運!

6樓:小星嫻

function pan:boolean;

var i:longint;

b:arr;

begin

for i:=1 to a[0] do

b[i]:=a[a[0]-i+1];

for i:=1 to a[0] do

if a[i]<>b[i] then exit(false);

exit(true);

end;

a陣列是你要判斷的一個一串。b陣列就把a陣列倒過來,然後要是迴文的話,a,b陣列就相等。就這樣判斷。

pascal遞迴法判斷所輸入的一行字元是否迴文。

7樓:匿名使用者

vars: string;

function sym(start: integer): boolean;

vartail: integer;

begin

tail := length(s) - start + 1;

if start > tail then

sym := false

else if start = tail then

sym := s[start] = '-'

else sym := (s[start] = s[tail]) and

sym(start + 1);

end;

begin

write('請輸入字元: ');

readln(s);

if (length(s) >= 1) and sym(1) then

writeln('it is symmetry!')

else writeln('it is not symmetry!');

end.

如何判斷一個字串是否是迴文

8樓:匿名使用者

一句話概括就是關於中心左右對稱的字串屬於迴文。

所謂迴文字串,就是一個字串,從左到右讀和從右到左讀是完全一樣的。比如"level" 、 「aaabbaaa」

題目:判斷一個字串是否為迴文

解法:遞迴

遞迴的作用在於把問題的規模不斷縮少,直到問題縮少到能簡單地解決

問:如何縮少問題規模?

答:通過觀察可以知道,一個迴文字串其中內部也是迴文。所以,我們只需要以去掉兩端的字元的形式一層層檢查,每一次的檢查都去掉了兩個字元,這樣就達到了縮少問題規模的目的。

新問題與原問題有著相同的形式,當去掉兩端字元後的字串,其產生的新問題同樣是檢查這個字串是否迴文。

遞迴的結束需要簡單情景

1. 字串長度可能會奇數或偶數:

如果字串長度是奇數,字串會剩下最中間那位字元,但其不影響迴文。當檢查到長度為1的時候即代表此字串是迴文

如果字串長度是偶數,當兩端的字串兩兩比較檢查後不會剩下字元。即檢查到長度為0的時候即代表此字串是迴文

2. 如果檢查到兩端兩個字元不相同。則說明此字串不是迴文,直接返回0,不需要繼續檢查

9樓:無法無天

首先,理解什麼是迴文字串,簡單的一句話概括就是關於中心左右對稱的字串。例如:abcba或者aaccaa是迴文字串;abcca或者aabbcc不是迴文字串。

判斷方法就是,依次看兩端的字元是否相等。例如:abcba,第一個字元與最後一個字元相等,第二個字元與倒數第二個字元相等,第三個字元是中心字元,無需判斷。

如果是aaccaa就要判斷。所以上面的字串是迴文字串。

以下是c語言實現判斷迴文字串的**。

#include

#include

int main(void)

{char s[30];

int b=0;  //1表示不是迴文字串puts("請輸入一個字串:");

scanf("%s",s);

for(int i=0;i

10樓:匿名使用者

如果一個字串,從左右來讀都一樣,就稱它為迴文

舉個例子:

abba

判斷輸入的字串是否為「迴文」

11樓:匿名使用者

#include "stdio.h"

#include "stdlib.h"

#include "string.h"

int judger(char a)

return 1;

}main()

else

system("pause");

} 測試資料:

louzhunihao

no!請按任意鍵繼續. . .

accepttpecca

yes!

請按任意鍵繼續. . .

樓主好運!

12樓:王大前

編寫程式,是則輸出yes,否則輸出no。

#include

using namespace std;

int main()

{char s[100];

int i,j;

cout<<"請輸入字串s:">s;

for(i=0;s[i];i++);

for(i--,j=0;jif(ielse cout<<"是迴文串"

判斷一個字串是否為迴文字串,**錯了,求解。

13樓:育知同創教育

1首先,理解什麼是迴文字串,簡單的一句話概括就是關於中心左右對稱的字串。例如:abcba或者aaccaa是迴文字串;abcca或者aabbcc不是迴文字串。

2判斷方法就是,依次看兩端的字元是否相等。例如:abcba,第一個字元與最後一個字元相等,第二個字元與倒數第二個字元相等,第三個字元是中心字元,無需判斷。

如果是aaccaa就要判斷。所以上面的字串是迴文字串。

以下是c語言實現判斷迴文字串的**。

#include

#include

int main(void)

if(b)

printf("這不是迴文字串。");

else

printf("這是迴文字串。");

return 0;}

14樓:

三個問題:

for迴圈中的多個判斷條件根據邏輯使用&&或者||連線,如果用,表示以最靠後的條件結果為準,此處結果雖然不會有影響,但是邏輯還是要明白;

初始條件中的j=str.length+1和後面的str.charat(j),明顯越界,導致出錯;

i<=(str.length+1)/2這樣操作邏輯上來說會導致判斷到字串中間靠後一個(偶數長度),但是在問題2解決的前提下結果不會出錯,但是會多一次無用操作。望採納

C語言,設計函式,判斷字串是否迴文,即順讀和倒讀的結果都一樣。若是,返回1若否,返回

include include void main while m 0 k for i 0 i if digit i digit k break if i else printf ld is a palindrome.n int exam char str str p return 1 includ...

js判斷某字串中是否存在一段字串

var settime 4 00 字串settime var i settime.indexof 如果settime包含 則 i 返回 在settime裡面的位置,否則返回 1 import org.apache.commons.lang.stringutils stringutils.contai...

python判斷字串是否為數字

z伊凡 正則匹配法比較嚴謹一些,你說的數字有沒有條件限制?下面是一些常用的判斷各種數字的正規表示式 驗證數字 0 9 驗證n位的數字 d 驗證至少n位數字 d 驗證m n位的數字 d 驗證零和非零開頭的數字 0 1 9 0 9 驗證有兩位小數的正實數 0 9 0 9 驗證有1 3位小數的正實數 0 ...