11、数字颠倒

来源:互联网 发布:伊利的网站域名有几个 编辑:程序博客网 时间:2024/05/19 02:01

题目描述

描述:
输入一个整数,将这个整数以字符串的形式逆序输出
程序不考虑负数的情况,若数字含有0,则逆序形式也含有0,如输入为100,则输出为001

输入描述:

输入一个int整数

输出描述:

将这个整数以字符串的形式逆序输出


这里写图片描述


c++ code:

#include <iostream>#include "string.h"using namespace std;#define MAX 500int main(){    char c[MAX];                //输入的数据保存在      c   数组    int s;                      //输入数据转换为int        s    cin >> c;    sscanf_s(c, "%d", &s);      //实现字符串转十进制数字    int i = 0;                  //逆序        int a[MAX];    while (s/10 != 0){              a[i] = s % 10;        s /= 10;                    i++;        a[i] = s;                   }    int aLength = i + 1;        //数组有元素的个数    int x = strlen(c) - aLength;                //要加几个  0    for (int i = 0; i<aLength;i++)    {        cout << a[i];    }    for (int i = 0; i < x; i++)    {        cout << 0;    }    return 0;}

idea:

  1. 因为之前的几个题目中的某一段 代码已经实现 了逆序输出,但是这个题目他还要求输入数据 int 的前几位 0 也要进行输出,解决办法如下:
  2. 输入的时候,不要用int来接收数据,用一个字符数组来接手。关键是要找到前面有几个0
    2.1 前面有几个0 = 字符数组的有效长度 - 转换后的int数据(因为转换的时候会去掉前面的0)
    2.2 最后输出的时候在末尾加上这几个0。

注意:
代码的 sscanf_s(c, “%d”, &s);
这是在VS2013的环境运行,如果要在OJ上面提交的话,需要把sscanf_s,改为sscanf。