首页 > 解决方案 > 必须打印到屏幕才能使程序正常工作

问题描述

所以,我的程序遇到了一些奇怪的问题,如果我写

#include <iostream>
#include <string>

using namespace std;

bool isPalindrome(int);

int main()
{
    int biggestPalindrome = 0;
    for(int i = 999; i > 0; i--)
    {
        for(int j = i; j > 0; j--)
        {
            cout << "Hello" << endl; // This part
            if(isPalindrome(i * j) && i * j > biggestPalindrome) biggestPalindrome = i * j;
            if(i * j < biggestPalindrome) break;
        }
        if(i * (i-1) < biggestPalindrome) break;
    }
    cout << biggestPalindrome;
}

bool isPalindrome(int number)
{
    int temp, rev, digit;
    temp = number;
    do
    {
        digit = number % 10;
        rev = (rev * 10) + digit;
        number /= 10;
    } while(number != 0);
    return temp == rev;
}

在这种情况下程序运行良好,但是当我注释掉第 15 行 ('cout << "Hello" << endl;') 时,程序直接返回 0。

标签: c++

解决方案


在函数isPalindrome中,使用 的值rev而不对其进行初始化。

这意味着您正在使用不确定的值。

在循环之前添加ret = 0;以修复。


推荐阅读