| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 883 人关注过本帖
标题:求大神指教,下面程序什么问题
只看楼主 加入收藏
龙枫
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2016-7-28
结帖率:50%
收藏
已结贴  问题点数:10 回复次数:8 
求大神指教,下面程序什么问题
#include <stdio.h>
#include <math.h>

int main(void)

{
int a,b,c;
float e ;
float  x1 , x2 ;


printf("a,b,c= ");
scanf ("a=%f,b=%f,c=%f\n",&a,&b,&c);
e = b * b - 4 * a * c;

       if (e > 0)
       {  
           x1 = (-b) + sqrt(e)/2 * a;
           x2 = (-b) - sqrt(e)/2 * a;
           printf("两个解 x1 = %f , x2 = %f\n", x1 , x2 );
       }
       else if (e == 0)
       {
           x1 = (-b)/2 * a;
           x2 = x1;
           printf("一个解 x1 = %f , x2 = %f\n", x1 , x2 );
       }
       else
       {
           printf("无解\n");
       }

return 0;
}
搜索更多相关主题的帖子: include 
2016-08-05 11:36
linlulu001
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:20
帖 子:944
专家分:4047
注 册:2016-4-13
收藏
得分:4 
printf("a,b,c= ");   //这句不要
scanf ("a=%f,b=%f,c=%f\n",&a,&b,&c);//这句改成scanf ("a=%d,b=%d,c=%d",&a,&b,&c);按类似a=2,b=3,c=4这样输入
f是float类型,
2016-08-05 11:44
龙枫
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2016-7-28
收藏
得分:0 
还是不合适,输出始终无解
2016-08-05 12:05
linlulu001
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:20
帖 子:944
专家分:4047
注 册:2016-4-13
收藏
得分:0 
不会始终无解。
把公式或者题目发出来看看。
2016-08-05 12:27
龙枫
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2016-7-28
收藏
得分:0 
就是输入abc三个只值,看此一元二次方程有几个解,分别等于多少
2016-08-05 12:35
wanglianyi1
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:14
帖 子:647
专家分:2067
注 册:2015-6-18
收藏
得分:4 
回复 5楼 龙枫
scanf ("a=%f,b=%f,c=%f\n",&a,&b,&c);这句不合适,你声明的abc是int,后面要用%d输入,你用的%f
2016-08-05 12:43
wanglianyi1
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:14
帖 子:647
专家分:2067
注 册:2015-6-18
收藏
得分:0 
程序代码:
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
//清空缓存函数
void safe_flush(FILE *fp)
{
    int ch;
    while( (ch = fgetc(fp)) != EOF && ch != '\n' );          
}
int main( )
{
    int a,b,c;float d;       //a,b,c为一元二次方程的3个系数,d为根判别式 
    float p,q;            //计算虚数根用    
    float x1,x2;         //方程式的两个根 
    const char i='i';        //虚数单位 
    char ag='y';                  //判断重复计算 
    int ag1;
    
    do{
        system("cls");        
        printf("此程序为求解形如ax^2+bx+c=0(a≠0)一元二次方程的根.\n\n");        
        printf("请依次输入二次项系数 a\n\n");
        printf("请依次输入一次项系数 b\n\n");
        printf("请依次输入常数项 c\n\n三数间敲击Enter间隔\n");
        safe_flush(stdin);        //清空缓存    
        scanf("%d %d %d",&a,&b,&c);
        printf("\n此时方程为%dX^2+%dX+(%d)=0\n\n",a,b,c); 
        d=b*b-(4*a*c);
        printf("此时根判别式△=b*b-(4*a*c)=%f\n\n",d);
        printf("按Enter即可得出结果\n\n");
        getch();
        if(d>=0)
            {
            if(d==0)
                {
                    x1=-b/(2*a);
                    x2=x1;
                    printf("此方程式有两个相等的实数根x1=x2=%f\n\n",x1);
                }
            else if(d>0)
                {
                    x1=(-b+sqrt(d))/(2*a);
                    x2=(-b-sqrt(d))/(2*a);
                    printf("此方程式有两个不相等的实数根x1=%f,x2=%f\n\n",x1,x2);
                }
            }
        else
            {
            printf("因为△<0,故此方程式根为虚数\n\n");
            p=-b/(2*a);
            q=sqrt(-d)/(2*a);
            printf("方程有两个虚数根,虚数单位为i\n\n"); 
            printf("虚根X1=%f+%fi\n\n",p,q);
            printf("虚根X2=%f-%fi\n\n",p,q);    
            }    
            printf("是否再次计算 y or n!\n\n");
            safe_flush(stdin); 
            scanf("%c",&ag);
            if(ag=='n'||ag=='N')
                ag1=0;
            else if(ag=='y'||ag=='Y')
                ag1=1;
        }while(ag1);
    return 0;
}


[此贴子已经被作者于2016-8-5 12:53编辑过]

2016-08-05 12:45
linlulu001
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:20
帖 子:944
专家分:4047
注 册:2016-4-13
收藏
得分:0 
#include <stdio.h>
#include <math.h>

int main(void)

{
int a,b,c;
float e ;
float  x1 , x2 ;


printf("a,b,c= ");
scanf ("%d%d%d",&a,&b,&c);
e = b * b - 4 * a * c;
printf("%f",e);    //这里把e输出,这样你就能直观的看到e的变化

       if (e >= 0)
       {  
           x1 = ((-b) + sqrt(e))/(2*a);      //先算乘除,再算加减,所以要加上小括号
           x2 = ((-b) - sqrt(e))/(2*a);
           printf("两个解 x1 = %f , x2 = %f\n", x1 , x2 );
       }
       /*else if (e == 0)                            //要这个判断就将上面if里的“=”号去掉。
       {
           x1 = (-b)/(2*a);
           x2 = x1;
           printf("一个解 x1 = %f , x2 = %f\n", x1 , x2 );
       }*/
       else
       {
           printf("无解\n");
       }

return 0;
}
2016-08-05 12:52
vvvcuu
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:12
帖 子:353
专家分:1253
注 册:2014-4-22
收藏
得分:4 
程序代码:
int a,b,c;         //注意此处
float e ;          //注意此处
float  x1 , x2 ;


printf("a,b,c= ");
scanf ("a=%f,b=%f,c=%f\n",&a,&b,&c);       //根据上面的观察这个地方
e = b * b - 4 * a * c;                   //a,b,c是整型的,运算后的结果也是整型的。和e矛盾》       



代码测试环境:  WinXP+C-Free5.0.
2016-08-05 12:56
快速回复:求大神指教,下面程序什么问题
数据加载中...
 
   



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

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