
🌟菜鸟主页:@晨非辰的主页****
👀学习专栏:《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 计算一元二次方程
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 牛牛是否被叫家长


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 简单计算器


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说祝福语
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 小乐乐求和(高斯公式)


cpp
int main()
{
long n = 0;
scanf("%ld", &n);
printf("%ld\n", n*(n+1)/2);
return 0;
}
思路------
--本题思路简单,应用了高斯定理,简化了求和步骤,因为网站测试有的数值较大,这里用long类型。
6. 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求质数个数

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语言------刷题攻略:牛客编程入门训练(八):分支控制(二)
结语:本篇文章就到此结束了,本文主要是练习剩余分支控制的题目、小部分循环控制题目,后续的题目练习难度会慢慢上来,但总体来说不会太难,喜欢的朋友们,一起来学习吧!欢迎三连~