首页 > 试题广场 >

倒着输出整数

[编程题]倒着输出整数
  • 热度指数:1575 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 62M,其他语言125M
  • 算法知识视频讲解
C写一个输入的整数,倒着输出整数的函数,要求用递归方法。

输入描述:
一个整数


输出描述:
该整数的倒序输出
示例1

输入

-1563

输出

-3651

python

a = input()
res=(a[::-1].lstrip("0") if "-" not in a else "-" + a[1::][::-1].lstrip("0"))
print(res if res else "0")

如果尾数有0,要把它去掉,(例如200翻转以后为002);也要注意特殊情况(例如输入为0去掉后就为空了)。

发表于 2019-02-24 11:58:55 回复(1)
#include <stdio.h>
#include <stdlib.h>

int main(void) {
  int n;
  scanf("%d", &n);
  int ans = 0;
  while (n) {
    ans = ans * 10 + n % 10;
    n /= 10;
  }
  printf("%d", ans);
  return 0;
}

发表于 2021-07-09 11:57:13 回复(0)
Python3
# python字符串操作,但是这个整数的倒序并不包括符号位,需要做一个判断
# 另外,倒序之后高位不能为零
ns = input()
if ns[0] == '-':
    print(ns[0] + ns[len(ns)-1:0:-1].lstrip('0'))  # lstrip('x') 去除字符串左边的指定字符
    # len(s)获取字符串的长度,直接获取len(s)位置的字符是越界的,但是不会报错,因为字符串最后面会跟一个"\0"字符
    # "\0"字符表示字符串的结束,从这个字符开始读取,只能读到空
else:
    t = ns[::-1].lstrip('0')
    print(t if t else '0')    # 输入是0会被过滤掉,需要判断一下

发表于 2019-08-15 22:43:49 回复(0)
import java.math.BigInteger;
import java.util.*;

public class Main {
    private static final int N_MAX = 105;
    private static StringBuilder sb = new StringBuilder();
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int p = sc.nextInt();
        if (p < 0) { sb.append("-"); };
        solve(Math.abs(p));
        System.out.println(sb.toString());
    }
    private static boolean flag = false;
    private static void solve(int n) {
        if (n !=0) {
            if (n%10 != 0 || flag) {
                sb.append(n % 10);
                flag = true;
            }
            solve(n / 10);
        }
    }
}
发表于 2019-02-08 11:01:45 回复(0)
#include <bits/stdc++.h>
using namespace std;

int main()
{
    string n;
    cin >> n;
    if(n[0] == '-')
    {
        cout << "-";
        n = n.substr(1,n.length());
    }
    reverse(n.begin(), n.end());   //反转字符串
    cout << atoi(n.c_str());    //将string型强制转换成int型
    return 0;
}
C++和Python求解,就是不用题目规定的C语言递归,皮这一下很开心。 
n = input()
if n[0] == '-':
    print('-'+str(int(n[len(n):0:-1])))  #先强制转换成int防止数字0开头
else:
    print(int(n[::-1]))

编辑于 2019-01-10 13:46:01 回复(0)
package main

import (
    "fmt"
)

func main() {
    var x int
    fmt.Scan(&x)
    fmt.Print(handle(x))
}

func handle(x int)int{
    flag:=true
    if x<0{
        flag=false
        x=-x
    }
    ans:=0
    for x>0{
        ans=ans*10+x%10
        x/=10
    }
    if !flag{
        return -ans
    }
    return ans
}

发表于 2023-03-21 12:24:27 回复(0)
#include<iostream>
int main()
{
    int n;
    while(std::cin>>n)
    {
        int num=0;
        while(n)
        {
            num=num*10+n%10;
            n/=10;
        }
        std::cout<<num<<std::endl;
    }
    return 0;
}
发表于 2020-09-17 23:57:54 回复(0)
import java.util.*;
public class Main{
    public static void main(String[] args){
        int temp=0;
        Scanner sc=new Scanner(System.in);
        int num=sc.nextInt();
        reverse(temp,num);
    }
    public static void reverse(int temp,int num){
        if(num!=0){
            temp=temp*10+num%10;
            num=num/10;
            reverse(temp,num);
        }else{
            System.out.println(temp);
        }
    }
}

发表于 2020-07-24 15:10:27 回复(0)
#include <iostream>

using namespace std;

int reverse(int x, int cur){

    if(x==0){
        return cur;
    }

    return reverse(x/10, 10*cur+x%10);

}

int main(){

    int n;
    while(cin >> n){

        int flag = 1;
        if(n<0){
            flag = -1;
            n = -n;
        }

        int result = flag*reverse(n, 0);

        cout << result << endl;

    }
    return 0;
}
发表于 2020-03-31 10:16:11 回复(0)
不会写C
import java.util.*;
public class Main{
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);
        int n=sc.nextInt();
        String s="";
        if(n<0){
            s+="-";
        }
        getResult(s,Math.abs(n),true);
    }
    public static void getResult(String s,int n,boolean isFirst){
        if(n==0){
            System.out.println(s);
            return ;
        }
        int t=n%10;
        if(t==0&&isFirst){
            getResult(s,n/10,true);
        }else{
            s+=t;
            getResult(s,n/10,false);
        }
    } 
}

发表于 2019-06-18 20:27:02 回复(0)
#include <stdio.h>

void reverse(int x, int* res){
    if (x == 0) {
        return;
    }
    *res = *res * 10 + x % 10;
    reverse(x / 10, res);
}



int main() {
    int x, sign;
    scanf("%d", &x);
    if (x < 0) {
        sign = -1;
        x = -x;
    } else {
        sign = 1;
    }
    int res = 0;
    /*
    while (x != 0) {
        res = res * 10 + x % 10;
        x = x / 10;
    }
    */
    int* pres = &res;
    reverse(x, pres);
    printf("%d", sign * res);
    return 0;
}

发表于 2019-03-14 15:18:48 回复(0)
#include <iostream>
using namespace std;

void reverse(int num, bool flag) {
    if (flag) cout << num % 10;
    else if (num % 10) {
        cout << num % 10;
        flag = true;
    }
    if (num /= 10) reverse(num, flag);
}

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    int n;
    cin >> n;
    if (n < 0) {
        cout << "-";
        n = -n;
    }
    reverse(n, false);
} 

发表于 2019-01-18 15:43:05 回复(0)
注意题目要求,递归,不知道考不考虑int范围的问题
#include <stdio.h>
void fun (int x,int ans)
{
    if(x!=0)
    {
        ans=ans*10+(x%10);
        x/=10;
        fun(x,ans);
    }
    else
    {
        printf("%d",ans);
    }
}
int main()
{
    int x;
    scanf("%d",&x);
    fun(x,0);
    return 0;
}
发表于 2018-08-05 11:09:04 回复(0)