解题思路:这个题目要求计算所有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分

0 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论