作者:你我皆为凡人
博客主页:你我皆为凡人的博客
名言警句:时间不会为任何人停留,而事物与人,无时不刻也在变化着。每一个人,也都在不停向前!
觉得博主文章写的不错的话,希望大家三连(✌关注,✌点赞,✌评论),多多支持一下!!
系列作品:
[百战成神1]C语言之凡人暴刷小牛【超详细解析,掌握每道题】
[百战成神2]C语言之凡人暴刷小牛【超详细解析,掌握每道题】
[百战成神3]C语言之凡人暴刷小牛【超详细解析,掌握每道题】
[百战成神4]C语言之凡人暴刷小牛【超详细解析,掌握每道题】
[百战成神5]C语言之凡人暴刷小牛【超详细解析,掌握每道题】
目录
文章目录
前言
BC53 计算一元二次方程
描述
输入描述:
输出描述:
示例1
示例2
示例3
示例4
示例5
解析:
代码如下:
BC59 翻转直角三角形图案
描述
输入描述:
输出描述:
示例1
示例2
解析:
代码如下:
BC60 带空格直角三角形图案
描述
输入描述:
输出描述:
示例1
示例2
解析:
代码如下:(两种方法)
BC62 翻转金字塔图案
描述
输入描述:
输出描述:
示例1
示例2
解析:
代码如下:
BC63 菱形图案
描述
输入描述:
输出描述:
示例1
示例2
示例3
解析:
代码如下:
BC64 K形图案
描述
输入描述:
输出描述:
示例1
示例2
示例3
解析:
代码如下:
BC65 箭形图案
描述
输入描述:
输出描述:
示例1
示例2
解析:
代码如下:
BC66 反斜线形图案
描述
输入描述:
输出描述:
示例1
示例2
解析:
代码如下:(两种方式)
BC67 正斜线形图案
描述
输入描述:
输出描述:
示例1
示例2
解析:
代码如下:(两种方式)
BC68 X形图案
描述
输入描述:
输出描述:
示例1
示例2
解析:
代码如下:
总结
内容超详细!!手把手教你如何去解析编程!如果你能听懂C语言,但是一上手就不会了,听完我讲解的题目后,相信你的写代码能力会逐步上升,战胜对编程的恐惧!
提示:以下是本篇文章正文内容,下面案例可供参考
描述
从键盘输入a, b, c的值,编程计算并输出一元二次方程ax2 + bx + c = 0的根,当a = 0时,输出“Not quadratic equation”,当a ≠ 0时,根据△ = b2 - 4*a*c的三种情况计算并输出方程的根。
输入描述:
多组输入,一行,包含三个浮点数a, b, c,以一个空格分隔,表示一元二次方程ax2 + bx + c = 0的系数。
输出描述:
针对每组输入,输出一行,输出一元二次方程ax2 + bx +c = 0的根的情况。
如果a = 0,输出“Not quadratic equation”;
如果a ≠ 0,分三种情况:
△ = 0,则两个实根相等,输出形式为:x1=x2=...。
△ > 0,则两个实根不等,输出形式为:x1=...;x2=...,其中x1 <= x2。
△ < 0,则有两个虚根,则输出:x1=实部-虚部i;x2=实部+虚部i,即x1的虚部系数小于等于x2的虚部系数,实部为0时不可省略。实部= -b / (2*a),虚部= sqrt(-△ ) / (2*a)
所有实数部分要求精确到小数点后2位,数字、符号之间没有空格。
示例1
输入:
2.0 7.0 1.0输出:
x1=-3.35;x2=-0.15示例2
输入:
0.0 3.0 3.0输出:
Not quadratic equation示例3
输入:
1 2 1输出:
x1=x2=-1.00示例4
输入:
2 2 5输出:
x1=-0.50-1.50i;x2=-0.50+1.50i示例5
输入:
1 0 1输出:
x1=0.00-1.00i;x2=0.00+1.00i解析:
1,定义三个浮点数,然后多组输入,注意停止条件
2,分析一下题,需要的条件
1,先定义一个数表示△
2,先进行判断,如果a为0的情况下输出Not quadratic equation
3,如果不为0的话有三种情况:
4,如果△等于0的情况,要输出x1等于x2,求x1与x2,需要-b+-开平方下的△/2*a,而-b+-开平方下的△有可能是0,那么需要有两种,是0的情况和不是0的情况,定义一个数表示b+-开平方下的△,是0的话输出这个数,不是0的话输出-b/(2*a),因为△等于0也没事
5,如果△大于0的情况x1等于-b - sqrt(s) )/ (a * 2),x2等于-b +sqrt(s) )/ (a * 2),注意的是,x1要小于等于x2,所以前面是-,后面是+
6,如果△小于0的情况,需要定义一个实数和虚数,这个时候需要考虑一种情况,因为虚数如果小于0的话,会多出一个负号,需要把这个负号解决掉,所以如果小于0,输出x1=%.2f%.2fi;x2=%.2f+%.2fi\n , a1, a2, a1, fabs(a2),减去一个负号,那么就处理掉x1多出来的符号,而后面加法没办法减去符号,可以取a2的绝对值,让它是正数,这个时候就完美解决掉了多出符号的问题,所以判断小于0则输出以上判断,否则输出题目要求的结果
这个题目很离谱,这几个月增加了好几个比例,导致以前能通过的都过不去,我也是很蒙蔽,花了点时间完成
代码如下:
#include
#include
int main()
{
float a = 0.0;
float b = 0.0;
float c = 0.0;
while (scanf("%f %f %f", &a, &b, &c) != EOF)
{
if (a == 0)
{
printf("Not quadratic equation\n");
}
else
{
float s = b * b - 4 * a * c;
if (s > 0)
{
printf("x1=%.2f;x2=%.2f\n", ((-b - sqrt(s) )/ (a * 2)), ((-b + sqrt(s)) / (a * 2)));
}
else if (s < 0)
{
float a1 = -b / (2 * a);
float a2 = sqrt(-s) / (2 * a);
if(a2 <0)
{
printf("x1=%.2f%.2fi;x2=%.2f+%.2fi\n", a1, a2, a1, fabs(a2));
}
else
{
printf("x1=%.2f-%.2fi;x2=%.2f+%.2fi\n", a1, a2, a1, a2);
}
}
else
{
float xx = -b + sqrt(s);
if (xx == 0)
{
printf("x1=x2=%.2f\n", xx);
}
else
{
printf("x1=x2=%.2f\n", -b / (2 * a));
}
}
}
}
return 0;
}
描述
KiKi学习了循环,BoBo老师给他出了一系列打印图案的练习,该任务是打印用“*”组成的翻转直角三角形图案。
输入描述:
多组输入,一个整数(2~20),表示翻转直角三角形直角边的长度,即“*”的数量,也表示输出行数。
输出描述:
针对每行输入,输出用“*”组成的对应长度的翻转直角三角形,每个“*”后面有一个空格。
示例1
输入:
5输出:
* * * * * * * * * * * * * * *示例2
输入:
6输出:
* * * * * * * * * * * * * * * * * * * * *解析:
1,先定义一个整数,然后多组输入,注意停止条件
2,分析一下题,需要的条件
1,打印一个翻转的直角三角形
2,先判断行数,有n行,然后判断一行打印多少个,我们可以看到,第一行是n个,那么第二行少一个,和i有关,所以小于n-i个就能控制一行打印的个数,打印完一行然后换行
代码如下:
#include
int main()
{
int n = 0;
while(scanf("%d",&n)!= EOF)
{
int i = 0;
for(i=0;i
实现效果:
描述
KiKi学习了循环,BoBo老师给他出了一系列打印图案的练习,该任务是打印用“*”组成的带空格直角三角形图案。
输入描述:
多组输入,一个整数(2~20),表示直角三角形直角边的长度,即“*”的数量,也表示输出行数。
输出描述:
针对每行输入,输出用“*”组成的对应长度的直角三角形,每个“*”后面有一个空格。
示例1
输入:
5输出:
* * * * * * * * * * * * * * *示例2
输入:
4输出:
* * * * * * * * * *解析:
1,先定义一个整数,然后多组输入,注意停止条件
2,分析一下题,需要的条件
1,打印一个带空格的直角三角形图案
2,先观察一下,发现是由两部分组成,倒着的空格三角形与一个正序三角形,那么先来打印一行的数据,创建i,小于n,来实现一行打印的数据,定义j,有两部分,先打印空格,两个空格为一组,第一行有四组,然后递减,小于n-1-i刚好可以控制几组,然后打印星号与空格,第一行一个,递增,刚好小于等于i可以控制
3,还可以分析一下,用坐标的方法实现,可以发现一行两部分组成,而根据坐标,行为i ,列为j,那么空格部分i+j
4,最后注意,打印完一行的记得换行
代码如下:(两种方法)
#include
int main()
{
int n = 0;
while(scanf("%d",&n)!= EOF)
{
int i = 0;
for(i=0;i
#include
int main()
{
int n = 0;
while(scanf("%d",&n)!= EOF)
{
int i = 0;
for(i=0;i
描述
KiKi学习了循环,BoBo老师给他出了一系列打印图案的练习,该任务是打印用“*”组成的翻转金字塔图案。
输入描述:
多组输入,一个整数(2~20),表示翻转金字塔边的长度,即“*”的数量,也表示输出行数。
输出描述:
针对每行输入,输出用“*”组成的金字塔,每个“*”后面有一个空格。
示例1
输入:
5输出:
* * * * * * * * * * * * * * *示例2
输入:
6输出:
* * * * * * * * * * * * * * * * * * * * *解析:
1,先定义一个整数,然后多组输入,注意停止条件
2,分析一下题,需要的条件
1,打印一个翻转金字塔图案
2,先观察一下,发现是由两部分组成,倒着的空格三角形与星号加上空格组成的倒着的金字塔,先打印一行,由n控制,然后打印一行的数据,先打印空格,第一行没有,第二行有一个,递增,那么当i为0的时候,第一行不输出,所以小于i可以控制空格输出,第二部分,打印星号与空格,第一行n个,第二行n-1个,那么可以减去i来控制每一行
3,最后注意,打印完一行的记得换行
代码如下:
#include
int main()
{
int n = 0;
while(scanf("%d",&n) != EOF)
{
int i = 0;
for(i=0;i
描述
KiKi学习了循环,BoBo老师给他出了一系列打印图案的练习,该任务是打印用“*”组成的菱形图案。
输入描述:
多组输入,一个整数(2~20)。
输出描述:
针对每行输入,输出用“*”组成的菱形,每个“*”后面有一个空格。
示例1
输入:
2输出:
* * * * * * * * *示例2
输入:
3输出:
* * * * * * * * * * * * * * * *示例3
输入:
4输出:
* * * * * * * * * * * * * * * * * * * * * * * * *解析:
1,先定义一个整数,然后多组输入,注意停止条件
2,分析一下题,需要的条件
1,打印一个菱形图案
2,先观察一下,发现是由两部分组成,一个是正三角形,一个是反三角形
3,先实现正三角形,正三角由两部分组成,左边是一个空格组成的倒三角,右边是一个星号组成的正三角,左边第一行有n-i个来控制输出,当i为0的时候第一行输出n个,右边有小于等于i个输出,当i等于0的时候,输出1个,打印完一行的内容然后换行
4,然后实现倒三角形,正三角由两部分组成,左边是一个空格组成的正三角,右边是一个星号组成的倒三角,左边第一行有i来控制输出,当i为0的时候第一行输出0个,右边由n+1-i来控制输出,当i等于0的时候,输出n+1个,打印完一行的内容然后换行
代码如下:
#include
int main() {
int n = 0;
while (scanf("%d", &n) != EOF) {
//正的三角形
int i = 0;
for (i = 0; i < n; i++)
{
//空格
int j = 0;
for (j = 0; j
描述
KiKi学习了循环,BoBo老师给他出了一系列打印图案的练习,该任务是打印用“*”组成的K形图案。
输入描述:
多组输入,一个整数(2~20)。
输出描述:
针对每行输入,输出用“*”组成的K形,每个“*”后面有一个空格。
示例1
输入:
2输出:
* * * * * * * * * * *示例2
输入:
3输出:
* * * * * * * * * * * * * * * * * * *示例3
输入:
4输出:
* * * * * * * * * * * * * * * * * * * * * * * * * * * * *解析:
1,先定义一个整数,然后多组输入,注意停止条件
2,分析一下题,需要的条件
1,打印一个K形图案
2,先观察一下,发现是由两部分组成,上部分是倒三角星号加上正三角空格,下部分是正三角星号加上倒三角空格
3,先实现上半部分,上半部分由两部分组成,左边是一个星号组成的梯形,右边是一个空格组成的三角,左边第一行有n+1-i个来控制输出,当i为0的时候第一行输出n+1-0个,右边有小于i个控制输出,当i等于0的时候,输出0个,打印完一行的内容然后换行
4,然后实现下半部分,下半部分由两部分组成,左边是一个空格组成的正三角,右边是一个星号组成的倒三角,左边第一行由小于等于i来控制输出,当i为0的时候第一行输出1个,右边由n-i来控制输出,当i等于0的时候,输出n+1个,打印完一行的内容然后换行
这道题需要注意的是在k行后面有空格的输出,而不是只有k,乍一看看不到后面的空格,这是这道题目比较坑的地方
代码如下:
#include
int main()
{
int n = 0;
while(scanf("%d",&n) != EOF)
{
int i = 0;
//上半部分
for(i=0;i
描述
KiKi学习了循环,BoBo老师给他出了一系列打印图案的练习,该任务是打印用“*”组成的箭形图案。
输入描述:
本题多组输入,每行一个整数(2~20)。
输出描述:
针对每行输入,输出用“*”组成的箭形。
示例1
输入:
2输出:
* ** *** ** *示例2
输入:
3输出:
* ** *** **** *** ** *解析:
1,先定义一个整数,然后多组输入,注意停止条件
2,分析一下题,需要的条件
1,打印一个箭行图案
2,先观察一下,发现是由两部分组成,上部分是倒三角空格加上正三角星号,下部分是正三角空格加上倒三角星号
3,先实现上半部分,上半部分由两部分组成,左边是一个空格组成的倒三角,右边是一个星号组成的正三角,左边第一行有n-i来控制输出,当i为0的时候第一行输出n-0个,右边有小于等于i来控制输出,当i等于0的时候,输出1个,打印完一行的内容然后换行
4,然后实现下半部分,下半部分由两部分组成,左边是一个空格组成的正三角,右边是一个星号组成的倒三角,左边第一行由小于i来控制输出,当i为0的时候第一行输出0个,右边由n+1-i来控制输出,当i等于0的时候,输出n+1-0个,打印完一行的内容然后换行
代码如下:
#include
int main()
{
int n = 0;
while(scanf("%d",&n)!= EOF)
{
//上半部分
int i = 0;
for(i=0;i
描述
KiKi学习了循环,BoBo老师给他出了一系列打印图案的练习,该任务是打印用“*”组成的反斜线形图案。
输入描述:
多组输入,一个整数(2~20),表示输出的行数,也表示组成反斜线的“*”的数量。
输出描述:
针对每行输入,输出用“*”组成的反斜线。
示例1
输入:
4输出:
* * * *示例2
输入:
5输出:
* * * * *解析:
1,先定义一个整数,然后多组输入,注意停止条件
2,分析一下题,需要的条件
1,打印一个反斜线图案
2,可以按照上面拆分的方法做,打印正三角,星号,反三角
3,也可以发现,如果按照坐标的话,第一行一列,二行二列,三行三列,n行n列是星号,用for循环定义,i与j小于n,如果当i等于j的时候,打印星号,否则打印空格
代码如下:(两种方式)
#include
int main()
{
int n = 0;
while (scanf("%d", &n) != EOF)
{
int i = 0;
for (i = 0; i < n; i++)
{
int j = 0;
for (j = 0; j < n; j++)
{
if (i == j)
{
printf("*");
}
else
{
printf(" ");
}
}
printf("\n");
}
}
return 0;
}
#include
int main()
{
int n = 0;
while(scanf("%d", &n) !=EOF)
{
int i = 0;
for(i=0; i
描述
KiKi学习了循环,BoBo老师给他出了一系列打印图案的练习,该任务是打印用“*”组成的正斜线形图案。
输入描述:
多组输入,一个整数(2~20),表示输出的行数,也表示组成正斜线的“*”的数量。
输出描述:
针对每行输入,输出用“*”组成的正斜线。
示例1
输入:
4输出:
* * * *示例2
输入:
5输出:
* * * * *解析:
1,先定义一个整数,然后多组输入,注意停止条件
2,分析一下题,需要的条件
1,打印一个正斜线图案
2,可以按照上面拆分的方法做,打印反三角,星号,正三角
3,也可以发现,如果i+j等于n-1的时候,打印的是星号,否则打印的是空格,打印完一行换行
代码如下:(两种方式)
#include
int main()
{
int n = 0;
while(scanf("%d",&n) != EOF)
{
int i = 0;
for(i=0;i
#include
int main()
{
int n = 0;
while(scanf("%d", &n) != EOF)
{
int i = 0;
for(i=0; i
描述
KiKi学习了循环,BoBo老师给他出了一系列打印图案的练习,该任务是打印用“*”组成的X形图案。
输入描述:
多组输入,一个整数(2~20),表示输出的行数,也表示组成“X”的反斜线和正斜线的长度。
输出描述:
针对每行输入,输出用“*”组成的X形图案。
示例1
输入:
5输出:
* * * * * * * * *示例2
输入:
6输出:
* * * * ** ** * * * *解析:
1,先定义一个整数,然后多组输入,注意停止条件
2,分析一下题,需要的条件
1,打印一个X型图案
2,可以发现,这个是上面两个的结合体,for循环n行n列,如果i等于j的情况下,打印星号,而且如果i加上j的和等于n减1的情况,也打印星号,否则打印空格,打印完一行换行
代码如下:
#include
int main()
{
int n = 0;
while(scanf("%d",&n) != EOF)
{
int i = 0;
for(i=0;i
剖析牛客编程题,让新手更加能够战胜对编程的恐惧,和凡人一起来解决这些题,刷爆牛客网上的题,现阶段是入门题,往后会开出新的专栏 ,一些复杂有难度的题,如果大家觉得凡人的文章还不错,值得观看收藏,希望大家一键三连,多多支持,有什么建议下方评论区留言,或者私信凡人,凡人一定听从意见,最后感谢大家观看!!!