花猫爱吃鱼 2021-04-23 17:00 采纳率: 66.7%
浏览 40
已采纳

C语言学习方程的求根问题

//求ax2+bx+c=0方程的解
#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)
//用来判断a是否等于0,认为当a的绝对值小于10的-6次方的时候,就将a视作0.
		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);//realpart是复根的实部
				imagpart = sqrt(-disc) / (2 * a);//imagpart是复根的虚部
				printf("has complex roots:\n");
				printf("8.4f+8.4fi\n", realpart, imagpart);//输出一个复数
				printf("%8.4f-8.4fi\n", realpart, imagpart);//输出另一个复数
			}
	}
	return 0;
}

vs2015编译器

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
请按任意键继续. . .
加下划线的地方是为什么???

  • 写回答

3条回答 默认 最新

  • 快乐鹦鹉 2021-04-23 17:04
    关注

    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缺少%

    够粗心的

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 一道python难题2
  • ¥15 一道python难题
  • ¥15 用matlab 设计一个不动点迭代法求解非线性方程组的代码
  • ¥15 牛顿斯科特系数表表示
  • ¥15 arduino 步进电机
  • ¥20 程序进入HardFault_Handler
  • ¥15 oracle集群安装出bug
  • ¥15 关于#python#的问题:自动化测试
  • ¥20 问题请教!vue项目关于Nginx配置nonce安全策略的问题
  • ¥15 教务系统账号被盗号如何追溯设备