C語言之堆疊 回文數

2021-08-15 16:37:34 字數 1436 閱讀 2031

/*

問題描述

123321是乙個非常特殊的數,它從左邊讀和從右邊讀是一樣的。

輸入乙個正整數n, 程式設計求所有這樣的五位和六位十進位制數,滿足各位數字之和等於n 。

輸入格式

輸入一行,包含乙個正整數n。

輸出格式

按從小到大的順序輸出滿足條件的整數,每個整數佔一行。

樣例輸入

52樣例輸出

899998

989989

998899

資料規模和約定

1<=n<=54。

*//*

1.針對此題:給定範圍如何求解回文數?

待解決---

2.理論補充:第二節 解密回文--棧

棧的實現:一維陣列和乙個指向棧頂的top變數即可 (刪除和插入操作)

回文字串:xyyx xyzxy

判斷是否為回文字元符串:程式見下

常用來驗證括號匹配問題,圖靈發明~

**************************************

1.讀入字串:

int s[101];

gets(s);

2.計算字串陣列的長度

#includestrlen(arr);

3.語言商的規定:

保持運算元中精度最高的型別

5/2=2

5.0/2=2.5

4.迴圈注意 :

變數累加得次數

i=0 i<10 ;迴圈10次

i=0 i<=10;迴圈11次

不要隨意在迴圈區域中改變迴圈變數的值

5.編寫經驗:模組測試精確到每一步得確定

6.適當位置加break減少迴圈次數

7.++top

==top++

top--

8.中英文轉換:

(( (( 中文字元佔兩個單位

*/#include

#include

int main()

//top--;//操作蹩腳

//判斷字串

for(i=mid;iprintf("\nmid = %d\n arr[%d]=%c s[%d]=%c \n",mid,i,arr[i],top,s[top]);

/* if(arr[i]==s[top])*/

//妙處2:使用break減少迴圈次數;

if(arr[i]!=s[top])

top--;

} //top++;//操作蹩腳

printf("top = %d (==0)",top);

if(top==0)else

return

0; /*

回文數的思想簡單

妙處是的是判斷使用棧的top指標始終指向上乙個棧頂空位置

for(i=0;i}

詳解C語言之堆疊

目錄 a.堆疊是一種特殊的線性表 b.堆疊的資料元素以及資料元素間的邏輯關係和線性表完全相同,其不同點是 線性表允許在任意位置插入和刪除資料元素,但堆疊只允許在固定一端進行插入和刪除資料元素,所以棧又稱為 先進後出 filo 或 後進先出 lifo 的線性表 c.堆疊中允許進行插入和刪除資料元素的一...

C語言之完數 素數 回文數合集

1 完全數 perfect number 又稱完美數或完備數,是一些特殊的自然數。它所有的真因子 即除了自身以外的約數 的和 即因子函式 恰好等於它本身。如果乙個數恰好等於它的因子之和,則稱該數為 完全數 第乙個完全數是6,第二個完全數是28,第三個完全數是496,後面的完全數還有8128 3355...

C 利用堆疊判斷回文數

我們稱形如abcdcba,abba這樣的字串為回文字串,本文介紹的是如何利用棧stack的知識來判斷乙個字串是不是回文字串。很久以前寫的了,其實可以呼叫標準庫中的stack來進行棧的各種操作不必這麼麻煩。include include include typedef struct stack sta...