| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1101 人关注过本帖
标题:再次发现漏洞,为什么if else 前一种写法和后一种 一个对一个错。什么原 ...
取消只看楼主 加入收藏
我叫K
Rank: 2
等 级:论坛游民
帖 子:74
专家分:19
注 册:2015-4-28
结帖率:90.91%
收藏
已结贴  问题点数:10 回复次数:3 
再次发现漏洞,为什么if else 前一种写法和后一种 一个对一个错。什么原因??
别看下面的程序很杂乱,我只是把下面这块程序在整个程序中的位子移了一下,一个对一个错   为什么呢》?????
第一种:下面这种是错的:
程序代码:
#include"stdio.h"
#include"math.h"" 
int main()
{
    double a,b,n,m,c,d;
    double x,y,t;
    printf("请依次输入第一个长方形的长和宽:\n");
    scanf("%f %f",&a,&b);
    printf("请依次输入第二个长方形的长和宽:\n");
    scanf("%f %f",&n,&m);
    c=sqrt(1.0*n);
    d=sqrt(1.0*m/10);
    if(a>c&&b>d||a==c&&b>d||a>c&&b==d||a==c&&b==d)
    printf("第一个长方形可以放进第二个长方形里");
     
    x=sqrt(a*a+b*b);
    y=1.0*c*a/x;
    t=(a-y)*sqrt(2.0);//只是这段程序移了下        
     
        else if(t>d)
    printf("第一个长方形可以放进第二个长方形里");
    
    else
    printf("第一个长方形不可以放进第二个长方形里");
    
    
}




第二种:这种是对的:
程序代码:
#include"stdio.h"
#include"math.h"" 
int main()
{
    double a,b,n,m,c,d;
    double x,y,t;
    printf("请依次输入第一个长方形的长和宽:\n");
    scanf("%f %f",&a,&b);
    printf("请依次输入第二个长方形的长和宽:\n");
    scanf("%f %f",&n,&m);
    c=sqrt(1.0*n);
    d=sqrt(1.0*m/10);

    x=sqrt(a*a+b*b);
    y=1.0*c*a/x;
    t=(a-y)*sqrt(2.0);//这段程序移了下
    
        if(a>c&&b>d||a==c&&b>d||a>c&&b==d||a==c&&b==d)
    printf("第一个长方形可以放进第二个长方形里");     
            
     else if(t>d)
    printf("第一个长方形可以放进第二个长方形里");
    
    else
    printf("第一个长方形不可以放进第二个长方形里");
    
    
}
2015-04-29 20:43
我叫K
Rank: 2
等 级:论坛游民
帖 子:74
专家分:19
注 册:2015-4-28
收藏
得分:0 
回复 5楼 kin3z
我上面写着了呀   第一段代码是错的   而且我移动的那段代码不是要放在if成立的语句里的

他们和我说,喜欢一个女生要大胆追!
2015-04-30 09:57
我叫K
Rank: 2
等 级:论坛游民
帖 子:74
专家分:19
注 册:2015-4-28
收藏
得分:0 
回复 2楼 TonyDeng
我没碰到过这样的事,所以会有这个疑问,平时没出现特别的情况,也是我学得不够到位,谢谢大家的回答,对我帮助很大。if()后面没花括号只会默认读第一句话,没else会接下去做。但是如果是if  else连用,两者中间不能超过第二句话(整个花括号先算作一句话)。下面分别2个对应代码有错和对的。
这是规范的情况:
程序代码:
#include"stdio.h"
int main()
{
    int a,b;
    scanf("%d %d",&a,&b);
    if(a<b)
    printf("a比b小");
    else
    printf("a比b大");     
}

错误用法,超2句:
程序代码:
#include"stdio.h"
int main()
{
    int a,b;
    scanf("%d %d",&a,&b);
    if(a<b)
    printf("a比b小");
    a=a/b;//插入任何都是不对的 ; 
    else
    printf("a比b大");     
}

 但是不涉及else连用,if单用是没关系的:
程序代码:
#include"stdio.h"
int main()
{
    int a,b;
    scanf("%d %d",&a,&b);
    if(a<b)
    printf("a比b小");
    a=a/b;
    if(a<b)
    printf("a比b小");
    else
    printf("a比b大"); 
     
}

他们和我说,喜欢一个女生要大胆追!
2015-04-30 10:14
我叫K
Rank: 2
等 级:论坛游民
帖 子:74
专家分:19
注 册:2015-4-28
收藏
得分:0 
回复 10楼 wmf2014
我的意思是我发现了自身的不足,自身的漏洞。。。。。真的懂的,何必慎用,我不懂说出来别人指出,我才会懂,被说下无所谓的。

他们和我说,喜欢一个女生要大胆追!
2015-04-30 11:35
快速回复:再次发现漏洞,为什么if else 前一种写法和后一种 一个对一个错。什 ...
数据加载中...
 
   



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

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