1. 程式人生 > >C語言經典演算法100例-030-判斷一個數是否為迴文數

C語言經典演算法100例-030-判斷一個數是否為迴文數

所謂迴文數,即是正序與逆序相等的一個數,如121,12321,10501等。寫程式判斷輸入的數是否為迴文數。

1.分析:表面上看,我們似乎要這麼做,把各個位分離,然後把第一個數跟最後一個數比較,第二個跟倒數第二個....等等。注意,這樣做太複雜了,迴文數的條件是正序等於逆序,那麼我們為什麼不把逆序的值求出來與正序值比較呢,我們已經很擅長做逆序的工作,所以我們有了這樣的程式:

#include <stdio.h>
#include <stdlib.h>
//判斷一個數是否為迴文數
int main()
{
    long int i;
    int pld(long int);
    printf("Input a number!\n");
    scanf("%ld",&i);
    if(pld(i))
        printf("It's a palindrome.\n");
    else
        printf("It's not a palindrome.\n");
    return 0;
}
int pld(long int m) //求m的逆序值並與m比較
{
    long int temp=m;
    long int n=0;
    while(temp)     //逆序分離各位
    {
        n=n*10+temp%10; //求逆序值
        temp/=10;
    }
    return (m==n);
}


相關推薦

C語言經典演算法100-030-判斷個數是否

所謂迴文數,即是正序與逆序相等的一個數,如121,12321,10501等。寫程式判斷輸入的數是否為迴文數。 1.分析:表面上看,我們似乎要這麼做,把各個位分離,然後把第一個數跟最後一個數比較,第二個跟倒數第二個....等等。注意,這樣做太複雜了,迴文數的條件是正序等於逆序

用Python判斷個數是否(或者回字串)

所謂迴文數。就是正著讀和反著讀,都是一樣的。 例如: 數字:121、1331、22、都是迴文數。 1234 不是迴文數。 自然數中最小的迴文數是0,再就是1,2,3,4,5,6,7,8,9,

C語言經典演算法100-009-輸出國際象棋棋盤

題目如下: 輸出國際象棋棋盤:8*8黑白格相間。 1.分析:雙重迴圈,按條件選擇輸出黑或者白。但這個條件怎麼確定呢,可以看到,奇數列中所有奇數行為白色,偶數列中所有偶數行為白色,然而我們在程式中並不會根據每行的奇偶再去判斷列的奇偶,而巧妙的將條件轉化為:當行數與列數的和為偶

C語言經典演算法100-069-簡單約瑟夫環問題

這裡我們實現一個簡單的約瑟夫環問題,描述如下: 有N個人站成一圈,從第一個人開始報數,從1報到3,報到3的那個人走出圈,然後從下一個人開始從1繼續報數,重複上面的過程,直到最後圈裡只剩下一個人,問這個人是哪個人? 分析:首先,我們要給這N個人編號,分別編為1到N, 然後,開

從控制檯輸入個數判斷個數是否

分析:要判斷一個數是否是迴文數,首先要知道什麼是迴文數。 1.迴文數必須是五位數。 2.滿足條件:萬位數=各位數;千位數=十位數; 3.獲取各個位數的方法 int ww=a/10000;//萬位 //int qw=a/1000%10;//千位 //int bw=a/100%

Mr.J--C語言經典程式設計100

C語言,一般為初學者的首選語言,說簡單也簡單,但是要真正學好C語言,也是一件很難的事,懂了這些100個例題,也就算是入門了吧,畢竟語言要學的太多,這只是基礎。   【程式1】 題目:古典問題:有一對兔子,從出生後第3個月起每個月都生一對兔子,小兔子長

C語言經典程式100

【程式1】 題目:古典問題:有一對兔子,從出生後第3個月起每個月都生一對兔子,小兔子長到第三個月    後每個月又生一對兔子,假如兔子都不死,問每個月的兔子總數為多少? 1.程式分析: 兔子的規律為數列1,1,2,3,5,8,13,21.... 2.程式原始碼: #

