2013-07-16 87 views
-2

我试图写反向的数字,实际上我发现了一种方法,而不是在字符串中转换它们,但我的代码仅适用于低于10000000000. 我不知道为什么我甚至将int更改为long long但仍然不起作用。写反向c + +的数字

#include <stdio.h> 
#include <iostream> 



using namespace std; 


/* 
* 
*/ 
int main(int argc, char** argv) { 
long long n; 
scanf("%lld",&n); 
printf("%lld",n%10); 
for (int i=10;i<n;) { 
    i=10*i; 
    printf("%lld",((n%i)-(n%(i/10)))/(i/10)); 
} 
return 0; 
} 
+2

这甚至不是现代的C++,这是C. – Rapptz

+0

即使输入少于10000000000,我也不认为你的代码有效。尝试输入10或100. –

+0

是的,你是对的我直到现在都没注意到thx losif代码看上去更好 – user2588276

回答

2

试试这个

int main(int argc, char** argv) { 
    long long n; 

    scanf("%lld",&n); 
    printf("%lld",n%10); 

    while (n /= 10) { 
     printf("%lld",n%10); 
    } 
    return 0; 
} 
+0

运算符/对于基本数据类型(就像大多数(如果不是全部的话)基本类型的运算符一样)返回其两个操作数中最强类型。 (摘自http://stackoverflow.com/questions/5780578/c-type-of-the-division) –

2

有一个整洁的版本,如图Iosif。但是,如果你对感兴趣,为什么它不起作用,我认为这是因为你需要声明ilong long以及。