#C语言——刷题攻略:牛客编程入门训练(九):攻克 分支控制(三)、循环控制(一),轻松拿捏!
🌟菜鸟主页:@晨非辰的主页
👀学习专栏:《C语言刷题合集》
💪学习阶段:C语言方向初学者
⏳名言欣赏:"代码行数决定你的下限,算法思维决定你的上限。"
目录
1. BC73 计算一元二次方程
2. BC75 牛牛是否被叫家长
3. BC77 简单计算器
4. BC78 KiKi说祝福语
5. BC79 小乐乐求和(高斯公式)
6. BC80 奇偶统计
7. BC81 KiKi求质数个数
1. BC73 计算一元二次方程
链接:牛客网_BC73 计算一元二次方程_简单
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 牛牛是否被叫家长_入门
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 简单计算器_简单
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说祝福语_简单
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 小乐乐求和_简单
int main()
{long n = 0;scanf("%ld", &n);printf("%ld\n", n*(n+1)/2);return 0;
}
思路——
--本题思路简单,应用了高斯定理,简化了求和步骤,因为网站测试有的数值较大,这里用long类型。
6. BC80 奇偶统计
链接:牛客网_BC80 奇偶统计_入门
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求质数个数_简单
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语言——刷题攻略:牛客编程入门训练(八):分支控制(二)
结语:本篇文章就到此结束了,本文主要是练习剩余分支控制的题目、小部分循环控制题目,后续的题目练习难度会慢慢上来,但总体来说不会太难,喜欢的朋友们,一起来学习吧!欢迎三连~