Чего не хватает в этом для цикла - PullRequest
1 голос
/ 02 апреля 2012

Я пытаюсь напечатать на экране это, учитывая любое число, такое как 12:

0+12
1+11
2+10
3+9
4+8
5+7
6+6 equal!
7+5
8+4
9+3
10+2
11+1
12+0

И для этого я пишу следующий код:

#include<stdio.h>

int main (void)
{
    int number, increment;
    scanf("%d", &number);

    for (increment = 0; increment <= number; increment++)
    {
        if ((increment >= 0) && (increment != number)) printf("%d+%d\n", increment, number);
        else if (increment == number) printf("%d+%d equal\n", increment, number);
        else if (number < increment) printf("%d+%d\n", increment, number);
        number--;
    }

    return 0;
}

И мой кодвывод:

0+12
1+11
2+10
3+9
4+8
5+7
6+6 equal
// missing part!

И ничего более .... Что мне нужно исправить в цикле, чтобы показать недостающую часть?

Спасибо.

Ответы [ 3 ]

4 голосов
/ 02 апреля 2012

Вы проверяете increment <= number и постоянно уменьшаете number. По сути, вы теряете 12 полностью. Вы можете сделать это вместо:

for (increment = number; increment >= 0; increment--)
{
    ...
}

Тело цикла должно быть соответственно изменено.

3 голосов
/ 02 апреля 2012

Почему вы должны все усложнить?

for(i=0; i <= num; ++i)
{
    printf("%d+%d%s\n", i, num-i, (i == num-i)? " equal" : "");
}
0 голосов
/ 02 апреля 2012

Я думаю, это потому, что вы уменьшаете число и используете его как переменную управления циклом, что означает, что после добавления к приращению и взятия из числа он будет повторяться только 6 раз, а не 12, как вы думаете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...