C語言:判斷迴文字串的兩種簡單方法__C語言

來源:互聯網
上載者:User

之前寫過逆排序的數組實現,對於經典的迴文問題卻還沒有深入研究過。今天抽空看了下,總結了兩種比較常用的迴文法。

一種是字串(當然也可以叫數組法),此方法可以用來判斷字串輸入以及INT類型的輸入

另一種是數字輸入,因為追求簡便性所以此方法只能判斷迴文數,不能判斷迴文字串。要想都判斷也很簡單,將變數類型調整即可實現

代碼以及講解如下:

/***判斷迴文數***///情況1.利用字串判斷迴文//實現方法:利用字串指標從頭尾分別判斷#include <stdio.h>#include <stdlib.h>#include <stdbool.h>#include <ctype.h>//typedef char  Pre_;     方便調試迴文時更改類型bool Judge_char(const char *p); //聲明一個布爾型變數的函數原型int main(int argc, char *argv[]){    printf("Please enter the chars to judge:\n");    bool re_value = 0;  //初始化邏輯變數    char *k;    scanf("%s", k);   //聲明一個字串指標,並將STDIN傳入    re_value = Judge_char(k);    if (re_value){        printf("This charset is Palindrom");    }    else {        printf("this charset is not Palindrom");     //判斷命題真假並輸出結果    }    return 0;}bool Judge_char(const char *p){    register int i = 0;      //計數變數初始化    int len = strlen(p); //使用STRLEN函數取字串數組的字元位元    //注意此處STRLEN與SIZEOF的使用方法區別,後者返回參數的所佔空間大小並包含Null 字元'\0'大小    //在STRLEN原型中傳入的參數是const指標而不是*p對象    for (i = 0; i <= len; i++)    {        if (p[i] == p[len - 1])        {            len--; //若首尾兩個字元等值,分別向字串中心移動一位,並判斷        }        else        return false;    }    return true;}
 
//情況2.判斷數字迴文//利用數位數值方法進行迴文判斷#include <stdio.h>#include <stdlib.h>#include <stdbool.h>//此方法可以直接嵌入main函數中,不需要聲明自訂函數int main(int argc, char *argv[]){    printf("Please enter the number to judge:\n");    int Inp;   //將INP作為一個儲存初始變數的整型,用於迴圈後的判斷    scanf("%d", &Inp);      //將STDIN格式化傳入INP中,舉個例子Inp = 1234    int sum  = 0;        int Calcul;    Calcul = Inp;   //聲明另一個CALCUL變數並將初始值賦給它,其在迴圈中將會用以判斷並發生改變    while(Calcul != false)    {        sum = sum * 10 + Calcul % 10;//第一次等式為sum=0*10+1234%10(其實值就是4)=4,                    //第二次等式為sum=4*10+123%10(其實值為3)=43,第三次等式為sum=43*10+12%10=432                   //第四次sum=432*10+1%10(其實為1)=4321        Calcul /= 10;//第一次等式為Calcul=1234/10=123第二次Calcul=123/10=12第三次Calcul=12/10=1,第四次Calcul=1/10=0;    }    if (sum == Inp)    {        printf("this is a palindrome");    }    else{printf("this is not a palindrome");    }    return 0;}


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.