[C] 纯文本查看 复制代码 printf("----------第二种写法-----------\n");
printf("1--100间不包含7且不是7的倍数的数有:");
for(int i = 0; i < 100; i++)
{
// 7能整除i || 个位数 / 7 || 十位数 / 7
int res = (i % 7 == 0 || i % 10 % 7 == 0 || i / 10 % 7 == 0 );
if(res)
{
continue;
}
printf("%d ",i);
}
printf("\n");
/*打印(为了方便观察, 我将十位数相同的放在同一行了):
11 12 13 15 16 18 19
22 23 24 25 26 29
31 32 33 34 36 38 39
41 43 44 45 46 48
51 52 53 54 55 58 59
61 62 64 65 66 68 69
81 82 83 85 86 88 89
92 93 94 95 96 99
*/
/*
先说下这种写法的思路吧:
当 i % 7 = 0 || 个位数 / 7 = 0 || 十位数 / 7 = 0时,说明那个数不符合题意
(我是说用这种写法的人是这么想的)
然而, 他忽略了 0 除以任何数都为 0 ,即 :
0 % 7 = 0, 所以01,02...09,以及10,20...90这些数中,
某些明显数符合题意的数没能正确判断出来
*/ |