입력과 같은 정수의 위치를 반대로 할
= 12345
출력 =
54321 난이 있지만, 잘못된 출력 예를 5432
#include <iostream>
using namespace std;
int main(){
int num,i=10;
cin>>num;
do{
cout<< (num%i)/ (i/10);
i *=10;
}while(num/i!=0);
return 0;
}
입력과 같은 정수의 위치를 반대로 할
= 12345
출력 =
54321 난이 있지만, 잘못된 출력 예를 5432
#include <iostream>
using namespace std;
int main(){
int num,i=10;
cin>>num;
do{
cout<< (num%i)/ (i/10);
i *=10;
}while(num/i!=0);
return 0;
}
루프가 너무 일찍 종료됩니다. 한 번 더 반복을 얻을 수
}while(num/i!=0);
}while((num*10)/i!=0);
에 변경 한 코드가 작동합니다.
음을 제공 기억했다 그 정수 나누기는 항상 C에서 0으로 끝나는 것을 반올림합니다. num < 10
과 i = 10
일 경우 num/i
은 무엇이 될까요?
한 번 시도해 본다면 오류가 표시됩니다.
입력 12
1 루프 :
아웃 : 12 % 10 = 1/2 = 2
I = 100
시험 : 1백분의 12 = 0 (정수로)
너무 일찍 중단합니다.
하나의 해결책은
(NUM 개 %의 I)! = NUM에게 많은 솔루션
그냥 하나를 테스트 할 수있다.
것은
다음while (i<10*num)
이
int num = 12345;
int new_num = 0;
while(num > 0)
{
new_num = new_num*10 + (num % 10);
num = num/10;
}
cout << new_num << endl;
내가 그 일을한다면, 나는 (아마도) 새로운 값을 생성하여 시작 했죠 솔루션입니다
으로 while 문 교체 int
을 입력 한 다음 해당 값을 인쇄하십시오. 나는 이것이 코드를 단순화해야한다고 생각한다.의사로서, 같은 것을 볼 것입니다 : 다른 확실한 가능성을 먼저 문자열로 변환하는 것입니다
output = 0;
while (input !=0)
output *= 10
output += input % 10
input /= 10
}
print output
를 다음 역에서 문자열을 인쇄 :
std::stringstream buffer;
buffer << input;
cout << std::string(buffer.str().rbegin(), buffer.str().rend());
int _tmain(int argc, _TCHAR* argv[])
{
int x = 1234;
int out = 0;
while (x != 0)
{
int Res = x % (10);
x /= 10;
out *= 10;
out += Res;
}
cout << out;
}
공용 클래스를 TestDS {
public static void main(String[] args) {
System.out.println(recursiveReverse(234));
System.out.println(recursiveReverse(234 ,0));
}
public static int reverse(int number){
int reversedNumber = 0;
int temp = 0;
while(number > 0){
//use modulus operator to strip off the last digit
temp = number%10;
//create the reversed number
reversedNumber = reversedNumber * 10 + temp;
number = number/10;
}
return reversedNumber;
}
private static int reversenumber =0;
public static int recursiveReverse(int number){
if(number <= 0){
return reversenumber;
}
reversenumber = reversenumber*10+(number%10);
number =number/10;
return recursiveReverse(number);
}
public static int recursiveReverse(int number , int reversenumber){
if(number <= 0){
return reversenumber;
}
reversenumber = reversenumber*10+(number%10);
number =number/10;
return recursiveReverse(number,reversenumber);
}
}
이것은 내 대학 과정의 코딩 과제입니다. 이 할당은 C++의 연산자 오버로딩에 대한 설명 후 바로 제공됩니다. 오버로드가 할당에 사용되어야하는지 여부는 명확하지 않습니다.
다음 코드는 두 자리 숫자로만 작동합니다.
#include<iostream>
using namespace std;
int main() {
int n;
cin >> n;
cout << (n%10) << (n/10);
return 0;
}
이 질문은 꽤 오래되었고 이미 ** 많은 ** 2 자리보다 일반적인 경우에 적합한 대답. 당신의 대답은 왜 더 나은가요? –
int a,b,c,d=0;
cout<<"plz enter the number"<<endl;
cin>>a;
b=a;
do
{
c=a%10;
d=(d*10)+c;
a=a/10;
}
while(a!=0);
cout<<"The reverse of the number"<<d<<endl;
if(b==d)
{
cout<<"The entered number is palindom"<<endl;
}
else
{
cout<<"The entered number is not palindom"<<endl;
}
}
제안하는 솔루션에 대한 설명을 추가하십시오. –
단순히 이런 짓을했는지하지만이 5 개 자리 숫자 개까지 적용 할 수 있지만,이 모든 비트를 반전합니다
#include<iostream>
using namespace std;
void main()
{
int a,b,c,d,e,f,g,h,i,j;
cin>>a;
b=a%10;
c=a/10;
d=c%10;
e=a/100;
f=e%10;
g=a/1000;
h=g%10;
i=a/10000;
j=i%10;
cout<<b<<d<<f<<h<<j;
}`
슬프게도 확장 성이 좋지 않습니다. - 더 큰 숫자에도 확장 가능하도록 채택 할 수 있습니까? –
template <typename T>
T reverse(T n, size_t nBits = sizeof(T) * 8)
{
T reverse = 0;
auto mask = 1;
for (auto i = 0; i < nBits; ++i)
{
if (n & mask)
{
reverse |= (1 << (nBits - i - 1));
}
mask <<= 1;
}
return reverse;
}
도움이되기를 바랍니다 부호 있거나 부호없는 정수 (short, byte, int, long ...). 역방향으로 비트를 프레임하기 위해 추가 매개 변수 nBits를 제공 할 수 있습니다.
i. 이자형. 7 비트 = 00000111 -> 11100000 7 in 4 비트 = 0111 -> 1110
값을 정수로 처리해야합니까? 아니면 문자열이나 문자 배열로 처리 할 수 있습니까? –
정수만, 나는 루프 나 선택 이외의 것을 사용할 수 없다 ... – bbjkdsfj
이미 많은 중복이 있으므로 (이번에는 올해 숙제하는 숙제 질문 인 것 같다. [C 프로그램을 역순으로 숫자] (http://stackoverflow.com/questions/2351251/c-program-for-the-reverse-the-digits) –