下面的对应的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 编辑 ]
授人以渔,不授人以鱼。