c語言:實現一個函式,判斷個數是不是素數。

實現一個函式,判斷一個數是不是素數。程式:#include<stdio.h>#include<math.h>int prime(intnum) //prime表示素數{int i

編寫一個函式判斷一個整數是否。如果一個屬從正的方向讀和從反的方向讀的結果相同,則該就是

bool palindrome(int b){   int k = 0;   char a[1000];   do {     int c;     c = b % 10;     char d;     for (int i = 0; i <= 9; i++) {       if (c == i

怎麼判斷個數是否完全平方

在不使用浮點函式sqrt的情況下,我們有一些比較好的演算法: 1.利用恆等式: 1+3+5+7+....+(2*n-1)=n^2 bool isSqrt(int n) { for(int i=1;n>0;i+=2) n-=i; return 0 == n;

判斷一個整數是否

問題 判定一個正整數是否是一個迴文數。例如12121是迴文數,而1231不是迴文數。迴文數定義為可以以中間某個數字對稱,或者間隔對稱,例如123321,或者1234321。詳細的迴文數介紹請參考維基百科:http://en.wikipedia.org/wiki/Palin

C語言經典演算法 輸入某年某月某日 判斷天是這年的第幾天

                題目:輸入某年某月某日,判斷這一天是這一年的第幾天?1.程式分析:以3月5日為例,應該先把前兩個月的加起來,然後再加上5天即本年的第幾天,特殊      情況,閏年且輸入月份大於3時需考慮多加一天。2.程式原始碼:main(){int day,month,year,sum,le

C語言經典演算法:求1-100之間素數

#include<stdio.h> #include<stdlib.h> #include<assert.h> #include<math.h> in

C語言經典演算法:輸入某年某月某日,判斷天是這年的第幾天?

題目:輸入某年某月某日,判斷這一天是這一年的第幾天?1.程式分析:以3月5日為例,應該先把前兩個月的加起來,然後再加上5天即本年的第幾天,特殊      情況,閏年且輸入月份大於3時需考慮多加一天。2.程式原始碼:main(){int day,month,year,sum,l

C語言經典演算法(九)——遞實現二分查詢的兩種方法

後繼續整理演算法並寫出自己的理解和備註。 C++實現的:遞迴實現二分查詢演算法 1、 遞迴實現二分查詢 <1> 題目描述:針對資料,進行二分查詢(要求:資料的排列有序) <2> 方法一:概念法 <3> 方法二:遞迴法 原始碼: 一、 遞迴實現

C語言經典演算法(八)——遞實現斐波那契數列的兩種方法

後繼續整理演算法並寫出自己的理解和備註。 C++實現的:遞迴實現斐波那契數列 1、 遞迴實現斐波那契數列Fib(n) <1> 題目描述:輸入n值,求解第n項的斐波那契數列值 <2> 方法一:概念法 <3> 方法二:遞迴法 斐波那契數列值是值1

C語言經典演算法(七)——遞實現階乘演算法的兩種方法

今後繼續整理演算法並寫出自己的理解和備註。 C++實現的:遞迴實現階乘演算法N! 1、 遞迴實現n! <1> 題目描述:輸入n值,求解n的階乘 <2> 方法一:累乘法 <3> 方法二:遞迴法 原始碼: 一、 遞迴實現n! 1、 累乘法 #

C語言經典演算法練習(氣泡排序)

本次練習總結: 1.  函式宣告在初次編碼時忘記,教訓一; 2.  不知道不知長度的陣列空間該如何操作,學會了動態分配,知道了malloc函式在<stdlib.h>標頭檔案中,收穫一; 3.  又忘記double型別在printf()和是scanf()中用%

C語言經典演算法題目——列印水仙花

 “水仙花”數指的是一個3位數,它的每個位數字的三次冪之和等於它本身 舉一個例子: 153=1x1x1+5x5x5+3x3x3 我們先來看看執行的結果 下面是程式實現的程式碼 #include<stdio.h> int main() {