此 C++ 代码始终提供相同的输出

this C++ code always gives same output

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

#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。 任何人都可以帮我确定它的原因吗?

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

您随后在程序中进一步使用 n 作为您的 while 条件。这不会有好下场。

#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();   
}