题解 | #计算一元二次方程#

计算一元二次方程

https://www.nowcoder.com/practice/7da524bb452441b2af7e64545c38dc26

#include <stdio.h>
#include<math.h>

int main() {
    float a,b,c,deta;
    int sign=1;
    while(scanf("%f %f %f",&a,&b,&c)!=EOF)
    {
        deta=b*b-4*a*c;
        if(deta>0)
            deta=pow(deta,0.5);
        else if(deta<0){
            deta=pow(-deta,0.5);sign=0;
        }
            else
                ;
        if(a==0)printf("Not quadratic equation\n");
        else{
            if(deta==0){
                if(-1*b/(2*a)==0)printf("x1=x2=0.00\n");
                else printf("x1=x2=%.2f\n",-1*b/(2*a));
            }

            else if(deta>0&&sign==1)printf("x1=%.2f;x2=%.2f\n",-1*(b+deta)/(2*a),-1*(b-deta)/(2*a));
            else printf("x1=%.2f%.2fi;x2=%.2f+%.2fi\n",-1*b/(2*a),-1*deta/(2*a),-1*b/(2*a),deta/(2*a));
        }
    }
    
    return 0;
}
第一次发题解有些功能还没摸明白:上面这个代码是基于自己一开始设计的分类后改了又改才运行通过的,可以看当个一乐,这里主要是想讲sign的作用。一开始是将符号写在格式化输出的符号上的,但是符号有问题,后面用-1乘上输出,结果deta为虚数的情况下符号还是出了问题。后面打算在算出deta时单独对deta讨论一次(就是把pow函数里的deta加个负号),结果在虚数情况下进入了deta大于0的分支,无奈之下额外添加了一个sign用以对进入deta是大于0还是小于0的情况添加一个约束条件这才通过

全部评论
原文文本应该在哪发来着,反正肯定不是评论区
点赞 回复 分享
发布于 2024-02-03 11:23 浙江

相关推荐

投递长鑫存储等公司9个岗位
点赞 评论 收藏
分享
流浪的神仙:无恶意,算法一般好像都得9硕才能干算法太卷啦
点赞 评论 收藏
分享
大方的大熊猫准备进厂:1.教育背景:你希望从事什么专业的工作你的主修课就是什么;成绩优秀是你应该做的,没什么可描述的,成绩不优秀也许人家在大学忙着创业呢?(成绩优秀不一定是好事,只能说明多元化的大学你上成了高中,没有真正上明白大学,反而体现了你死板,不爱社交,没有别的突出能力) 2.实践经历:你想表达的意思没有说清楚。你是说你会个性化服务,还是你有实习经历。如果没有带来,经济收益,表彰,更好的发展前景,那你还不如说说提升了自己哪些技能。你说有人给你送锦旗我都能明白你优秀,但是你说你会xxxx,你说这话谁信,证据呢。 3.入伍经历:你描述的就是你的工作职责或者你应该做的,并没有体现出来你把这个事情做好了,而且入伍经历并不能证明你能干好你要应聘的工作,不如只写经历其余所有内容都不写。 4.荣誉技能:重点突出一下,但不要过多描述,这些荣誉的含金量懂得都懂。 重点:你要应聘什么工作(具体岗位,实习生不具体),你的期望薪资
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务