C ++ Break语句不起作用

时间:2018-07-02 21:17:51

标签: c++

我对此很陌生,我会尽量通过图片等来简化这篇文章。

我目前正在解决Kattis上的编程问题,

在我的上一篇文章中,这个好人为我对其进行了编辑,以使其看起来不错,它显示了编程问题的图片,但似乎只允许我显示一个链接。

Programming Question

我首先用Java解决了这个问题,尽管我得到了正确的答案,但是由于超过了时间限制,所以无法接受。

我决定用c ++解决它,我将代码从java复制到c ++,看来c ++中的break语句的行为与java不同。

这是我的c ++代码,当我找到答案时,我需要循环完全中断,但是它一直在寻找更多答案。循环在Java中完美中断,有人知道为什么它不能在c ++中工作吗?

#include <iostream>
using namespace std;

int main() {

    int cases;

    cin >> cases;

    for (int i = 0; i < cases; i++)
    {
        int n;
        cin >> n;

        int sum = 0;
        int digits = n;

        while (digits > 0)
        {
            sum += digits % 10;
            digits = digits / 10;
        }

        for (int j = n - 1; j >= 0; j--)
        {
            int sum2 = 0;
            int digits2 = j;

            while (digits2 > 0)
            {
                sum2 += digits2 % 10;
                digits2 /= 10;
            }

            if(sum-1 == sum2)
            {
                cout << j << " " << endl;
                break;
            }
        }
    }
    return 0;
}

1 个答案:

答案 0 :(得分:1)

AFAICT,至少在涉及break语句的情况下,您的代码工作正常。我对其进行了少许修改,以打印出更多信息(在遇到麻烦时这绝不是一个坏主意),现在看起来像这样:

#include <iostream>
using namespace std;

int main() {

    int cases;

    cin >> cases;

    for (int i = 0; i < cases; i++)
    {
        int n;
        cin >> n;

        int sum = 0;
        int digits = n;

        while (digits > 0)
        {
            sum += digits % 10;
            digits = digits / 10;
        }

        cout << "sum=" << sum << "\n";

        for (int j = n - 1; j >= 0; j--)
        {
            int sum2 = 0;
            int digits2 = j;

            while (digits2 > 0)
            {
                sum2 += digits2 % 10;
                digits2 /= 10;
            }

            if(sum-1 == sum2)
            {
                cout << "j=" << j << " " << endl;
                break;
            }
        }
    }
    return 0;
}

输入以下内容:

2
12345
6789

它产生:

sum=15
j=12344 
sum=30
j=6788 

那是您的期望吗?

Live demo-您可以在那里试用代码。另请参阅:Why is "using namespace std" considered bad practice?

也请排除sum_digits()