首页 > 技术文章 > 如何判断一个整型数字是不是对称数字

Keven-Lee 2017-02-27 12:43 原文

如何判断一个整型数字是不是对称数字(用纯C语言实现)

比如输入是1569651是一个对称数字,而25则不是一个对称数字。

有两种判断方法:

1. 将输入的数字分解成一个个数字,然后进行判断。

2. 将数字的高地位进行互换,然后判断互换后的数与原来的数是否相等。

 

方法一:数字分解法

 1 /*将input输入,输出为一个output数组和input的位数*/
 2 int decompose(int input, int* output)
 3 {
 4     int* decomposeResult = output;
 5     int count = 0, temp = input;
 6 
 7     while(1)
 8     {
 9         int quotient = temp / 10;
10         int remainder = temp % 10;
11         if((quotient != 0) || ((quotient == 0) && (remainder != 0)))
12         {
13             decomposeResult[count] = remainder;
14             temp = quotient;
15             count ++;
16         }
17         else
18             break;
19     }
20     return count;
21 }
 1 /*判断是否是对称数字*/
 2 bool isSymmetryDecompose(const int* input, int count)
 3 {
 4     for(int i = 0; i < count /2 ; i++)
 5     {
 6         if(input[i] != input[count - i - 1])
 7         {
 8             return false;
 9         }
10     }
11     return true;
12 }

方法二:数值高地位互换比较法

 1 /*输入数字高地位互换,输出为互换后的结果*/
 2 int highAndLowSwap(int input)
 3 {
 4     int temp = input, swap = 0;
 5        /*将输入的地位按顺序换成输出的高位,比如输入为12345,那么输出为54321*/
 6     while(temp)
 7     {
 8         swap = swap * 10 + temp %10;
 9         temp = temp / 10;
10     }
11 
12     return swap;
13 }
/*判断两个数字是否相等,相等则是对称数字,否则不是对称数字*/
bool isSymmetryHighAndLowSwap(int input, int inputSwap)
{
    if(input == inputSwap)
        return true;
    else
        return false;
}

 

测试代码:

 1 void main()
 2 {
 3     int input = 123060321;
 4     int decomposeResult[32], swapResult;
 5     int count  = 0;
 6     bool isSymDecomp = false, isSymSwap = false;
 7 
 8     count = decompose(input, decomposeResult);
 9     isSymDecomp = isSymmetryDecompose(decomposeResult, count);
10     swapResult = highAndLowSwap(input);
11     isSymSwap = isSymmetryHighAndLowSwap(input, swapResult);
12 
13     if(isSymDecomp)
14         printf("Is a symmetry number, judge by decompose method!\n");
15     else
16         printf("Not a symmetry number, judge by decompose method!\n");
17     
18     printf("\n");
19     
20     if(isSymSwap)
21         printf("Is a symmetry number, judge by swap method!\n");
22     else
23         printf("Not a symmetry number, judge by swap method!\n");
24     
25     printf("\n");
26     
27     printf("Please print enter to continue ...\n");
28     getchar();
29 }

 

测试结果:

 

源码下载:

http://download.csdn.net/detail/hudaliquan/9765114

推荐阅读