下面的对应的C代码:
程序代码:
补充:这个代码,变量的声明和定义位置在内部花括号内,原本是C++的语法,但C99吸纳了C++的若干语法,要求C编译器也支持这种语法,故这种代码只能在支持C99标准的C编译器上编译通过。微软的vc++是C++编译器,虽然可以被强制为C编译器使用(把源代码文件扩展名定为.c即可),不过这时它不支持C99,所以要让这类代码正常运行,请使用C++编译器,即把源代码文件扩展名定为.cpp。
[ 本帖最后由 TonyDeng 于 2014-12-15 22:40 编辑 ]
程序代码:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <conio.h>
double GetCoefficient(const char* tips); // 交互获取方程系数
int main(int argc, char* argv[])
{
double coefficient_A, coefficient_B, coefficient_C;
while ((coefficient_A = GetCoefficient("\n请输入二次项系数(输入零结束程序) A: ")) != 0)
{
coefficient_B = GetCoefficient("请输入一次项系数 B: ");
coefficient_C = GetCoefficient("请输入常数项系数 C: ");
printf_s("您需要求解的方程是:%.4f * x^2 + %.4f * x + %.4f = 0\n", coefficient_A, coefficient_B, coefficient_C);
double delta = coefficient_B * coefficient_B - 4 * coefficient_A * coefficient_C;
if (delta == 0)
{
double theUnknown = - coefficient_B / (2 * coefficient_A);
printf_s("方程的根为: %.4f\n", theUnknown);
}
if (delta > 0)
{
double theUnknown1, theUnknown2;
theUnknown1 = (- coefficient_B + sqrt(delta)) / (2 * coefficient_A);
theUnknown2 = (- coefficient_B - sqrt(delta)) / (2 * coefficient_A);
printf_s("方程的根为: %.4f, %.4f", theUnknown1, theUnknown2);
}
if (delta < 0)
{
printf_s("方程没有实数根");
}
}
return EXIT_SUCCESS;
}
// 交互获取方程系数
double GetCoefficient(const char* tips)
{
double returnValue;
do
{
printf_s(tips);
fflush(stdin);
} while (scanf_s("%lf", &returnValue) != 1);
return returnValue;
}
补充:这个代码,变量的声明和定义位置在内部花括号内,原本是C++的语法,但C99吸纳了C++的若干语法,要求C编译器也支持这种语法,故这种代码只能在支持C99标准的C编译器上编译通过。微软的vc++是C++编译器,虽然可以被强制为C编译器使用(把源代码文件扩展名定为.c即可),不过这时它不支持C99,所以要让这类代码正常运行,请使用C++编译器,即把源代码文件扩展名定为.cpp。
[ 本帖最后由 TonyDeng 于 2014-12-15 22:40 编辑 ]

授人以渔,不授人以鱼。


