反转整数,输入28输出820是为什么?跪求帮看

qq_36334538 2016-10-25 05:30:02
#include <iostream>
using namespace std;

class Integer{
private:
int n;

public:
Integer(int num);
int inversed();
};
Integer::Integer(int num){n=num;}

void Integer::inversed(){
int right_digit;
while(n!=0)
{
right_digit=n%10;
cout<<right_digit;
n=n/10;}

};
int main() {
int n;
cin>>n;
Integer integer(n);
cout <<integer.inversed()<< endl;
return 0;
}
老师要求用类写,求帮看,谢谢
...全文
230 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
小灸舞 2016-10-26
  • 打赏
  • 举报
回复
代码功能归根结底不是别人帮自己看或讲解或注释出来的;而是被自己静下心来花足够长的时间和精力亲自动手单步或设断点或对执行到某步获得的中间结果显示或写到日志文件中一步一步分析出来的。
提醒:再牛×的老师也无法代替学生自己领悟和上厕所!
单步调试和设断点调试(VS IDE中编译连接通过以后,按F10或F11键单步执行,按Shift+F11退出当前函数;在某行按F9设断点后按F5执行停在该断点处。)是程序员必须掌握的技能之一。
  • 打赏
  • 举报
回复

right_digit = n % 10;
if (right_digit == 0 ) {
   if (n>10) {
       cout << right_digit;
    }
}
AlbertS 2016-10-25
  • 打赏
  • 举报
回复
改成这样可以了

#include <iostream>
using namespace std;

class Integer{
private:
	int n;

public:
	Integer(int num);
	void inversed();
};
Integer::Integer(int num){n=num;}

void Integer::inversed(){
	int right_digit;
	while(n!=0)
	{
		right_digit=n%10;
		cout<<right_digit;
		n=n/10;}

};
int main() {
	int n;
	cin>>n;
	Integer integer(n);
	//cout <<integer.inversed()<< endl;
	integer.inversed();
	return 0;
} 
paschen 版主 2016-10-25
  • 打赏
  • 举报
回复
你的inversed声明和实现不一样,帮你改成这样测试没问题:

#include <iostream>
using namespace std;

class Integer{
private:
	int n;

public:
	Integer(int num);
	void inversed();
};
Integer::Integer(int num){n=num;}

void Integer::inversed(){
	int right_digit;
	while(n!=0)
	{
		right_digit=n%10;
		cout<<right_digit;
		n=n/10;
	}
};
int main() {
	int n;
	cin>>n;
	Integer integer(n);
	integer.inversed();
	return 0;
} 
maoxuechun 2016-10-25
  • 打赏
  • 举报
回复
你是不是类里面的函数返回两类型错了啊,你要是用int的话就会在主函数里面输出一个返回值0,加上类函数就是你的结果了!我就是不知道你这个编译怎么会通过的
liuqx0717 2016-10-25
  • 打赏
  • 举报
回复
改成这样就好了 #include <iostream> using namespace std; class Integer { private: int n; public: Integer(int num); void inversed(); //int 改为 void }; Integer::Integer(int num) { n = num; } void Integer::inversed() { int right_digit; while (n != 0) { right_digit = n % 10; cout << right_digit; n = n / 10; } }; int main() { int n; cin >> n; Integer integer(n); //cout << integer.inversed() << endl; integer.inversed(); cout << endl; return 0; } 之前多输出一个0是因为类的定义里面inversed()返回一个整数,实现里面又是返回一个void,输出于是先从inverse函数中的cout输出,再把inversed函数的返回值(默认为0)从main里面的cout输出了
qq_36334538 2016-10-25
  • 打赏
  • 举报
回复
啊啊啊没人吗

64,639

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