[华为机试练习题]47.整型反序

简介:

题目

描述:     
    简要描述:给出一个不多于5位的整数, 进行反序处理
    要求:
    1、求出它是几位数
    2、分别输出每一位数字
    3、按逆序输出各位数字,例如原数为321,应输出123(仅数字间以空格间隔, 负号与数字之间不需要间隔)

    例如:

    输入:
        12345
    输出:
        5
        1 2 3 4 5
        54321

    注意:如果是负数,负号加在第一个数字之前, 与数字没有空格间隔

    比如
    输入:
        -12345
    输出:
        5
        -1 2 3 4 5
        -54321

函数原型:

/*
输入:
 iInput: 位数不大于5的整数
输出:
 iNum:   整数位数 
 strRst: 空格间隔输出结果
 iOutput:逆序整数
返回:
 0  成功
 -1 输入无效
*/
int ProcessX(int iInput, int& iNum, char * strRst, int& iOutput) 

练习阶段:

初级 

代码

/*---------------------------------------
*   日期:2015-07-03
*   作者:SJF0115
*   题目:整型反序
*   来源:华为机试练习题
-----------------------------------------*/
#include <iostream>
#include "oj.h"
#include <vector>
#include <string>
using namespace std;

// 求取整数的各位 以及 逆序整数
vector<int> AllNum(int num,int &reverseNum){
    vector<int> result;
    if(num == 0){
        result.push_back(0);
        return result;
    }//if
    reverseNum = 0;
    int tmp = num;
    int c;
    while(tmp){
        c = tmp % 10;
        result.push_back(c);
        reverseNum = reverseNum * 10 + c;
        tmp /= 10;
    }//while
    return result;
}

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

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

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

int ProcessX(int iInput, int& iNum, char * strRst, int& iOutput){
    if(strRst == NULL){
        return -1;
    }//if
    // 负数
    bool positive = true;
    if(iInput < 0){
        positive = false;
        iInput = -iInput;
    }//if
    // 整数上的各位
    vector<int> vec = AllNum(iInput,iOutput);

    // 求出它是几位数
    iNum = vec.size();

    // 负数情况
    int index = 0;
    if(!positive){
        iOutput = -iOutput;
        strRst[index++] = '-';
    }//if

    // 按格式分别输出每一位数字
    for(int i = iNum-1;i >= 0;--i){
        if(i == iNum-1){
            strRst[index++] = vec[i] + '0';
        }//if
        else{
            strRst[index++] = ' ';
            strRst[index++] = vec[i] + '0';
        }//else
    }//for
    strRst[index] = '\0';
    return 0;
}
目录
相关文章
|
7月前
|
C语言
【Leetcode-1.两数之和 -3.无重复字符的最长子串 -9.回文数(C语言)】
【Leetcode-1.两数之和 -3.无重复字符的最长子串 -9.回文数(C语言)】
18 0
|
5月前
|
Java 测试技术 Python
每日一题《剑指offer》字符串篇之表示数值的字符串
每日一题《剑指offer》字符串篇之表示数值的字符串
28 0
每日一题《剑指offer》字符串篇之表示数值的字符串
|
5月前
|
Java
每日一题《剑指offer》字符串篇之字符串的排列
每日一题《剑指offer》字符串篇之字符串的排列
51 0
每日一题《剑指offer》字符串篇之字符串的排列
|
11月前
|
存储 算法 Java
leetcode刷题记录:7.整数反转,8.字符串转整数,9.回文数
leetcode刷题记录:7.整数反转,8.字符串转整数,9.回文数
39 0
|
11月前
|
存储
力扣---两数相加(c语言版)
力扣---两数相加(c语言版)
58 0
|
C语言
C语言题解——除自身以外数组的乘积(力扣 第238题)
这是力扣题库中的一个中等难题,说是存在一个整型数组,求出各元素位上除此数外其他元素的乘积,比如存在数组[1,2,3,4],按照题目应该该输出[24,12,8,6],我们的解题思想为:求出各元素的左积和右积(当然不包含自己),然后将左积与右积相乘,就可以得到目标积数,拿上面的例子来说,下标0的左积为1(默认数组外为1),右积为24,相乘得到目标积24,其他元素也是依次类推。下面来看看具体讲解吧
135 0
C语言题解——除自身以外数组的乘积(力扣 第238题)
|
存储 C语言
C语言题解——倒置字符串(剑指Offer 第58题)
C语言题解——倒置字符串(剑指Offer 第58题)
64 0
C语言题解——倒置字符串(剑指Offer 第58题)
|
存储 容器
代码随想录刷题|LeetCode 242.有效的字母异位词 349. 两个数组的交集 202. 快乐数 1. 两数之和
代码随想录刷题|LeetCode 242.有效的字母异位词 349. 两个数组的交集 202. 快乐数 1. 两数之和
代码随想录刷题|LeetCode 242.有效的字母异位词 349. 两个数组的交集 202. 快乐数 1. 两数之和
LeetCode每日一题——1822. 数组元素积的符号
给你一个整数数组 nums 。令 product 为数组 nums 中所有元素值的乘积。
67 0
|
算法
每日算法刷题Day9-字符串移位包含问题、字符串乘方
⭐每日算法题解系列文章旨在精选重点与易错的算法题,总结常见的算法思路与可能出现的错误,与笔者另一系列文章有所区别,并不是以知识点的形式提升算法能力,而是以实战习题的形式理解算法,使用算法。
207 0
每日算法刷题Day9-字符串移位包含问题、字符串乘方