(C語言)迴文數的判斷
阿新 • • 發佈:2019-02-03
問題描述:
判斷一個數是否為迴文數;
121;
12321;
1234321;
程式分析:
1.迴文數(palindromic number):是指一個數的最高位和最低位上的數相等,第二高位與次低位上的數相等,也就是關於中間“對稱”。如上面的三個數情況是一個迴文數。
2.將這個數擴充套件成一個數組,將這個數的各個位上的數取出來並且一一賦給這個陣列。
3.判斷這個陣列中的元素之間的關係是否符合迴文數的特徵。並且將結果輸出。這個程式寫了一個函式來實現這一功能。
程式碼如下:
#include<stdio.h> #define LENTH 100 /* 將要判斷的數值的各個位存放在陣列中,為判斷迴文數做準備 注意: 1234----->>存放在陣列中變成---->>4321 若是迴文數,數值不變12321----12321 */ int Put_in_array(int array[],int num) { int i = 0; while(num) { array[i] = num % 10;//將當前最低位存放於陣列中 num /= 10; //為取出下一位最準備(丟棄已存放的數值位) i++; } return i; //返回陣列數值的個數(即陣列中元素的個數) } int IS_palindromic_num(int array[],int n) { int left = 0;//陣列中最左側數值的下標 int right = n - 1;//陣列中最右側數值的下標 while(left <= right) { if(array[left] == array[right]) { left++; // 當前位左右對稱相等,指向下一位,為判斷下一位做準備 right--; } else return 0 ;//左右不對稱相等,不是迴文數 } return 1;//沒有返回1即說明是迴文數 } int main() { int num; //要判斷的數值 int array[LENTH]; //存放數值的各個位 int n; //陣列中元素的個數 int i = 1; while(i) { printf("please input the num you want to judge:\n"); scanf("%d",&num); n = Put_in_array(array,num); if(IS_palindromic_num(array,n) == 1) printf("%d is a palindromic num\n",num); else printf("%d it's not a palindromic num\n",num); printf("if you want to continue: 1 if you want to break: 0\n "); scanf("%d",&i); } return 0; }