C if语句的问题

C if语句的问题,c,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; } #包括“stdio.h” int main() { int i; 对于(i=1;i,%运算符是模运算符(整数

在我的书中有一个例子,它被要求编写一个程序,使用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;
}
#包括“stdio.h”
int main()
{
int i;

对于(i=1;i,
%
运算符是模运算符(整数除法的余数)。因此,每五次循环迭代,程序将输出一个
\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
(新行)


希望有帮助。

这意味着如果我被5除,没有余数,则会打印新行字符。

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

if( (i%5) == 0 )
{
    printf("\n");
}
0 % 5 = 0
1 % 5 = 1
2 % 5 = 2
3 % 5 = 3
4 % 5 = 4
5 % 5 = 0
6 % 5 = 1
.........

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

如果条件检查
i
表示的数字是否可被5整除

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

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

1%5 = 1 2%5 = 2 3%5 = 3 4%5 = 4 5%5 = 0 6%5 = 1 等 每五次通过循环,模为零,并打印换行符

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

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

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

这里有一个链接,显示有关

意识到它有时像上面那样被用作一种“把戏”,尽管它完全有效,并且像那样被“到处”使用

我的意思是,它每5行打印一次。:-

(I%5)每5行将为零,“\n”将从下一行开始打印。 1'\t'2'\t'3'\t'4'\t'5'\n'
6.…

请注意,书中给出的程序有点作弊。它不是用制表符将每个数字与下一个数字分开,而是在每个数字后面加一个制表符。因此,每行末尾都有一个不必要的制表符。您可以试着将其作为练习来解决。
printf(“%d%c”,i,(i%5)?“\t”:“\n”)
有趣多了。天哪,在我输入答案的时间里,有6个新答案出现了。换句话说,
x%y==0
这句话在
x
可以被
y
平均整除时是正确的(也就是说,
x
y
的倍数)。将
%y==0
与计数器一起使用的技术是使循环中每隔
y
次发生某件事的一种简单方法。