C语言进阶
(一)前言:
在学习c语言基础语法后我们需要通过项目的训练进行进阶提升,一个小的项目能够使初学者对编程语言掌握的更牢固、进一步熟悉编程的逻辑,所以在这里例出了项目的题目要求、算法分析以及完整的程序代码供初学者学习。
(二)题目:
一元二次方程的求解:求方程(a*x)^2+b*x+c=0的根,用3个函数分别求当b^2-4*a*c大于0、等于0和小于0时的根并输出结果。从主函数输入a、b、c的值。
(三)算法设计:
int main():在主函数中提示并输入a,b,c的值,判断一元二次方程根是大于零还是等于零或者小于零,从而调用三种情况对应的函数。
void equalzero(double a,double b,double c):通过主函数调用,该函数处理的是当方程根等于零的情况,计算出结果,并且输出。
void greatertzero(double a,double b,double c):通过主函数调用,该函数处理的是当方程根大于零的情况,计算出结果,并且输出。
void lesstzero(double a,double b,double c):通过主函数调用,该函数处理的是当方程根小于零的情况,计算出结果,并且输出。
(四)完整代码实现:
# include <stdio.h>
# include <math.h>
//根等于零的情况
void equalzero(double a,double b,double c)
{
double dlt,x1,x2;//dlt为函数的根x1,x2为函数的结果
dlt=b*b-4*a*c;
printf("方程的根为%f\n",dlt);
x1=(-b)/(2*a)+sqrt(dlt)/(2*a);
printf("方程的解为%f",x1);
}
//根大于零的情况
void greatertzero(double a,double b,double c)
{
double dlt,x1,x2;//dlt为函数的根x1,x2为函数的结果
dlt=b*b-4*a*c;
printf("方程的根为%f\n",dlt);
x1=(-b)/(2*a)+sqrt(dlt)/(2*a);
x2=(-b)/(2*a)-sqrt(dlt)/(2*a);
printf("方程的解为%f,%f",x1,x2);
}
//根小于零的情况
void lesstzero(double a,double b,double c)
{
double dlt;
dlt=b*b-4*a*c;
printf("方程的根为%f\n",dlt);
printf("方程的根小于零,方程无解");
}
int main()
{
int a,b,c,d;
printf("请输入a,b,c的值\n");
scanf("%d %d %d",&a,&b,&c);
printf("得到a=%d,b=%d,c=%d\n",a,b,c);
d=b*b-4*a*c;
if(d==0)
equalzero(a,b,c);
if(d>0)
greatertzero(a,b,c);
if(d<0)
lesstzero(a,b,c);
return 0;
}