反向打印号码

print number in reverse

本文关键字:号码 打印      更新时间:2023-10-16

我只是问这是否可以。我被要求做以下事情。编写一个程序,连续地向用户询问正整数(直到用户输入一个负整数,程序将被终止)。每一个当用户输入一个正整数时,程序将输出这个整数相反。你的程序应该有一个接受整数并返回的函数整数的倒序。要将整数转换成它的反转,程序将调用这个函数。每次输出结束时,我都得到0。请解释原因。另外,如果我使用void main函数,我会得到垃圾。请解释原因。提前感谢

这是我的代码....

#include<iostream>
#include<cstdlib>
using namespace std;
int reverseNum(int num){
    for(int j=num; j>0; j--)
        cout<<j<<" ";
        cout<<endl;
    return false;
}
int main(){
    double enternum = 0;
    do{
        cout<<"Enter a positive number > 0, to begin countdown ";
        cin >>enternum; 
        cout<<reverseNum(enternum);
        cout<<endl;
    }
    while(enternum>0);
    if(enternum<=0)
        cout<<"Invalid entry, good bye.";
    cout<<endl;
    return 0;
}

因为:return false; -我将把它留给你来弄清楚剩下的…

函数应该反转整数,然后返回结果。例如,如果输入是123,则函数返回321。

你的函数输出一个倒计时并返回0 (=false)。

要反转一个数字,您可以a)将其转换为字符串,反转字符串,将其转换回整数;B)直接对整数进行除法/乘法/加法/模运算

在c++中,不使用void main()0,因为当您return false时,bool类型的结果被隐式转换为int并在cout<<reverseNum(enternum);

行打印。

同样,在这一行中,double enternum = 0;您想要一个整数int

从你的文本,我认为该程序是按预期工作,但从阅读代码,我认为它只是从数字倒数。这是你想要的吗?我将像这样实现它(这里函数返回一个整数也有意义):

int reverseNum(int num)
{
    int reverse = 0;
    [...] // Do the actual reversing
    return reverse;
}

你的程序应该有一个接受一个整数并返回一个反向整数的函数

你的reverseNum函数应该返回反向整数,而不是false。它也不应该打印号码,应该是调用者打印的。

i = reverseNum(1234);

那么我应该包含4321作为一个整数(不是字符串)。

你一直得到0的原因是因为false等于0作为整数

您应该完整地阅读c++常见问题解答。你应该特别读读这个。您还应该学习如何调试代码。如果您在调试器中逐步执行代码,那么您在这里给出的所有答案都将是显而易见的。

为了好玩,我尝试了一个通用实现,它支持编译器支持的任何整数或浮点类型。

请注意,这里有一些问题:

  • 反转浮点数在语义上没有很好地定义(如何定位小数分隔符?我们如何处理指数符号?)
  • 浮点类型通常是不精确的(至少常见的IEEE格式是),因此缩放输入将引入人为的小数。我没有花太多的精力去做适当的舍入,所以有些数字会反转成奇怪的东西(例如123.0可以反转成992.1而不是321.0 (未经测试的输入,尝试一些自己))
  • 的实现是可笑的模板快乐。把它看作是这个有趣的答案的教学部分。

哦,取消DEBUGTRACE定义的注释到…获取调试跟踪:)

看到它住在这里<子> (点击) <一口> TM

#include <cmath>
#include <limits>
#include <iostream>
#define MAX_DECIMAL_FRACTION 5
#define DEBUGTRACE(x) // do { std::cerr << x; } while (false)
template <typename T, bool is_integer> struct reverse_impl;
template <typename T>
    struct reverse_impl<T, true>
{
    static T reverse(T input)
    {
        T output;
        for (output = 0; input; input/=10)
            output = (output * 10) + input % 10;
        return output;
    }
};
template <typename T>
    struct reverse_impl<T, false>
{
    static T reverse(T input)
    {
        if (std::abs(input) <= std::numeric_limits<T>::epsilon())
            return T(0);
        // scale input
        int log10 = (int) (std::log(input)/std::log(T(10)));
        input *= std::pow(10, MAX_DECIMAL_FRACTION);
        input = std::floor(input);
        input /= std::pow(10, log10+MAX_DECIMAL_FRACTION);
        DEBUGTRACE("debug: scaled " << input << " digits: ");
        int iteration = std::max(log10+MAX_DECIMAL_FRACTION, MAX_DECIMAL_FRACTION);
        if (std::floor(input) < 1)
        {
            input *= 10;
            iteration--;
        }
        T output;
        for (output = T(0); 
             iteration-- && std::floor(input) >= 1; 
             input-=std::floor(input), input*=T(10))
        {
            output = (output / T(10)) + std::floor(input);
            DEBUGTRACE(std::floor(input));
        }
        DEBUGTRACE(std::endl);
        return output * std::pow(10, log10);
    }
};
template <typename T>
    T reverse(T input)
{ 
    return reverse_impl<T, std::numeric_limits<T>::is_integer>::reverse(input); 
}
int main()
{
    std::cout << reverse(-123l) << std::endl;
    std::cout << reverse(123ul) << std::endl;
    std::cout << reverse(123456.0) << std::endl;
    std::cout << reverse(0.027f) << std::endl;
    return 0;
}
             ***//here is the simple solution to find reverse of a function***  
#include<iostream.h>
#include<conio.h>
void main()
{
 int n,a,c,d,b;
clrscr();
cout<<"enter five integers";
 cin>>n;
 a=n/10000;
 n=n%10000;
 b=n/1000;
 n=n%1000;
 c=n/100;
 n=n%100;
 d=n/10;
 n=n%10;
 cout<<"number in reverse order is"<<n<<d<<c<<b<<a;
 getch();
 }