Проблема с оператором if - PullRequest
       1

Проблема с оператором if

3 голосов
/ 11 августа 2010

В моей книге был пример, когда меня попросили написать программу, которая печатает цифры от 1 до 100, используя 5 столбцов (каждый номер отделен от следующего вкладкой). Решение было следующим:

#include "stdio.h"
int main()
{
 int i;

 for(i=1; i<=100; i++) {
  printf("%d\t", i);
  if((i%5)==0) printf("\n");
 }
 return 0;
}

Но я не могу понять оператор if ((i% 5) == 0) printf ("\ n"); . Не могли бы вы объяснить это для меня?

Ответы [ 9 ]

10 голосов
/ 11 августа 2010

Оператор % является оператором модуля (остаток от целочисленного деления).Таким образом, каждые пять итераций цикла ваша программа будет выводить символ \n (новая строка).

Значения будут:

Iteration         i%5 value
      i=1                 1
      i=2                 2
      i=3                 3
      i=4                 4
      i=5                 0
      i=6                 1
      i=7                 2
      i=8                 3
      i=9                 4
     i=10                 0

Итак, каждые пять отпечатков, \nновая строка) будет выведен на стандартный вывод.

Надеюсь, это поможет.

1 голос
/ 11 августа 2010

Условие if проверяет, делится ли число, представленное на i, на 5.

5 % 5 = 0 // remainder 
5 / 5 = 1  // quotient
0 голосов
/ 11 августа 2010

(i% 5) будет равняться нулю каждый пятый раз, а '\ n' начнет печатать со следующей строки. 1 '\ t'2' \ t'3 '\ t'4' \ t'5 '\ п' 6 .......

0 голосов
/ 11 августа 2010

Вот ссылка, которая показывает больше об операторе модуля .

Поймите, что он используется как "хитрость", иногда как выше, хотя полон действителен и используется "везде"вот так.

Под трюком я подразумеваю, что он используется для печати чего-то каждые 5 строк.: -)

0 голосов
/ 11 августа 2010

Ваша программа печатает числа от 1 до 100, и когда число делится на 5, оно переходит на новую строку. Таким образом, создается пять столбцов (с 1, 2, 3, 4, 5 над столбцами).

0 голосов
/ 11 августа 2010
0 % 5 = 0
1 % 5 = 1
2 % 5 = 2
3 % 5 = 3
4 % 5 = 4
5 % 5 = 0
6 % 5 = 1
.........

Оператор% называется модулем, он возвращает остаток первого аргумента, разделенный на второй аргумент.Использование его в переменной цикла - простой способ подсчитывать каждые 5 итераций.

0 голосов
/ 11 августа 2010

i%5 возвращает по модулю (остаток после деления) 5. Так что

1%5 = 1
2%5 = 2
3%5 = 3
4%5 = 4
5%5 = 0
6%5 = 1
etc...

Каждый пятый раз в цикле модуль равен нулю и выводится новая строка.

0 голосов
/ 11 августа 2010

% - оператор по модулю, который является остатком после деления.Чтобы развернуть его и упростить чтение,

if( (i%5) == 0 )
{
    printf("\n");
}

Итак, если остаток от i, деленный на 5, равен 0 (если i делится на 5 равномерно), выведите новую строку.Итак, это произойдет в i = 5, 10, 15, 20 и т. Д.

0 голосов
/ 11 августа 2010

Это означает , если я делю на 5 без остатка, печатается символ новой строки .

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