如果在 for 循环的第一个循环中跳过语句

If statement being skipped in first cycle of for loop

本文关键字:循环 语句 for 如果 第一个      更新时间:2023-10-16
#include <iostream>
using namespace std;
int main()
{
    int a[3],b[3];
    int sum,sum2;
    int A_poeni = 0, S_poeni = 0;
    int k,l;
    for (int i=0; i<3; i++)
    {
        sum=0;
        cin >> a[i] >> b[i];
        k = a[i];
        l = b[i];
        //cout << "a[i]: " << a[i] << endl;
        //cout << "b[i]: " << b[i] << endl;
        //cout << "k: " << k << "l: " << l << endl;
        while(k>0)
        {
            sum += k % 10;
            k /= 10;
        }
        sum2=0;
        while(l>0)
        {
            sum2 += l % 10;
            l /= 10;
        }
        //cout << "sum: " << sum << endl;
        //cout << "sum2: " << sum2 << endl;
        if (a[i] % sum == 0)
        {
            cout << "Stefan: " << S_poeni << " " << "Ana: " << A_poeni << endl;
            S_poeni += 2;
            A_poeni -= 1;
        }
        else
        {
            continue;
        }
        if (b[i] % sum == 0)
        {
            cout << "Stefan: " << S_poeni << " " << "Ana: " << A_poeni << endl;
            S_poeni -= 1;
            A_poeni += 2;
        }
        else{
            continue;
        }
    }
    cout << S_poeni << " " << A_poeni << endl;
    return 0;
}

我必须制作一个执行以下操作的程序:

输入数字 x y (100 <=x , y<= 999),其中 x 是 Stefan 的数量,y 是 Ana 的数量。你必须检查他们输入的数字,当你把它除以数字的总和时,得到0,如果是这样,那么x/y得到2分,另一个玩家得到-1分。如果数字不符合该数字,则不会给任何人任何分数。

例如,如果数字是 110,1+1+0 = 2,110%2 = 0,Stefan 得到 2 分,安娜得到 -1.如果数字是 890,8+9+0 = 17,890%17!=0,没有人得到分数。

例如:

101 114
133 360
113 243

输入和输出应为:

-1 5
Ana

我的问题是我在 for 循环中的"if"语句以某种方式被忽略了(仅限第一个循环)。我做了几个测试,但我不知道为什么...

感谢Zifre,错误是:

if (b[i] % sum == 0)

应该是

if (b[i] % sum2 == 0)