题目描述
描述:
输入一个整数,将这个整数以字符串的形式逆序输出
程序不考虑负数的情况,若数字含有0,则逆序形式也含有0,如输入为100,则输出为001
输入描述:
输入一个int整数
输出描述:
将这个整数以字符串的形式逆序输出
c++ code:
#include <iostream>
#include "string.h"
using namespace std;
#define MAX 500
int 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:
- 因为之前的几个题目中的某一段 代码已经实现 了逆序输出,但是这个题目他还要求输入数据 int 的前几位 0 也要进行输出,解决办法如下:
- 输入的时候,不要用int来接收数据,用一个字符数组来接手。关键是要找到前面有几个0
2.1 前面有几个0 = 字符数组的有效长度 - 转换后的int数据(因为转换的时候会去掉前面的0)
2.2 最后输出的时候在末尾加上这几个0。
注意:
代码的 sscanf_s(c, “%d”, &s);
这是在VS2013的环境运行,如果要在OJ上面提交的话,需要把sscanf_s,改为sscanf。