不需要睡觉o 2024-06-26 23:05 采纳率: 94.7%
浏览 3

这段代码为什么无论输入什么值都只显示no result?


//求ax2+bx+c=0方程的根 
#include<stdio.h>
#include<math.h>
int main(){
    int a,b,c;
    float x,x1,x2;
    printf("please enter a,b,c\n");
    scanf("%d,%d,%d",&a,&b,&c);
    if(pow(b,2)-4*a*c<0){
        printf("no result");
    }
    if(pow(b,2)-4*a*c==0){
        x=(-b/(2*a));
        printf("the answer is %f \n",x);
    }
    if(pow(b,2)-4*a*c>0){
        x1=(-b+sqrt(pow(b,2)-4*a*c))/(2*a);
        x2=(-b-sqrt(pow(b,2)-4*a*c))/(2*a);
        printf("The answer are %f,%f",x1,x2);
    }
    return 0;
}

这段代码为什么无论输入什么值都只显示no result?哪里错了怎么改

  • 写回答

3条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-06-26 23:05
    关注

    引自免费微信小程序:皆我百晓生

    这个问题是由于程序设计中的逻辑错误导致的。当pow(b,2) - 4 * a * c >= 0时,程序将不执行任何计算,因为sqrt()函数会返回负数,即使平方后结果大于等于0。为了解决这个问题,我们需要在条件判断之前检查平方根的结果是否为正数。

    修改后的代码如下:

    #include <stdio.h>
    #include <math.h>
    
    int main() {
        int a, b, c;
        float x, x1, x2;
    
        printf("Please enter a, b, and c values:\n");
        scanf("%d %d %d", &a, &b, &c);
    
        // Check for valid input
        if (a == 0 && b == 0 && c != 0) {
            printf("No result.\n");
            return 0;
        }
    
        // Calculate the discriminant
        float discriminant = pow(b, 2) - 4.0 * a * c;
    
        // If discriminant is less than or equal to zero,
        // there are no real roots.
        if (discriminant <= 0) {
            printf("No real root.\n");
            return 0;
        }
    
        // Find two solutions using quadratic formula
        x = (-b + sqrt(discriminant)) / (2 * a);
        x1 = (-b - sqrt(discriminant)) / (2 * a);
    
        printf("The solutions are: %f and %f.", x, x1);
    
        return 0;
    }
    

    这个修改后的版本应该可以正确处理所有输入情况了。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 6月26日

悬赏问题

  • ¥20 python忆阻器数字识别
  • ¥15 无法输出helloworld
  • ¥15 高通uboot 打印ubi init err 22
  • ¥20 PDF元数据中的XMP媒体管理属性
  • ¥15 R语言中lasso回归报错
  • ¥15 网站突然不能访问了,上午还好好的
  • ¥15 有没有dl可以帮弄”我去图书馆”秒选道具和积分
  • ¥15 semrush,SEO,内嵌网站,api
  • ¥15 Stata:为什么reghdfe后的因变量没有被发现识别啊
  • ¥15 振荡电路,ADS仿真