if语句有问题

时间:2010-08-11 16:47:24

标签: c

在我的书中有一个例子,它要求编写一个程序,使用5列打印数字1到100(每个数字用下一个标签与下一个数字分开)。 解决方案如下:

#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 个答案:

答案 0 :(得分:10)

%运算符是模运算符(整数除法的余数)。因此,每经过五次循环迭代,您的程序将输出一个\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 :(得分:1)

if条件检查i表示的数字是否可以被5整除。

5 % 5 = 0 // remainder 
5 / 5 = 1  // quotient

答案 2 :(得分:0)

这意味着如果我除以5而没有剩余的新行字符被打印

答案 3 :(得分:0)

%是模运算符,它是除法后的余数。要扩展它并使其更容易阅读,

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

因此,如果i除以5的余数为0(如果i可被5整除),则打印换行符。因此,这将发生在i = 5,10,15,20等

答案 4 :(得分:0)

i%5返回模数(除法后的余数)为5.所以

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

每过第5次循环,模数为零,并打印换行符。

答案 5 :(得分:0)

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

%运算符称为模数,它返回第一个参数的余数除以第二个参数。在循环变量上使用它是一种计算每5次迭代的简单方法。

答案 6 :(得分:0)

您的程序打印数字1到100,当数字可以被5整除时,它会转到一个新行。这样,它会创建五列(在列的顶部有1,2,3,4,5)。

答案 7 :(得分:0)

以下链接显示了有关modulus operator.

的更多信息

意识到它有时像上面那样被用作“技巧”,虽然完全有效并且它在那里“无处不在”使用。

通过技巧,我的意思是它用于每5行打印一次。 : - )

答案 8 :(得分:0)

(i%5)每五次为零,'\ n'将从下一行开始打印。 1 '\ T'2' \ T'3 '\ T'4' \ t'5 '\ N' 6 .......