解题思路:可以用while拆解个各位,比较通用,但是本题说明了是10000以内的数,就用了简单拆分

注意事项:注意逻辑或||造成的短路问题,使用||时只要有一个条件满足就会count++,但是这个数会不会有第二个1,并不会去做判断。
为了避免代码短路,我们直接用4个if条件句做判断,分别对四位进行判断和操作。
参考代码:

#include <stdio.h>

int main() {

    long long n;

    int ge,shi,bai,qian;

    long long count=0;

    scanf("%lld",&n);

    for(int i = 1; i <= n; i++) {

        ge = i%10;

        shi = i%100/10;

        bai = i/100%10;

        qian = i/1000;

        if(ge==1)count++;

        if(shi==1)count++;

        if(bai==1)count++;

        if(qian==1)count++;

    }

    printf("%lld\n",count);

    return 0;

}


点赞(1)
 

0.0分

1 人评分

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

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

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

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

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

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

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

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

评论列表 共有 0 条评论

暂无评论