1. 程式人生 > >迴文數的判斷(C語言實現)

迴文數的判斷(C語言實現)

http://blog.sina.com.cn/s/blog_5072a15d0100msdb.html 無名小浪

https://zhidao.baidu.com/question/548255538.html zhuhuaizhong

原理:

任何一個數除以10的餘數就是該數最後一位
任何一個數除以10的商就是排除掉最後一位後搜尋的數(因為 c++ 兩個整數相除結果還是整數)

所以 ,一個數1234 就可以通過這種方法得到 123 和 4
接下來對 123 進行同樣的操作,就得到 12 和 3
接下來得到 1 和 2
接下來得到 0 和 1

整個過程是個迴圈,當商不是 0 的時候就一直這麼幹

每次拿到一個餘數,都用來構造新數,新數=新數*10+

餘數

所以經過四次迴圈後,我們得到新數 4321 ,如果是迴文,那麼新數應該等於原數,否則,說明不是迴文。

“迴文數“是一種數字。如:98789, 這個數字正讀是98789,倒讀也是98789,正讀倒讀一樣,所以這個數字就是迴文數。

判斷一個整數是否是迴文數的方法不止一種,最容易想到的一種方法就是:
把整數轉換成字串,然後依次判斷字串前後對稱位置的字元是否相等,如果全都相等,則表示該整數是迴文數,否則不然。

然而,還有一種更為簡潔點的方法則是:
通過對整數的計算,得到該整數的反序整數(最低位變成最高位),判斷兩者是否相等,是則表示該整數是迴文數,否則不然。
以下給出了這種簡潔判斷方法的C語言程式碼例項,如下:

--------程式碼開始--------

#include <stdio.h>
#include <stdlib.h>

int IsHuiWenShu( int );

int main( int argc, char* argv[] )
{
    int num;
    int ret = 0;
    while ( 1 )
    {
        printf( "Please input an interage number:\n" );
        scanf( "%d",& num );
        if ( num == -100 )
        {
            printf( "You input %d, so exit.\n", num );
            break;
        }
        ret = IsHuiWenShu( num );
        if ( ret == 0 )
        {
            printf( "The number %d is not huiwenshu.\n", num );
        }
        else
        {
            printf( "The number %d is huiwenshu.\n", num );
        }
    }

    return 0;
}

int IsHuiWenShu( int number )
{
    int res = 0;
    int n = number;

    if ( n< 0 )
    {
        return 0;
    }

    do
    {
        res = res * 10 + n % 10;
        n = n / 10;
    } while ( n );

    if ( res == number )
    {
        return 1;
    }

    return 0;
}

--------程式碼結束--------

相關推薦

判斷C語言實現

http://blog.sina.com.cn/s/blog_5072a15d0100msdb.html 無名小浪 https://zhidao.baidu.com/question/548255538.html zhuhuaizhong 原理: 任何一個數除以10的餘

判斷c語言實現

判斷迴文確實是一個寫爛的程式碼了,建立一個標誌位flag即可,但是早上活躍一下頭腦,複習一下 題目 題目描述: 給出一個長度不超過1000的字串,判斷它是不是迴文(順讀,逆讀均相同)的。 輸入: 輸

判斷的函式--c實現

所謂迴文數,即palindrome ,指從前向後讀或者從後向前讀數的大小不發生改變的數,比如121、34543這些,在這個演算法中,傳入一個long型別的引數m,然後把m的值賦給i,當i非零時執行while語句,while語句內部功能是將一個長整形數i轉化成這個i從右往左重新排列組成的“倒過來的數”,再把這

據結構-線性表的鏈式存儲相關算法C語言實現

存儲位置 lib 方法 lis 逆序 順序 程序 查詢 c語言 鏈表的簡單介紹 為什麽需要線性鏈表 當然是為了克服順序表的缺點,在順序表中,做插入和刪除操作時,需要大量的移動元素,導致效率下降。 線性鏈表的分類 按照鏈接方式: 按照實現角度: 線性鏈表的創建和簡單遍歷

優先隊列堆) -據結構C語言實現

++ eem enter ext lock 二次 arr 快速 left 數據結構與算法分析 優先隊列 模型 Insert(插入) == Enqueue(入隊) DeleteMin(刪除最小者) == Dequeue(出隊) 基本實現 簡單鏈表:在表頭插入,並遍歷

資料結構C語言實現判斷兩棵二叉樹是否相等,bug求解

判斷兩棵二叉樹是否相等。 遇到了bug,求大神幫忙!!! C語言原始碼: #include <stdio.h> #include <stdlib.h> #include <malloc.h> #define OK 1 #define

