#include <stdio.h>
int main()
{
int n;
while (scanf("%d", &n) != EOF)
{
int nums[11];
int len = 0;
int count = n;
while (count > 0) {
nums[len] = count % 10;// 从个位开始存数字进数组 倒序存储
count /= 10;
len++; // len 为位数 小于等于10
}
int i, number = 0;
// 排除法 算出1-n中不含6的数字的个数
for (i = len - 1; i >= 0; i--)
{
if (nums[i] <= 0) continue;
if (nums[i + 1] == 6 && i < len - 1) break; // 假设输入为456789 那么从456000 - 456789 中每一位都包含6,所以不需要以下计算
int num;
if (nums[i] > 6) num = nums[i] - 1;
else num = nums[i];
int point = i;
while (point > 0) {
num *= 9;
point--;
}
if (nums[i] == 6) num -= 1; // 例子中 4560 的 6 在此处减去
number += num;
}
// 减去所有不含6的个数,则为含6的个数
printf("%d\n", n - number);
}
}
请问for循环后面是什么原理?