提问者:小点点

如何修正这个程序?


我试着把数字倒过来。 例:243>; 342这是我在学校的测验(不评分)

#include <iostream>  
using namespace std;  
int main()  
{  
int n, reverse, rem;    
cout<<"Enter a number: ";    
cin>>n;    
  while(n!=0)    
  {    
     rem=n%10;      
     reverse=reverse/10+rem;    
     n/=10;    
  }    
 cout<<"Reversed Number: "<<reverse<<endl;     
return 0;  
}  

共3个答案

匿名用户

您应该执行reverse=reverse*10+rem;而不是除法:

#include <iostream>  
using namespace std;
int main()
{
    int n=0, reverse=0, rem =0;
    cout << "Enter a number: ";
    cin >> n;
    while (n != 0)
    {
        rem = n % 10;
        reverse = reverse * 10 + rem;
        n /= 10;
    }
    cout << "Reversed Number: " << reverse << endl;
    return 0;
}

匿名用户

你可以试试这个

#include <iostream>  
using namespace std;  
int main()  
{  
int n, reverse=0, rem;    
cout<<"Enter a number: ";    
cin>>n;    
  while(n!=0)    
  {    
     rem=n%10;      
     reverse=reverse*10+rem;    
     n/=10;    
  }    
 cout<<"Reversed Number: "<<reverse<<endl;     
return 0;  
}  

匿名用户

作为一种替代方法,也是一种更干净的方法,您可以将数字转换为字符串,并在此基础上进行操作,如果您的赋值规则允许这样做,转换字符串比转换数字类型更容易。

下面是一个可能的实现:

现场演示

#include <iostream>

int main()
{
    int n;
    std::cout << "Enter a number: ";
    std::cin >> n; 

    std::string str = std::to_string(n); //number to string
    std::string rev; //for reversed string

    for (int rev_it = str.size() - 1; rev_it >= 0; rev_it--)
    {
        rev.push_back(str[rev_it]); // add to rev in reverse order
    }

    std::cout << "Reversed Number as string: " << rev << std::endl; //print as string

    try
    {   
        int rev_n;
        rev_n = std::stoi(rev);               //if you want to get it back to integer
        std::cout << "Reversed Number as int: " << rev_n << std::endl; //print as int
    }
    catch (std::exception& e)
    {
        std::cout << "Can't convert to int"; //if the number is larger than int
    }

    return EXIT_SUCCESS;
}