描述: | 给出一个正整数,找到这个正整数中包含的最大递减数。一个数字的递减数是指相邻的数位从大到小排列的数字。如: 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;
}