描述: | 给出一个正整数,找到这个正整数中包含的最大递减数。一个数字的递减数是指相邻的数位从大到小排列的数字。如: 95345323,递减数有:953,95,53,53,532,32, 那么最大的递减数为953。
|
#include "Degressive.h" #include <stdio.h> #include <stdlib.h> #include <string.h> /****************************************************************************** Copyright (C), 2001-2011, Huawei Tech. Co., Ltd. ****************************************************************************** File Name : Version : Author : Created : Last Modified : Description : Function List : History : 1.Date : Author : Modification: Created file ******************************************************************************/ //给出一个非负整数,找到这个非负整数中包含的最大递减数。一个数字的递减数是指相邻的数位从大到小排列的数字。 //如: 95345323,递减数有:953,95,53,53,532,32, 那么最大的递减数为953。 //如果输入的数字为负数,返回-1。 int getMaxDegressiveNum (int num) { // your code here... if (num < 0) { return -1; } char numchar[1000] = { 0 }; int i = 0, lens = 0; int mindata = 0, maxmindata = 0; sprintf_s(numchar, "%d", num); lens = strlen(numchar); /*初始化*/ mindata = numchar[0] - '0'; maxmindata = mindata; for (i = 1; i < lens; i++) { if (numchar[i] < numchar[i - 1]) { mindata = mindata * 10 + (numchar[i] - '0'); } else { mindata = numchar[i] - '0'; } if (maxmindata < mindata) { maxmindata = mindata; } } return maxmindata; }