| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1017 人关注过本帖
标题:求助大佬帮忙,非常感谢
只看楼主 加入收藏
guangfeili79
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2022-9-24
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:4 
求助大佬帮忙,非常感谢
我程序的要求是:
1、a、b、c输入数字,
2、检测a=0,显示错误信息,并询问是否重新输入,回答y 后重新输入a、b、c ;回答n 程序结束跳出。
3、检测b^2-4ac是否小于等于0,如果小于等于0显示错误信息,并询问是否重新输入,回答y 后重新输入a、b、c ;回答n 程序结束跳出。
4、a不等于0和b^2-4ac大于0两个条件满足后,计算并输出结果。

调试一直出问题,请各位老大帮忙,非常感谢。

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

void main(void)
{
float a,b,c,x_1,x_2,sqr;
char bgain;
while (bgain,a==0)
 {
    printf("enter a:");
    scanf("%f",&a);
    printf("enter b:");
    scanf("%f",&b);
    printf("enter c:");
    scanf("%f",&c);
   
    if(a==0)
     {
      printf("Not a quadratic equation\n");
      printf("Is the a re-entered?y/n: \n");
      scanf("%s",&bgain);
       if (bgain=='y')
       {   
       main();
       }
       else
       {
       printf("Bay Bay\n");
       }
     }
     
    else ((pow(b,2)-4*a*c)<=0);
     {
      printf("Not real roots\n");
      printf("Is it re-entered?y/n\n");
      scanf("%s",&bgain);
       if (bgain=='y')
       {   
       main();
       }
       else
       {
       printf("Bay Bay\n");
       }
     }

 }
    x_1=(-b-(sqrt(pow(b,2))-4*a*c))/(2*a);
    x_2=(-b-(sqrt(pow(b,2))-4*a*c))/(2*a);
    printf(" a: %f \n b: %f \n c: %f \n x_1: %f \n x_2: %f \n",a,b,c,x_1,x_2);
}   
   

[此贴子已经被作者于2022-9-24 19:59编辑过]

搜索更多相关主题的帖子: 重新 scanf include printf 输入 
2022-09-24 19:12
apull
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:三体星系
等 级:版主
威 望:216
帖 子:1479
专家分:9035
注 册:2010-3-16
收藏
得分:10 
程序代码:

int main(void)
{
    float a, b, c, x_1, x_2, sqr; //
    char bgain;
    while (1) //(bgain, a == 0) 2个变量没有初始化,不能直接用。
    {
        printf("enter a:");
        scanf("%f", &a);
        printf("enter b:");
        scanf("%f", &b);
        printf("enter c:");
        scanf("%f", &c);

        if (a == 0)
        {
            printf("Not a quadratic equation\n");
            printf("Is the a re-entered?y/n: \n");
            fflush(stdin);
            bgain = getchar(); // scanf("%s", &bgain);
            if (bgain == 'y')
            {
                // main(); main就不要递归调用了。
                continue; //重新开始循环
            }
            else
            {
                printf("Bay Bay\n");
                return 0; //退出程序
            }
        }
        // else
        sqr = pow(b, 2) - 4 * a * c;
        if (sqr <= 0)
        {
            printf("Not real roots\n");
            printf("Is it re-entered?y/n\n");
            fflush(stdin);
            bgain = getchar(); // scanf("%s", &bgain);
            if (bgain == 'y')
            {
                continue;
            }
            else
            {
                printf("Bay Bay\n");
                return 0;
            }
        }
        else
            break; //跳出循环继续程序
    }

    x_1 = (-b + sqrt(sqr)) / (2 * a);
    x_2 = (-b - sqrt(sqr)) / (2 * a);
    printf(" a: %f \n b: %f \n c: %f \n x_1: %f \n x_2: %f \n", a, b, c, x_1, x_2);

    return 0;
}


2022-09-24 21:12
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9007
专家分:53942
注 册:2011-1-18
收藏
得分:10 
https://zh.
int fflush( FILE *stream );
对于输入流(及最后操作为输入的更新流),行为未定义。


程序代码:
#include <stdio.h>
#include <math.h>

int main( void )
{
    double a, b, c;
    for( int bad=0; ; bad=1 )
    {
        if( bad )
        {
            char reply;
            scanf( "%*[^\n]" );
            printf( "是否重新输入(Y/N)? " );
            if( scanf(" %c",&reply)!=1 || (reply!='y' && reply!='Y') )
                return 1;
            scanf( "%*[^\n]" );
        }

        printf( "输入方程 ax^2+bx+c=0 的三个系数(以空格分隔): " );
        if( scanf("%lf%lf%lf",&a,&b,&c) != 3 )
        {
            printf( "输入数据格式错误." );
            continue;
        }

        if( a == 0 )
        {
            printf( "系数a不可以为零." );
            continue;
        }

        if( b*b <= 4*a*c )
        {
            printf( "delta必须大于零." );
            continue;
        }

        break;
    }

    double sqrt_d = sqrt( b*b - 4*a*c );
    if( a < 0 ) a=-a, b=-b, c=-c;
    printf( "%f, %f", (-b-sqrt_d)/(2*a), (-b+sqrt_d)/(2*a) );
    return 0;
}
2022-09-25 14:02
guangfeili79
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2022-9-24
收藏
得分:0 
非常感谢两位老大的帮助,rjsp老大的代码非常好,但我需要第一种方案,非常感谢您;apull老大您给的代码运行后还有问题,我输入 0 1 2后就直接退出了

enter a:0
enter b:1
enter c:2
Not a quadratic equation
Is the a re-entered?y/n:
Bay Bay


...Program finished with exit code 0
Press ENTER to exit console.

[此贴子已经被作者于2022-9-26 17:27编辑过]

2022-09-26 17:06
guangfeili79
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2022-9-24
收藏
得分:0 
修改完了,可以运行了,非常感谢两位老大

程序代码:
#include <stdio.h>
#include <math.h>
#include <string.h>
#include <stdlib.h>
int main(void)
{
    float a, b, c, x_1, x_2, sqr; //
    char bgain;
    while (1) //(bgain, a == 0) 2个变量没有初始化,不能直接用。
    {
        printf("enter a:");
        scanf("%f", &a);
        printf("enter b:");
        scanf("%f", &b);
        printf("enter c:");
        scanf("%f", &c);

        if (a == 0)
        {
            printf("Not a quadratic equation\n");
            printf("Is the a re-entered?y/n: \n");
            //fflush(stdin);
           scanf("%s", &bgain); //bgain = getchar(); 
            if (bgain == 'y')
            {
                // main(); main就不要递归调用了。
                continue; //重新开始循环
            }
            else
            {
                printf("Bay Bay\n");
                return 0; //退出程序
            }
        }
       // else
        //sqr = pow(b, 2) - 4 * a * c;
        else if (b*b <= 4*a*c)
        {
            printf("Not real roots\n");
            printf("Is it re-entered?y/n\n");
            //fflush(stdin);
           scanf("%s", &bgain); //bgain = getchar(); 
            if (bgain == 'y')
            {
                continue;
            }
            else
            {
                printf("Bay Bay\n");
                return 0;
            }
        }
        else
            break; //跳出循环继续程序
    }

    x_1 = (-b + sqrt(sqr)) / (2 * a);
    x_2 = (-b - sqrt(sqr)) / (2 * a);
    printf(" a: %f \n b: %f \n c: %f \n x_1: %f \n x_2: %f \n", a, b, c, x_1, x_2);

    return 0;
}
2022-09-26 17:39
快速回复:求助大佬帮忙,非常感谢
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018468 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved