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

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

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

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

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

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

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


目录

[1. BC89 包含数字9的数](#1. BC89 包含数字9的数)

[2. BC90 小乐乐算多少人被请家长](#2. BC90 小乐乐算多少人被请家长)

[3. BC91 水仙花数](#3. BC91 水仙花数)

[4. BC92 变种水仙花](#4. BC92 变种水仙花)

[5. BC93 公务员面试](#5. BC93 公务员面试)

[6. BC94 反向输出一个四位数](#6. BC94 反向输出一个四位数)


1. BC89 包含数字9的数

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

cpp 复制代码
#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 小乐乐算多少人被请家长_简单

cpp 复制代码
#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 水仙花数_简单

cpp 复制代码
#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 变种水仙花_简单

cpp 复制代码
#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 公务员面试_简单

cpp 复制代码
#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 反向输出一个四位数_简单

cpp 复制代码
#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语言------刷题攻略:牛客编程入门训练(十):攻克 循环控制(二),轻松拿捏!

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

相关推荐
xiaoxiaoxiaolll3 小时前
期刊速递 | 《Light Sci. Appl.》超宽带光热电机理研究,推动碳纳米管传感器在制药质控中的实际应用
人工智能·学习
lichong9513 小时前
API开发工具postman、国内xxapi和SmartApi的性能对比
eclipse·intellij-idea·api·postman·visual studio·apipost·apifox
嫣语岁月3 小时前
【BMS电池管理】基于BQ76920与STM32的BMS设计开发
c语言·vscode·stm32·单片机·嵌入式硬件
励志码农4 小时前
JavaWeb 30 天入门:第二十三天 —— 监听器(Listener)
java·开发语言·spring boot·学习·servlet
天高云淡ylz4 小时前
子网掩码的隐形陷阱:为何能ping通却无法HTTPS访问
开发语言·php
DisonTangor4 小时前
字节开源 OneReward: 通过多任务人类偏好学习实现统一掩模引导的图像生成
学习·ai作画·开源·aigc
黎宇幻生5 小时前
Java全栈学习笔记33
java·笔记·学习
2501_926227945 小时前
.Net程序员就业现状以及学习路线图(五)
学习·.net
希望20176 小时前
Golang Panic & Throw & Map/Channel 并发笔记
开发语言·golang