我不明白为什么以下代码总是以0
回答。
#include <iostream>
using namespace std;
int main() {
int n,a,b;
cin>>n;
b=n%10;
while(n!=0) {
a=n%10;
n=n/10;
}
a=b;
b=a;
cout<<n<<endl;
return 0;
}
答案 0 :(得分:2)
要交换两个数字,您需要一个临时寄存器
tmp=a;
a=b;
b=tmp;
但是,如果您尝试在n
中交换数字,则需要更改n
。你在循环中销毁了哪个。事先保留一份副本吗?
或者只是注意floor(log(n)/log(10))
为第一个数字提供10的幂。
n=23456;
int firstdec = pow(10,floor(log(n)/log(10))); // eg 10000
int firstdig = n/firstdec; // eg 2
int lastdig = n%10; // eg 6
int removed = ((n-firstdig*firstdec)/10)*10 ; // eg 3450
int final = removed + lastdig*firstdec + firstdig; // eg 63452
答案 1 :(得分:1)
此
a=b;
b=a;
看起来不错。
你的意思是swap(a, b)
或
int t = a;
a = b;
b = t;
而你实际上并没有改变n
。
答案 2 :(得分:0)
您的代码存在一些问题,例如变量swap。但是,您似乎也希望通过更改a
和b
,相应地更改n
,这是不会发生的。
首先,因为a
和b
不是对数字的引用,所以它们仅仅是副本。其次,您在n
查找loop
中销毁了a
,因此即使您修复了交换,代码仍然会打印0
。
我的建议是将整数转换为字符串,更改第一个和最后一个,然后将其转换回来。它会更简单,更易读。
为了做到这一点,你应该看看stringstream
s。
答案 3 :(得分:0)
jupyter toree install
FileNotFoundError: [Errno 2] No such file or directory: '/usr/local/spark/python/lib'
答案 4 :(得分:-2)
以下是您的代码中缺少的内容。 real =输入值,第一个和最后一个数字= firstd和lastd,i =输入数字的位数。
real -= lastd;
real += firstd;
real -= (firstd*i);
real += (lastd*i);