「已注销」 2015-06-04 15:50 采纳率: 100%
浏览 4953

C语言中关于if if-else语句的问题?

代码1如下
运行环境 :VS2013
代码作用:输入三个数然后判断其中最小的一位数然后输出的

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

int main()
{
    int x, y, z, min;
    min = 0;
    scanf_s("%d %d %d", &x, &y, &z);

    if (x < y)           
    {
        min = x;
    }
    else if (y < x)  //这个if不起作用
    {
        min = y;
    }
    else if (min > z)          //这样写构成了一个级联的if -else if 语句 
    {
        min = z;
    }
    printf("%d", min);
    system("pause");
    return 0;
}

代码2如下:

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

int main()
{
    int x, y, z, min;
    min = 0;
    scanf_s("%d %d %d", &x, &y, &z);

    if (x < y)           
    {
        min = x;
    }
    else (y < x)  //删除if后
    {
        min = y;
    }
    if (min > z)          //删除else后 
    {
        min = z;
    }
    printf("%d", min);
    system("pause");
    return 0;
}

附:
这两个程序那个比较好呢?运行的结果都是一样的,不知道1好还是2好。请同胞们给些意见 多谢了!

  • 写回答

22条回答

  • 知常曰明 2015-06-04 22:50
    关注
    • 不是好不好的问题。第一段、第二段都有严重的错误,不能说好不好,只能说对不对。
    • 第一段:
    • 在if (...) {} else if (... ) {} else{}这样的判断中,所有的分支只会执行一个。
    • 在你的第一段代码中
         if (x < y)           
        {
            min = x;
        }
        else if (y < x)  //这个if不起作用
        {
            min = y;
        }
        else if (min > z)          //这样写构成了一个级联的if -else if 语句 
        {
            min = z;
        }
    
    

    if(x<y)和else if(y<x)几乎是矛盾的。也就是说只有当x==y的时候才会去做最下面的那个min和z的比较。而当做到这个比较的时候,min还是0,

    • 第二段
        if (x < y)           
        {
            min = x;
        }
        else (y < x)  //删除if后
        {
            min = y;
        }
    
    

    else后面不能跟条件。这里应该是语法错误,编译不能通过。如果要改的话,可以

     else //(y < x)  //删除if后
    
    评论

报告相同问题?

悬赏问题

  • ¥50 永磁型步进电机PID算法
  • ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
  • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
  • ¥200 uniapp长期运行卡死问题解决
  • ¥15 latex怎么处理论文引理引用参考文献
  • ¥15 请教:如何用postman调用本地虚拟机区块链接上的合约?
  • ¥15 为什么使用javacv转封装rtsp为rtmp时出现如下问题:[h264 @ 000000004faf7500]no frame?