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

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

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

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

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


目录

[1. BC82 乘法表](#1. BC82 乘法表)

[2. BC83 牛牛学数列1](#2. BC83 牛牛学数列1)

[3. BC84 牛牛学数列2](#3. BC84 牛牛学数列2)

[4. BC85 牛牛学数列3](#4. BC85 牛牛学数列3)

[5. BC86 牛牛学数列4](#5. BC86 牛牛学数列4)

[6. BC87 数位之和](#6. BC87 数位之和)

[7. BC88 魔法数字变换](#7. BC88 魔法数字变换)


1. BC82 乘法表

链接: 牛客网_BC82 乘法表_入门

cpp 复制代码
输出描述:
1*1= 1
1*2= 2 2*2= 4
1*3= 3 2*3= 6 3*3= 9
1*4= 4 2*4= 8 3*4=12 4*4=16
1*5= 5 2*5=10 3*5=15 4*5=20 5*5=25
1*6= 6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36
1*7= 7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49
1*8= 8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64
1*9= 9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81
cpp 复制代码
int main() 
{
    int num1, num2;
    //循环,num2作第2个因子
    for(num2 = 1; num2 < 10; num2++)
    {
        //循环,num1作第1个因子
        for(num1 = 1; num1 <= num2; num1++)
        {
            printf("%d*%d=%2d ", num1, num2, num1*num2);
        }
       printf("\n");
    }
    return 0;
}

思路------

--本题根据样例,两个因子的数值变换------>可知需要循环嵌套来进行数值变换;主要在于搞清楚因子的循环位置,谁外层、谁内层;样例知:第2因子在进行某行输出时会保持不变--外层。


2. BC83 牛牛学数列1

链接:牛客网_BC83 牛牛学数列-入门

cpp 复制代码
int main() 
{
    int n = 0;
    scanf("%d", &n);
    int Sn = 0;
    //循环生成1~n
    for (int i = 1; i <= n; i++)
    {
        int j = i;
        //观察知:偶数位为负值
        if (j % 2 == 0)
        {
            j = -j;

//注意:在判断时,不要直接用i。这样会改变后续i的值,导致循环出错

        }
        Sn += j;
    }
    printf("%d\n", Sn);
    return 0;
}

思路------

--本题还是很简单的,就只需要考虑下何时加负号:观察为偶数项,直接来个循环生成数值时在判断是否为偶数。


3. BC84 牛牛学数列2

链接:牛客网_BC84 牛牛学数列2_入门

cpp 复制代码
int main() 
{
    int n = 0;
    scanf("%d", &n);
    double Sn = 0.0;
    //先循环生成1~n
    for(int i = 1; i <= n; i++)
    {
        double j = 1.0 / i;//赋值生成分数
        Sn += j;
    }
    printf("%.6lf\n", Sn);
    return 0;
}

思路------

--本题注意点与上题相似,需要另创变量接收 i 值,在进行累加操作,防止后续 i 值被覆盖,循环出错;对于格式要求,小子这里不在啰嗦~


4. BC85 牛牛学数列3

链接:牛客网_BC85 牛牛学数列3_简单

cpp 复制代码
int main()
{
    int n = 0;
    double Sn = 0.0;
    int k = 0;
    scanf("%d", &n);
    for (int i = 1; i <= n; i++)
    {
        int  j = 2 * i - 1;
        if (i % 2 == 0)
        {
            j = -j;
        }

        k += j;

//注意:变量之间的赋值关系,创建k的目的是方便进行分母的求和

        Sn += (1.0 / k);
    }
    printf("%.3lf\n", Sn);
    return 0;
}

思路------

--本题在上面的注意点外又另创变量,来分部操作,便于代码的运行、理解;对于格式要求,小子这里不在啰嗦~


5. BC86 牛牛学数列4

链接:牛客网_BC86 牛牛学数列4_入门

cpp 复制代码
int main() 
{
    int n = 0;
    scanf("%d", &n);
    int Sn = 0;
    int j = 0;
    for(int i = 1; i <= n; i++)
    {
        j += i;
        Sn +=j; 
    }
    printf("%d\n", Sn);
    return 0;
}

思路------

--本题结构简单,循环的基础上,进行两次的累加操作即可完成任务。


6. BC87 数位之和

链接:牛客网_BC87 数位之和_入门

cpp 复制代码
int main() 
{
    long n = 0;
    int Sn = 0;
    scanf("%ld", &n);
    do 
    {    
        
        //绝对值
        if (n < 0)
        {
           n = -n;
        }
        Sn += (n % 10);
        n /= 10;//丢掉最末位
    }while (n);
    printf("%d\n", Sn);
    return 0;
}

对于绝对值的执行,可以换条件操作符
 n = (n < 0) ? -n : n;

思路------

--本题要求对于负数取绝对值计算,这里就有两种方式:1. 最为普遍的条件语句,容易想到;2. 条件操作符,这个使者很便利;因为使do-while循环,对于循环的条件直接设置依次取位数的结果,正好循环内用得到。


7. BC88 魔法数字变换

链接:牛客网_BC88 魔法数字变换_入门

cpp 复制代码
int main() 
{
    int n = 0;
    int count = 0;//计数
    scanf("%d", &n);
    do 
    {
        //判断数值属性
        if(n % 2 == 0)
        {
            n /= 2;
           // count++;
        }
        else 
        {
            n = n * 3 +1;
           // count++;
        }
        count++;
    }while (n > 1);
    printf("%d\n", count);  
    return 0;
}

思路------

--本题主体结构依旧采用 do-while 循环,题目要求设置简单,对于循环的条件,因为要求变换到1,直接将>1作为条件。


刷题系列回顾:

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

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

相关推荐
努力的小雨16 小时前
我用 QClaw 做了个 Web3 陪学助手,专治 Java 程序员的“概念劝退”
经验分享·ai智能
LDR00613 天前
Type-C 快充全面升级!LDR6601 赋能个人护理便携电机,重塑剃须刀 / 理发器新体验
c语言·开发语言
雪碧聊技术13 天前
Tree.js是什么?一文讲透
开发语言·javascript·ecmascript
通信小呆呆13 天前
当算法有了“五感”:多模态数据融合如何向人体感官协同学习?
人工智能·学习·算法·机器学习·机器人
码云数智-园园13 天前
C++20 Modules 模块详解
java·开发语言·spring
H__Rick13 天前
自动对焦学习-3
人工智能·学习·计算机视觉
Daisy Lee13 天前
量化学习-第1章-什么是量化金融
学习·金融·datawhale
swordbob13 天前
NIO的channel中什么是 fd(File Descriptor,文件描述符)
java·开发语言·nio
源分享13 天前
Java线程同步的多种实现方法(非常详细)
java·开发语言·jvm
SM1771521183813 天前
NSK紧凑型FA系列丝杠技术详解
经验分享·规格说明书