这个C ++代码总是提供相同的输出

时间:2015-03-13 09:37:21

标签: c++ dev-c++

这是一个检查数字及其反转是否相等的程序

#include<iostream>
#include<conio.h>

using namespace std;

int main()
{
 int num,n,digit,j,newNum;
 n=num;
 j=1;
 newNum=0;

cout<<"Enter a number\n";
cin>>num;

while(n>=1)
{
   digit=n%10;
n=n/10;
digit=digit*j;
newNum=newNum+digit;
j=j*10;        
}
  cout<<"The reverse of given number is:"<<newNum<<endl;
  if(num==newNum)
  cout<<"The given number and its reverse are equal";
  else
  cout<<"The given number and its reverse are not equal";
  getch();   
} 

` 该程序接受一个数字作为输入,然后找到它的反向,然后检查反向是否等于数字。         每当我运行这个程序和我给出的任何数字作为输入时,它给出反向数字1975492148。         任何人都可以帮我确定原因吗?

2 个答案:

答案 0 :(得分:1)

作业n=num;的行为是未定义。这是因为num此时尚未初始化。

然后,您可以在程序中稍后使用n作为while条件。这不会很好。

答案 1 :(得分:1)

#include<iostream>
#include<conio.h>

using namespace std;

int main()
{
  int num;
  cout<<"Enter a number\n";
  cin>>num;

  int n = num;
  int rev = 0;
  while( n >= 1 )
  {
    int rem = n%10; 
    rev = (rev*10) + rem;
    n=n/10;
  }


  cout<<"The reverse of given number is:"<<rev<<endl;

  if(num==rev)
    cout<<"The given number and its reverse are equal" << endl;
  else
    cout<<"The given number and its reverse are not equal" << endl;
  getch();   
}