c++的简单问题,盼解答

来源:百度知道 编辑:UC知道 时间:2024/07/03 09:34:24
#include "iostream.h"
void main()
{
int i;int n=0;
for(i=0;i<=100;i++)
{
if(i%17!=0)
{cout<<i<<' '; n++;}
if(n%5==0)
cout<<endl;

}
cout<<endl;

}

为什么84和86之间多了一个空行?
1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
16 18 19 20 21
22 23 24 25 26
27 28 29 30 31
32 33 35 36 37
38 39 40 41 42
43 44 45 46 47
48 49 50 52 53
54 55 56 57 58
59 60 61 62 63
64 65 66 67 69
70 71 72 73 74
75 76 77 78 79
80 81 82 83 84
86 87 88 89 90
91 92 93 94 95
96 97 98 99 100
Press any key to continue
这是执行结果。你们两个回答的好像是换行,我问的是多出了一个空行

if(i%17!=0)
{cout<<i<<' '; n++;}
if(n%5==0)
cout<<endl;
你把下面的if移到上面的if括号中去,就不会出现你说的情况下。至于原因,二楼已经说过了。

if(i%17!=0)
{cout<<i<<' '; n++;}
if(n%5==0)
cout<<endl;
因为85可以被17整除,所以
不执行if语句的后面那一句{cout<<i<<' '; n++;}
但是,执行再下面那一句
if(n%5==0)
cout<<endl;
而,这时候的n的值跟当i为84的时候的值是一样的 所以 自己去想吧

if(i%17!=0)
{cout<<i<<' '; n++;}

85可以被17整除,所以会执行cout<<i<<" ",空行出现

85除以17会被整除,不执行if语句,而第二个if语句成立~所以到85会endl;了一行
注:C++里,endl是换行的意思

17*5=85