C语言学习求方程的根

 


#include<stdio.h>
#include<math.h>
int main()
{
	double a, b, c, disc, x1, x2, realpart, imagpart;
	scanf("%lf,%lf,%lf", &a, &b, &c);
	printf("The equation");
	if (fabs(a) <= 1e-6)
		printf("is not a quadratic\n");
	else
	{
		disc = b*b - 4 * a*c;
		if (fabs(disc) <= 1e-6)
			printf("has two equal roots:%8.4f\n",-b/(2*a));
		else
			if (disc > 1e-6)
			{
				x1 = (-b + sqrt(disc)) / (2 * a);
				x2 = (-b - sqrt(disc)) / (2 * a);
				printf("has distinct real roots:8.4f and %8.4f\n", x1, x2);
			}
			else
			{
				realpart = -b / (2 * a);
				imagpart = sqrt(-disc) / (2 * a);
				printf("has complex roots:\n");
				printf("8.4f+8.4fi\n", realpart, imagpart);
				printf("%8.4f-8.4fi\n", realpart, imagpart);
			}
	}
	return 0;
}

vs2015编译器

报错22,29,30printf格式符传递参数太多

输出共轭复数和实根是出错

1,2,2
The equationhas complex roots:
8.4f+8.4fi
 -1.0000-8.4fi
请按任意键继续. . .

2,6,1
The equationhas distinct real roots:8.4f and  -0.1771
请按任意键继续. . .
 

printf("has distinct real roots:8.4f and %8.4f\n", x1, x2);===前面的8.4f缺少%

printf("8.4f+8.4fi\n", realpart, imagpart);===两个8.4f都没有%

printf("%8.4f-8.4fi\n", realpart, imagpart);===后面的8.4f缺少%

够粗心的