解题思路:这个题目要求计算所有7的倍数和含7的数字。7的倍数好求,含7怎么判断呢?答案是分离位数法:先求个位数,如果不是7就通过/10把个位数过滤掉,新的数字继续进行判断过滤操作,直到为0
注意事项:在循环体内嵌套判断,为了不干扰循环赋值,不能直接把数字i丢进去判断,要再建立一个临时变量保存i的值,用这个临时变量去判断;同时判断7的倍数一定要在分离位数代码块之前,不能在分离位数过程中嵌套7的倍数判断,不然会导致某些不符合要求的数因为分离位数符合了7的倍数,错误的被记录;判断一个数字是7的倍数之后,就不再执行后续的分离位数操作了,所以要跳出本次循环,但不能用break,不然就会跳出所有循环。所以要使用continue!
参考代码:
# define _CRT_SECURE_NO_WARNINGS 1
# include<stdio.h>
int main() {
int n;
scanf("%d", &n);
int sum = 0;
for (int j = 1;j <= n;j++)
{
int k = j;//临时变量保存i的值,用临时变量参与后续的判断
if (k % 7 == 0)
{
sum++;
continue;//7的倍数就直接计算在内,并且不执行后续查7元素的代码块
}
while (k > 0)//不是7的倍数,要分离数位查7的元素
{
int m = k % 10;//记录个位数
if (m == 7)
{
sum++;
break;
}
k = k / 10;//如果前一个个位数没有7,那就过滤掉,再循环操作
}
}
printf("%d", sum);
return 0;
}
0.0分
0 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复