#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语言------刷题攻略:牛客编程入门训练(八):分支控制(二)

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

相关推荐
dragoooon347 小时前
[数据结构——lesson3.单链表]
数据结构·c++·leetcode·学习方法
_oP_i7 小时前
Java 服务接口中解决跨域(CORS,Cross-Origin Resource Sharing)问题
java·开发语言
陈序猿(代码自用版)7 小时前
【考研C语言编程题】数组元素批量插入实现(含图示+三部曲拆解)
c语言·开发语言·考研
77qqqiqi7 小时前
学习循环语句
c语言
唐•苏凯7 小时前
ArcGIS Pro 遇到严重的应用程序错误而无法启动
开发语言·javascript·ecmascript
kyle~7 小时前
排序---冒泡排序(Bubble Sort)
c语言·c++·算法
l1t7 小时前
我改写的二分法XML转CSV文件程序速度追上了张泽鹏先生的
xml·c语言·人工智能·算法·expat
TeleostNaCl8 小时前
OpenWrt | 在 PPP 拨号模式下启用 IPv6 功能
网络·经验分享·智能路由器·ip
摸鱼仙人~8 小时前
深入理解 MyBatis-Plus 的 `BaseMapper`
java·开发语言·mybatis