LeetCode第五題:最長子串C語言

給定一個字串 s,找到 s 中最長的迴文子串。你可以假設 s 的最大長度為1000。 示例 1: 輸入: “babad” 輸出: “bab” 注意: "aba"也是一個有效答案。 示例 2: 輸入: “cbbd” 輸出: “bb” 解法一:暴力求解法 思想:

漢諾塔遞呼叫C語言實現

1.遞迴演算法 遞迴演算法:是一種直接或者間接地呼叫自身的演算法。在計算機編寫程式中,遞迴演算法對解決一大類問題是十分有效的,它往往使演算法的描述簡潔而且易於理解。 遞迴過程一般通過函式或子過程來實現。 遞迴演算法的實質:是把問題轉化為規模縮小了的同類問題的子問題。然後

二分查詢遞和非遞實現c語言實現

#include<stdio.h>++ int seeqSearch(int a[],int n,int k){     int i=n-1;     for(;i>=0;i--){//遍歷陣列         if(a[i]==k){//找到對應的陣列

建立連結串列的三種演算法C語言實現——正向、逆向、遞

連結串列分為靜態連結串列和動態連結串列,本文主要討論動態連結串列的建立。 靜態連結串列是用兩個陣列模擬一個連結串列,其中一個數組中存實際資料,可以稱之為資料陣列。另一個數組中存資料陣列中各元素的下標,我們稱之為地址陣列(注意地址陣列中存的並不是地址值,而是整形的數)。靜態

判斷素數問題C語言實現

判定它是否為素數。只能被1和其自身整除的整數,稱為素數。 /************************************************************************/ /*判斷n是否素數(C語言實現)    /*執行環境:VC++6.

二十四進制編碼串轉換為32位無符號整數C語言實現

bool while open 參數錯誤 hint div 第一個字符 bsp opened typedef int BOOL; #define TRUE 1; #define FALSE 0; #define UINT_MAX 0xffffffff

堆排序C語言實現

names 博客 鏈接 c語言實現 建立 ron 要求 clas [1] 之前的博客介紹介紹了數組的兩種排序算法:插入排序和歸並排序(採用遞歸),見鏈接http://blog.csdn.net/u013165521/article/detai

算法 - 棧與隊列C 語言實現

元素 語言 訪問規則 並且 下標 出棧 數據結構 規則 算法 目標: 理解 棧 與 隊列 這兩種數據結構, 並且知道如何應用。 算法 + 數據結構 = 程序 一、堆棧 堆棧是一組元素的集合,類似於數組,但數組可以按下標訪問,堆棧的訪問規則只能為push 與

歸並排序C語言實現

ngs 基本 merge 兩個 它的 efi 分別是 void rec 合並排序(MERGE SORT)是又一類不同的排序方法,合並的含義就是將兩個或兩個以上的有序數據序列合並成一個新的有序數據序列,因此它又叫歸並算法。 它的基本思想就是假

排序C語言實現

內部排序 利用 int 分治 arr 個數 size quic 外部排序 讀數據結構與算法分析 插入排序 核心:利用的是從位置0到位置P都是已排序的 所以從位置1開始排序,如果當前位置不對,則和前面元素反復交換重新排序 實現 void InsertionSort

Word Count程序C語言實現

地址 組成 other 進一步 and 文件遍歷 stand evel oid Word Count 程序 GitHub地址:https://github.com/MansonYe/Word-Count 一、項目簡介 Word Count 是用以統計文本文件的字符數

P1540_機器翻譯C語言實現

題目背景 小晨的電腦上安裝了一個機器翻譯軟體,他經常用這個軟體來翻譯英語文章。 題目描述 這個翻譯軟體的原理很簡單,它只是從頭到尾,依次將每個英文單詞用對應的中文含義來替換。對於每個英文單詞,軟體會先在記憶體中查詢這個單詞的中文含義,如果記憶體中有,軟體就會用它進行翻譯;如果記憶體中沒有

圖片中畫框C語言實現

在做視覺分析過程中,經常會進行影象格式的轉換以及在原圖上標框,為了更加清晰的認識影象格式,在這裡手動實現了根據YUV資料和RGB資料進行標框的操作。在效能上不及直接使用opencv + cuda, 但是可以更加直觀的理解整個原理。 // draw line // 傳入imgData

樹的三種遍歷方式C語言實現

//************************************************************************* // 【前序】遍歷演算法 //二叉樹不空,先訪問根結點,然後前序遍歷左子樹,再前序遍歷右子樹 //***********************