反向打印号码
print number in reverse
我只是问这是否可以。我被要求做以下事情。编写一个程序,连续地向用户询问正整数(直到用户输入一个负整数,程序将被终止)。每一个当用户输入一个正整数时,程序将输出这个整数相反。你的程序应该有一个接受整数并返回的函数整数的倒序。要将整数转换成它的反转,程序将调用这个函数。每次输出结束时,我都得到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();
}
- 如何循环打印顶点结构
- 为什么在popback()操作之后,它仍然打印完整的矢量
- 如何在c++中打印目录
- 有一个打印语句的函数是一种糟糕的编程实践吗
- 在线编译器中的分段C++没有打印消息
- 在C++中打印指向不同基元数据类型的指针的内存地址
- 这个指针和内存代码打印是什么?我不知道是打印垃圾还是如何打印我需要的值
- 如何将结构插入到集合中并打印集合的成员
- 在循环C++中指定字符串之后,不会打印该字符串
- 以螺旋方式打印矩阵的程序.(工作不好)
- 从控制台中删除最后打印的元素
- 如何使用Crypto++并为RSA返回可打印的字节/字符数组
- 如何仅使用对象名称打印特定于对象的成员
- 回溯C++不打印函数,因此文件
- 在一定长度后从数组中打印时缺少整数
- 为什么这个 c++ 代码打印出长度 5,当我打印出字符串时,程序会自动终止?
- 在gem5中打印文件中的所有cache_blocks
- 打印号码模式
- 用IO操纵器在十六进制中打印一个8位号码
- 反向打印号码