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

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

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

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

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


目录

[1. BC73 计算一元二次方程](#1. BC73 计算一元二次方程)

[2. BC75 牛牛是否被叫家长](#2. BC75 牛牛是否被叫家长)

[3. BC77 简单计算器](#3. BC77 简单计算器)

[4. BC78 KiKi说祝福语](#4. BC78 KiKi说祝福语)

[5. BC79 小乐乐求和(高斯公式)](#5. BC79 小乐乐求和(高斯公式))

[6. BC80 奇偶统计](#6. BC80 奇偶统计)

[7. BC81 KiKi求质数个数](#7. BC81 KiKi求质数个数)


1. BC73 计算一元二次方程

链接:牛客网_BC73 计算一元二次方程_简单

cpp 复制代码
int main()
{
   float a = 0.0f, b = 0.0f, c = 0.0f;
   while (scanf("%f %f %f", &a, &b, &c) != EOF)
   {
       //求根公式变量
       float delta = b * b - 4 * a * c;//变量delta是数学中常用符号Δ

       float x1 = 0.0f;
       x1 = (-b - sqrt(delta)) / (2 * a);
       float x2 = 0.0f;
       x2 = (-b + sqrt(delta)) / (2 * a);

       //第一种情况
       if (a == 0)
       {
           printf("Not quadratic equation\n");
       }

       //a!=的情况        
       else
       {

           if (delta == 0)
           {
               //特例-符号情况
               if ((-b - sqrt(delta)) == 0 || (-b + sqrt(delta)) == 0)//被除数为0
               {
                   printf("x1=x2=0.00\n");//防止-b符号影响最后输出(不默认-0 输出 0)
               }
               else
               {
                   printf("x1=x2=%.2f\n", x1);
               }
           }
           else if (delta > 0)
           {
               printf("x1=%.2f;x2=%.2f\n", x1, x2);
           }
           else
           {
               //对于复数运算,另创变量-实、虚
               float real = (-b / (2 * a));
               float imag = (sqrt(-delta) / (2 * a));
               //x1 = (-b / (2 * a)) - (sqrt(-delta) / (2 * a));
               //x1 = (-b / (2 * a)) + (sqrt(-delta) / (2 * a));
               printf("x1=%.2f-%.2fi;x2=%.2f+%.2fi\n", real, imag, real, imag);
           }
       }
   }
   return 0;
}

思路------

--本题使用了sqrt函数,包含<math.h>头文件;其次要考虑符号问题:代码中写到编译器不默认-0输出0,就需要另加判断输出0;然后就是复数输出问题,也要写出特定的格式输出。


2. BC75 牛牛是否被叫家长

链接:牛客网_BC75 牛牛是否被叫家长_入门

cpp 复制代码
int main()
{
    int a, b, c;
    scanf("%d %d %d", &a, &b, &c);
    
    if(a + b + c < 180){
        printf("YES\n");
    }else{
        printf("NO\n");
    }
    
    return 0;
}

思路------

--本题结构简单,为基础的条件判断,输入输出模式。嘴遁~~


3. BC77 简单计算器

链接:牛客网_BC77 简单计算器_简单

cpp 复制代码
int main() 
{
    double a = 0.0, b = 0.0;
    char c =0;
    scanf("%lf%c%lf", &a, &c, &b);
    if(c == '+')
    {
        printf("%.4lf+%.4lf=%.4lf\n", a, b, a+b);
    }
    else if(c == '-')
    {
        printf("%.4lf-%.4lf=%.4lf\n", a, b,a-b);

    }
    else if(c == '*')
    {
        printf("%.4lf*%.4lf=%.4lf\n", a, b, a*b);

    } 
    else if(c == '/')
    {
        if(b == 0.0)
        {
            printf("Wrong!Division by zero!\n");
        }
        else 
        {
            printf("%.4lf/%.4lf=%.4lf\n", a, b, a/b);
        }
    }
    else
    {
        printf("Invalid operation!\n");
    }
    return 0;
}

思路------

--本题只要根据要求描述进行条件的书写即可,注意浮点数类型用的是double ,格式符为**%lf**。


4. BC78 KiKi说祝福语

链接:牛客网_BC78 KiKi说祝福语_简单

cpp 复制代码
int main() 
{
    int a = 0;
    scanf("%d", &a);
    for(int i = a; i > 0; i--)
    {
        printf("Happy new year!Good luck!\n");
    }
    return 0;
}

思路------

--本体为简单的IO模式,循环条件简单;嘴遁~~


5. BC79 小乐乐求和(高斯公式)

链接:牛客网_BC79 小乐乐求和_简单

cpp 复制代码
int main() 
{
    long n = 0;
    scanf("%ld", &n);
    printf("%ld\n", n*(n+1)/2);
    return 0;
}

思路------

--本题思路简单,应用了高斯定理,简化了求和步骤,因为网站测试有的数值较大,这里用long类型。


6. BC80 奇偶统计

链接:牛客网_BC80 奇偶统计_入门

cpp 复制代码
int main() 
{
    int N = 0;
    scanf("%d", &N);
    int count_even = 0;//记录偶数个数
    int count_odd = 0;//记录奇数个数
    for(int i = 1; i < N+1; i++)
    {
        if(i % 2 == 0)
        {
            count_even++;
        }
        else 
        {
            count_odd++;
        }
    }
    printf("%d %d\n", count_odd, count_even);
    return 0;
}

思路------

--本题只需要根据奇偶数判断规则进行书写;在创建变量进行统计个数。


7. BC81 KiKi求质数个数

链接:牛客网_BC81 KiKi求质数个数_简单

cpp 复制代码
int main()
{
    int count_Prime = 0;
    int i = 0;
    int x = 0;
    int flag = 0;//标识,为0表示i为质数
    for (i = 100; i <= 999; i++)
    {

        //对于质数的性质,发现可以只考虑奇数部分--节省大量时间
        if (i % 2 == 0)//判断i为偶数,直接下一个数
        {
            continue;
        }

        flag = 0;//重置flag

        //奇数像9就不是质数,所以还要判断

        for (x = 3; x <= sqrt(i); x++)//像9、25这样的,只用检查到sqrt(i)就行
        {
            if (i % x == 0)//i是否可以被除了1、i的数整数
            {
                flag = 1;//不是质数

                break;//i能被整除,直接结束这次循环判断
            }
        }

        if (flag == 0)
        {
            count_Prime++;//计数
        }

    }
    printf("%d\n", count_Prime);
    return 0;
}

思路------

--本题有两个巧妙地点,一是对于直属的判断只需要在奇数部分进行筛选 ;二是对于质数中不符合条件的进行判断用到了sqrt函数,就行例子9,只需要考虑到开方数


刷题系列回顾:

#C语言------刷题攻略:牛客编程入门训练(八):分支控制(二)

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

相关推荐
翔云 OCR API16 分钟前
承兑汇票识别接口技术解析-开发者接口
开发语言·前端·数据库·人工智能·ocr
阿恩.7701 小时前
2026年1月最新计算机、人工智能、经济管理国际会议:选对会议 = 论文成功率翻倍
人工智能·经验分享·笔记·计算机网络·金融·区块链
小白学大数据1 小时前
基于Splash的搜狗图片动态页面渲染爬取实战指南
开发语言·爬虫·python
xlq223221 小时前
22.多态(下)
开发语言·c++·算法
未来之窗软件服务2 小时前
操作系统应用(三十三)php版本选择系统—东方仙盟筑基期
开发语言·php·仙盟创梦ide·东方仙盟·服务器推荐
是Dream呀2 小时前
昇腾实战|算子模板库Catlass与CANN生态适配
开发语言·人工智能·python·华为
零匠学堂20252 小时前
移动学习系统,如何提升企业培训效果?
java·开发语言·spring boot·学习·音视频
小杨快跑~2 小时前
从装饰者到桥接再到工厂:模式组合的艺术
java·开发语言·设计模式
say_fall2 小时前
C语言编程实战:每日一题:随机链表的复制
c语言·开发语言·链表