OJ

#include <stdlib.h>
#include <stdio.h>
#include "oj.h"


/*
功能:
 给出一个不多于5位的整数,
 要求:
  1、求出它是几位数
  2、分别输出每一位数字
  3、按逆序输出各位数字,例如原数为321,应输出123
输入:
 整型 iInput,位数不大于5的整数

输出:
    整数位数  iNum
 空格间隔输出结果    strRst
 逆序整数  iOutput

返回:
 0  成功
 -1 输入无效
*/

int ProcessX(int iInput, int& iNum, char * strRst, int& iOutput)
{
 int temp=0,i=0,blk=0;
 int neg_flag=0,end_0_num=0;
 int imod=iInput%10;
 if(iInput/10000>10||iInput/10000==10)
 {
    return -1;
 }
 if(iInput/10000<-10||iInput/10000==-10)
 {
    return -1;
 }

 //输入为0
 if(iInput==0)
 {
      *strRst='0';
      iOutput=0;
    iNum=0;
    return 0;
 }
 //输入为负数
 if(iInput<0)
 {
   iInput*=(-1);
   neg_flag=1;
 }
 
 //输入为正数
 //尾数为0
 if(imod==0)
 {
   end_0_num++;
   iNum++;
   iInput/=10;
   imod =iInput% 10;
 }
 
 while (iInput >0)
 {
  temp=temp*10+imod;
  iInput/=10;
  imod = iInput % 10;
  if(imod==0 && iInput>0)
  {
   end_0_num++;
   iInput/=10;
   imod =iInput% 10;
  }
  iNum++;
 }
 iOutput=temp;
 imod =temp% 10;
 while (temp >0)
 {
  if(neg_flag)
  {
    strRst[i++]='-';
  }
       strRst[i++]=imod+48;
       blk++;
    if(blk<iNum-end_0_num)
    {
      strRst[i++]=' ';
    }
  temp/=10;
  imod = temp % 10;
 }
 if(end_0_num>0)
 {
  for(int k=0;k<end_0_num;k++)
  {
   strRst[i++]=' ';
   strRst[i++]='0';
  }
 }
  
 strRst[i]='\0';
 return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值