#C语言——刷题攻略:牛客编程入门训练(十一):攻克 循环控制(三),轻松拿捏!

发布于:2025-09-12 ⋅ 阅读:(17) ⋅ 点赞:(0)

🌟菜鸟主页:@晨非辰的主页

👀学习专栏:《C语言刷题合集》

💪学习阶段:C语言方向初学者

名言欣赏:"代码行数决定你的下限,算法思维决定你的上限。"

前言:在学习编程语言的同时,千万别忘了刷刷题来巩固一下学到的知识,对于牛客网_编程入门系列,小子会持续更新分享刷题过程,其中包括一些基础板块的题目,本次将呈现6道题。

~~注意部分标题括号内代表对题目涉及到的知识进行说明!


目录

1.  BC89 包含数字9的数

2.  BC90 小乐乐算多少人被请家长

3.  BC91 水仙花数

4.  BC92 变种水仙花

5.  BC93 公务员面试

6.  BC94 反向输出一个四位数


1.  BC89 包含数字9的数

链接:牛客网_BC89 包含数字9的数_简单

#include <stdio.h>
int main() 
{
    int count = 0;
    for(int i = 1; i <= 2019; i++)
    {
        int j = i;//接收i值,防止i值混乱
        while(j)
        {
            if(j % 10 == 9)
            {
            count++;
            break;
            }
            j /= 10;
        }
    }
    printf("%d\n", count);
    return 0;
}

思路——

--本题有一个易混点,注意看清题目要求:统计含9的数值个数,而不是数值中9的个数;对于其他就很常规了。


2.  BC90 小乐乐算多少人被请家长

链接:牛客网_BC90 小乐乐算多少人被请家长_简单

#include <stdio.h>
int main() 
{
    int n = 0;
    int C = 0, M = 0, E = 0;
    int count = 0;
    scanf("%d", &n);
    while((scanf("%d %d %d", &C, &M, &E) == 3))
    {
        if((C + M + E) / 3 < 60)
        {
            count++;
        }
    }
    printf("%d\n", count);
    return 0;
}

思路——

--本题的思路非常简单,对于数据的输入直接使用多组输入,不用管输入几行。


3.  BC91 水仙花数

链接:牛客网_BC91 水仙花数_简单

#include <stdio.h>
int main()
{
    int a, b;
    int flag = 0;//定义标志——>no
    int sum = 0;
    while (scanf("%d %d", &a, &b) != EOF)
    {
        //循环生成中间数
        for (int i = a; i <= b; i++)
        {
            int i1 = i;
            sum = 0;//重置
            do
            {
                //i2变量接收余数,便于后续操作
                int i2 = i1 % 10;
                sum = sum + (i2 * i2 * i2);

                //if (sum == i)
                //{
                  //printf("%d ", i);
                  //flag = 1;//至少一个符合
                //}

            } while (i1 /= 10);

            if (sum == i)
                {
                    printf("%d ", i);
                    flag = 1;//至少一个符合
                }
        }
        if (flag == 0)
        {
            printf("no\n");
        }

    }
    return 0;
}

思路——

--本题虽然网站表示难度为简单,其实还是需要一些思路的;

        --在示例测试时,遇到729即使数值不符合,也会打印;因为9*9*9=729,这个逻辑是因为if语句在do-while循环内部造成的将if语句拿到循环外就行.


4.  BC92 变种水仙花

链接:牛客网_BC92 变种水仙花_简单

#include <stdio.h>
int main() 
{
    
    int sum = 0;
    for(int i = 10000; i < 100000; i++)
    {
        //循环进行获取两部分
        for(int j = 10; j <= 10000; j *= 10)
        {
            sum += (i / j) * (i % j);
        }
        if(sum == i)
        {
            printf("%d ", sum);
        }
        sum = 0;
        
    }
    return 0;
}

思路——

--本题思路较为简单,主体结构为两层for循环嵌套,逻辑比较简单,内层循环的设计比较好;当然也可以一层循环后直接进行创建多个变量来赋值'/'、'%'。


5.  BC93 公务员面试

链接:牛客网_BC93 公务员面试_简单

#include <stdio.h>
int main() 
{
    int a[7];//直接存放在数组
    while(scanf("%d %d %d %d %d %d %d", 
            &a[0], &a[1], &a[2], &a[3], &a[4], &a[5], &a[6]) == 7)
    {
        int max = a[0];
        int min = a[0];
        double sum = 0.0;
        for(int i = 0; i < 7; i++) 
        {   
            //先算总和
            sum += a[i];
            //获取最大数
            if(a[i] >= max)
            {
                max = a[i];
            }
            
            //获取最小数
            if(a[i] < min)
            {
                min = a[i];
            }
        }
        sum = sum - (max + min); 
        printf("%.2lf\n", sum / 5.0);
    } 
    return 0;
}

思路——

--本题主要是多组输入处理有点麻烦,直接将数据存储在数组中,后续对于最大值、最小值的获取和其他操作,通过数组下标操作即可。


6.  BC94 反向输出一个四位数

链接:牛客网_BC94 反向输出一个四位数_简单

#include <stdio.h>
int main() 
{
    int a = 0;
    scanf("%d", &a);
    for(int i = 0; i <= 3; i++)
    {
        int j = a % 10;
        a /= 10;
    
        //得到一个余数就打印
        printf("%d", j);

    }
    return 0;
}

思路——

--本题要求逆序打印四位数,直接进行循环取余操作,得到一位就打印一位——>好处就是不用担心0在高位的输出。


刷题系列回顾:

#C语言——刷题攻略:牛客编程入门训练(九):攻克 分支控制(三)、循环控制(一),轻松拿捏!

#C语言——刷题攻略:牛客编程入门训练(十):攻克 循环控制(二),轻松拿捏!

结语:本篇文章就到此结束了,本文主要是练习部分循环控制题目,后续的题目练习难度会慢慢上来,但总体来说不会太难,喜欢的朋友们,一起来学习吧!欢迎三连~ 


网站公告

今日签到

点亮在社区的每一天
去签到