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

(C語言)迴文數的判斷

問題描述:

判斷一個數是否為迴文數;

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;
}