第1关:求一元二次方程的根
任务描述
本关任务:编写一个求一元二次方程的根的小程序。
相关知识
为了完成本关任务,你需要掌握:
- 输入、输出函数的使用;
- 判断语句;
- 数学函数。
输入、输出函数的使用
-
printf
函数:printf
函数用于将数据输出到标准输出设备(通常是屏幕)。它可以输出各种类型的数据,如字符串、整数、浮点数等。printf
函数的格式化输出可以通过占位符来控制输出的格式。 函数功能:按规定格式向输出设备(一般为显示器)输出数据,并返回实际输出的字符数;若出错,则返回负数。 它使用的一般形式为:printf("格式控制字符串”,输出项列表);
-
scanf
函数:scanf
函数用于从标准输入设备(通常是键盘)读取输入数据。它可以接收各种类型的输入,如字符串、整数、浮点数等。scanf
函数的格式化输入可以通过占位符来指定输入的格式。 函数功能:按规定格式从键盘输入若干任何类型的数据给argument
所指的单元。这回读入并赋给argument
的数据个数;遇文件结束返回 EOF;出错返回 0。 它使用的一般形式为:scanf(“格式控制字符串”,地址列表);
注:scanf("%lf%lf%lf", &a, &b, &c);可实现双精度实数的输入。
判断语句
if 语句用于判断一个条件是否成立,如果条件为真,则执行 if 语句后面的代码块,否则跳过该代码块。 双分支(经典形式):
if(关系表达式)
{语句组1};
else
{语句组2};
单分支结构: if(关系表达式){语句组};
如果符合 if 的关系表达式,则就会相应地执行后面的语句组否则直接省略语句组,直接执行下面的语句。
循环嵌套:
两种形式: 第一种:
if(语句组1)
if(语句组2){表达式1};
else(语句组2){表达式2};
else
{表达式3};
第二种:
if(语句组1)
else
if(语句组2){表达式1};
else(语句组2){表达式2};
数学函数
要在 C 语言中使用数学函数,首先需要添加头文件 math.h
。 一、基本的数学运算 C 语言中提供了四个基本的数学运算函数,分别是加法函数、减法函数、乘法函数和除法函数。这些函数的使用方法如下:
- 加法函数使用“+”符号进行加法运算
- 减法函数使用“-”符号进行减法运算
- 乘法函数使用“”符号进行乘法运算
- 除法函数使用“/”符号进行除法运算
二、其他常见的数学运算 C 语言中提供了:
-
幂运算函数 pow,用于计算一个数的幂。其使用方法如下
double pow(double x, double y);
其中,x 表示底数,y 表示指数。函数的返回值为 x 的 y 次幂。 -
sqrt()的用法: 计算一个非负实数的平方根
-
取整函数 ceil
double ceil(double x);
该函数用于向上取整,即将一个浮点数向上舍入为接近的整数 -
取余函数 od
od(double x, double y);
该函数用于计算 x 除以 y 的余数。
编程要求
根据提示,在右侧编辑器 Begin-End 内补充代码,输入的三个系数构不成方程,输出 error
!,输出根保留两位小数,复数根输出 a+bi
形式,实部、虚部保留两位小数。
测试说明
平台会对你编写的代码进行测试:
测试输入:0 0 0
; 预期输出: error!
测试输入:0 2 5
; 预期输出: x=-2.50
测试输入:1 -3 2
; 预期输出: x1=2.00
x2=1.00
测试输入:1 -3 4
; 预期输出: x1=1.50+1.32i
x2=1.50-1.32i
开始你的任务吧,祝你成功!
参考代码:
#include <stdio.h>
#include <math.h>
int main()
{
//=======begin=======
float a,b,c,deta,x1,x2,p,q;
scanf("%f %f %f",&a,&b,&c);
deta=b*b-4*a*c;
if (a==0&&b==0&&c==0)
printf("error!");
else if (a==0)
printf("x=%.2f",-(c/b));
else {
if (deta>0){
x1=(-b+sqrt(deta))/(2*a);
x2=(-b-sqrt(deta))/(2*a);
printf("x1=%.2f\n",x1);
printf("x2=%.2f\n",x2);
}
else if(deta==0){
printf("x1=x2=%.2f",(-b)/(2*a));
}
else if (deta<=0){
p=(-b)/(2*a);
q=sqrt(-deta)/(2*a);
printf("x1=%.2f+%.2fi\nx2=%.2f-%.2fi\n",p,q,p,q);
}
}
//========end========
return 0;
}