| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3231 人关注过本帖
标题:关于选择结构中IF与ELSE的配对问题,请教
只看楼主 加入收藏
无事学编程
Rank: 1
等 级:新手上路
帖 子:60
专家分:5
注 册:2012-11-2
结帖率:82.35%
收藏
 问题点数:0 回复次数:3 
关于选择结构中IF与ELSE的配对问题,请教
# include <stdio.h>
# include <math.h>
int main()
{
    float a,b,c,disc,x1,x2,p,q,i;
    scanf("%f%f%f",&a,&b,&c);
    disc=b*b-4*a*c;
    if(disc<0)
        p=-b/(2*a);
        q=(sqrt(disc))/(2*a);
        x1=p+q*i;
        x2=p-q*i;
    else
        if(disc==0)
        x1=-b/(2*a);
        x2=-b/(2*a);
        else     
         x1=(sqrt(disc)-b)/(2*a);
         x2=(-sqrt(disc)-b)/(2*a);
    printf("x1=%0.3f x2=%0.3f\n",x1,x2);
    return 0;
}

这是我的代码,总是说配对出现问题,到底问题该怎么解决
搜索更多相关主题的帖子: include return 
2012-11-20 14:55
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
以下是引用无事学编程在2012-11-20 14:55:21的发言:

# include
# include
int main()
{
    float a,b,c,disc,x1,x2,p,q,i;
    scanf("%f%f%f",&a,&b,&c);
    disc=b*b-4*a*c;
    if(disc<0)
        p=-b/(2*a);
        q=(sqrt(disc))/(2*a);
        x1=p+q*i;
        x2=p-q*i;
    else
        if(disc==0)
        x1=-b/(2*a);
        x2=-b/(2*a);
        else     
         x1=(sqrt(disc)-b)/(2*a);
         x2=(-sqrt(disc)-b)/(2*a);
    printf("x1=%0.3f x2=%0.3f\n",x1,x2);
    return 0;
}

这是我的代码,总是说配对出现问题,到底问题该怎么解决

    if(disc<0)
        p=-b/(2*a);
        q=(sqrt(disc))/(2*a);
        x1=p+q*i;
        x2=p-q*i;
从你的缩进来看你想让这后面的四个语句都是if之后 但其实只有第一个是 这种情况应该加大括号

    if(disc<0)
    {
        p=-b/(2*a);
        q=(sqrt(disc))/(2*a);
        x1=p+q*i;
        x2=p-q*i;
    }

大括号的功能是让多条语句相当于一条语句 而if之后是只能有一条语句的 所以必须加括号

忘说了 后面的也一样

C里面是用大括号等东西控制语义的 而非使用缩进 所以 这些东西就算是缩进的时候对齐了 该是啥样就是啥样

比如你的代码实际的缩进应该是

程序代码:
# include <stdio.h>
# include <math.h>
int main()
{
        float a,b,c,disc,x1,x2,p,q,i;
        scanf("%f%f%f",&a,&b,&c);
        disc=b*b-4*a*c;
        if(disc<0)
                p=-b/(2*a);
        q=(sqrt(disc))/(2*a);
        x1=p+q*i;
        x2=p-q*i;
        else
                if(disc==0)
                        x1=-b/(2*a);
        x2=-b/(2*a);
        else
                x1=(sqrt(disc)-b)/(2*a);
        x2=(-sqrt(disc)-b)/(2*a);
        printf("x1=%0.3f x2=%0.3f\n",x1,x2);
        return 0;
}



祝楼主学习顺利 有问题欢迎再问 没问题记得结题哦


[ 本帖最后由 zklhp 于 2012-11-20 15:08 编辑 ]
2012-11-20 14:57
无事学编程
Rank: 1
等 级:新手上路
帖 子:60
专家分:5
注 册:2012-11-2
收藏
得分:0 
呵呵,对了,谢谢
2012-11-20 15:26
勤不移
Rank: 2
等 级:论坛游民
帖 子:12
专家分:20
注 册:2011-7-21
收藏
得分:0 
回复 3楼 无事学编程

# include <stdio.h>
# include <math.h>
int main()
{
    float a,b,c,disc,x1,x2,p,q,i;
    scanf("%f%f%f",&a,&b,&c);
    disc=b*b-4*a*c;
    if(disc<0) {
       p=-b/(2*a);
        q=(sqrt(disc))/(2*a);
        x1=p+q*i;
        x2=p-q*i;
    }
    else if(disc==0){
            x1=-b/(2*a);
            x2=-b/(2*a);
        }
    else     
         x1=(sqrt(disc)-b)/(2*a);
         x2=(-sqrt(disc)-b)/(2*a);
    printf("x1=%0.3f x2=%0.3f\n",x1,x2);
    return 0;
}红色表明。看下C语言程序设计方面书,很基础
2012-11-20 15:37
快速回复:关于选择结构中IF与ELSE的配对问题,请教
数据加载中...
 
   



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

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