m0_54538055
花猫爱吃鱼
采纳率66.7%
2021-04-23 17:00 阅读 24

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条回答 默认 最新

  • 已采纳
    happyparrot 快乐鹦鹉 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缺少%

    够粗心的

    点赞 评论 复制链接分享
  • technologist_34 CSDN专家-lynn 2021-04-23 17:02

    %8.4f为占8个字符宽度,保留4位小数的浮点数格式化输出

    点赞 评论 复制链接分享
  • it_xiangqiang C和C++技术博客 2021-04-26 19:53

    C和C++完整教程:https://blog.csdn.net/it_xiangqiang/category_10581430.html
    C和C++算法完整教程:https://blog.csdn.net/it_xiangqiang/category_10768339.html

    点赞 评论 复制链接分享

相关推荐