標籤:c語言迴文數的判斷 將一個數擴充成一個數組 函數的調用
問題描述:
判斷一個數是否為迴文數;
121;
12321;
1234321;
程式分析:
1.迴文數(palindromic number):是指一個數的最高位和最低位上的數相等,第二高位與次低位上的數相等,也就是關於中間“對稱”。如上面的三個數情況是一個迴文數。
2.將這個數擴充成一個數組,將這個數的各個位上的數取出來並且一一賦給這個數組。
3.判斷這個數組中的元素之間的關係是否符合迴文數的特徵。並且將結果輸出。這個程式寫了一個函數來實現這一功能。
代碼如下:
#include<stdio.h>#defineLENTH 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--;}elsereturn 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);elseprintf("%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;}
(C語言)迴文數的判斷