回文是指順讀和反讀內容均相同的字符串,例如”121”,”ABBA”,”X”等。本實例將編寫函數判斷字符串是否是回文。
引入兩個指針變量,開始時,兩個指針分別指向字符串的首末字符,當兩個指針所指字符相等時,兩個指針分別向后和向前移動一個字符位置,并繼續比較,直到兩個指針相遇,說明該字符串是回文,如果比較過程中發現兩個指針指向的字符不相等,則判斷該字符串不是回文。
下面是代碼的實現部分:
~~~
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 20
int Cycle(char *s);
/**
* 回文是指順讀和反讀內容均相同的字符串,例如"121","ABBA","X"等。
* 本實例將編寫函數判斷字符串是否是回文。
*
*/
int main()
{
char s[N];
while(1){
printf("Please input the string you want to judge(input ^ to quit):\n");
scanf("%s",&s);
if(s[0] == '^'){
break;
}
if(Cycle(s)){
printf("%s is a cycle string!\n",s);
}else{
printf("%s is not a cycle string!\n",s);
}
}
return 0;
}
/**
* 判斷字符串s是否是回文
*
* param:
* char *s: 被判斷的字符串
* return:
* 0: 表示字符串s不是回文數
* 非零: 表示字符串s是回文數
*/
int Cycle(char *s){
char *h,*t;
for(h = s,t = s + strlen(s) - 1;t > h;h++,t--)
if(*h != *t) break;
return t <= h;
}
~~~
下面是程序的運行結果:

在做這個實例的時候,讓我想到了之前有一個實例是判斷一個數是否是回文數,是這樣做的,假設一個數n=232,從各位數字開始,分別為2,3,2;這些數字分別乘以100,10,1最后相加,比較和原來的數是否相等,就能判斷該數書否是回文數字了。
- 前言
- 實例一:HelloWorld
- scanf函數學習
- 實數比較
- sizeof()保留字獲取類型的大小
- 自增/自減學習
- C學習if條件判斷和for循環
- C實現的九九乘法表
- C實現一個比較簡單的猜數游戲
- 使用C模擬ATM練習switch..case用法
- 記錄一個班級的成績練習一維數組
- C數組實現矩陣的轉置
- C二維數組練習
- 利用數組求前n個質數
- C實現萬年歷
- C實現數組中元素的排序
- C實現任意進制數的轉化
- C判斷一個正整數n的d進制數是否是回文數
- C使用遞歸實現前N個元素的和
- 鋼材切割問題
- 使用指針比較整型數據的大小
- 指向數組的指針
- 尋找指定元素
- 尋找相同元素的指針
- 整數轉換成羅馬數字
- 字符替換
- 從鍵盤讀入實數
- C實現字符行排版
- C實現字符排列
- C實例--判斷一個字符串是否是回文數
- 通訊錄的輸入輸出
- 撲克牌的結構定義
- 使用“結構”統計學生成績
- 報數游戲
- 模擬社會關系
- 統計文件中字符個數
- C實現兩個文件的內容輸出到同一個屏幕