解题思路: 通过除和取余的运算找到符合条件的数:
i % 7 == 0 (7的倍数) i % 10 == 7(个位上是7的数)
(i / 10) % 10 == 7 (十位上是7的数) (i / 100) % 10 == 7(百位上是7的数)
心得:由解题要求,判断的情况最多是到百位上,若数字更大则可通过编写函数来实现(递归或循环),而不用写一长串的判断语句
然后用一个数组,下标分别与甲乙丙丁对应,进行相应元素+1的计数即可。
解题代码:
#include<stdio.h>
int main()
{
int i, n;
scanf("%d", &n);
int count[5] = { 0 };
for (i = 1; i <= n; i++)
{
if (i % 7 == 0 || i % 10 == 7 || (i / 10) % 10 == 7 || (i / 100) % 10 == 7)
{
if (i % 4 == 0) //余0对应丁
count[4]++;
else
count[i % 4]++; //余1,2,3分别对应甲乙丙
n++; //题目要求不计入被跳过的数
}
}
for (i = 1; i <= 4; i++)
printf("%d\n", count[i]);
}
看完觉得有觉得帮助的话不妨点赞收藏鼓励一下,有疑问或看不懂的地方或有可优化的部分还恳请朋友们留个评论,多多指点,谢谢朋友们!