| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 448 人关注过本帖
标题:其中有点代码看不明白,求帮忙
只看楼主 加入收藏
fxbszj
Rank: 5Rank: 5
来 自:阿修罗界
等 级:职业侠客
威 望:4
帖 子:163
专家分:331
注 册:2012-10-8
结帖率:92.86%
收藏
已结贴  问题点数:4 回复次数:9 
其中有点代码看不明白,求帮忙
程序代码:
#include <iostream>

using namespace std;

int main()
{
        const size_t st=3;
        int ia[st],ib[st];
        //enter ia
        cout<<"Enter ia:"<<endl;
        for(size_t i=0;i!=st;++i)
                cin>>ia[i];


        cout<<"Enter ib:"<<endl; //enter ib;
        for(size_t i=0;i!=st;++i)
                cin>>ib[i];

        //compare ia and ib
        for(size_t i=0;i!=st;++i)
                if(ia[i]!=ib[i])
                        {cout<<"ia not equals to ib"<<endl;
                         return -1;}
       cout<<"ia equals to ib"<<endl;

        return 0;
}

这段代码的作用也比较明显,就是从键盘输入两个数组,程序判断两个数组是否相等.不过还是有点不明白代码这么写
假如输入的结果是不相等的,ia[i]!=ib[i]成立,会执行花括号里面的内容,那为什么后面那句cout<<"ia equals to ib"<<endl;是怎么做到不执行的;
我试着改成这样:
 for(size_t i=0;i!=st;++i)
                if(ia[i]!=ib[i])
                        {cout<<"ia not equals to ib"<<endl;
                         return -1;}
                else
                       {cout<<"ia equals to ib"<<endl;
                        return 0;}
问题来了,假如我分别输入 1 2 3 和 4 5 6,就会输出三段ia not equals to ib(原来的代码就输出一段)

高手帮帮忙,怎么理解原来那段代码
搜索更多相关主题的帖子: color 
2012-10-16 20:01
寒风中的细雨
Rank: 17Rank: 17Rank: 17Rank: 17Rank: 17
等 级:贵宾
威 望:66
帖 子:1710
专家分:8645
注 册:2009-9-15
收藏
得分:1 
相等的条件是  下标相同的元素都要满足相等的条件


不相等  只要一个不相等就可以等处结论  是不相等的

所以你写的else  是不对的   除非是  比较最后一个元素了  然后最后一个元素也相等 则可以说是相等
                if(ia[i]!=ib[i])
                        {cout<<"ia not equals to ib"<<endl;
                         return -1;}
                else if (st-1 == i)//
                       {cout<<"ia equals to ib"<<endl;
                        return 0;}
2012-10-16 20:06
fxbszj
Rank: 5Rank: 5
来 自:阿修罗界
等 级:职业侠客
威 望:4
帖 子:163
专家分:331
注 册:2012-10-8
收藏
得分:0 
回复 2楼 寒风中的细雨
是不是这么理解,整个main函数是在return n;后结束的
如何if成立,就执行了花括号里面那段,程序就结束了,后面的都不会执行了。只有if不成立,才会执行后面那段cout和return,然后程序结束
2012-10-16 20:15
小小小火柴
Rank: 5Rank: 5
来 自:江西赣州
等 级:职业侠客
威 望:3
帖 子:141
专家分:337
注 册:2012-9-28
收藏
得分:1 

#include <iostream>

using namespace std;

int main()
{
        const size_t st=3;
        int ia[st],ib[st];
        int i;
        //enter ia
        cout<<"Enter ia:"<<endl;
        for( i=0;i!=st;++i)
                cin>>ia[i];


        cout<<"Enter ib:"<<endl; //enter ib;
        for( i=0;i!=st;++i)
                cin>>ib[i];

        //compare ia and ib
        for( i=0;i!=st;++i)
                if(ia[i]!=ib[i])
                        {cout<<"ia not equals to ib"<<endl;
                         return -1;}
       cout<<"ia equals to ib"<<endl;

        return 0;
}
 这段代码没错啊!除了楼主你的 i 没有定义之外,其他都没问题。功能也应该是正确的。

   好好学习!
2012-10-16 22:25
rossmonica
Rank: 1
等 级:新手上路
帖 子:5
专家分:1
注 册:2012-4-19
收藏
得分:1 
const size_t st=3
 为什么定义初始值为3?菜鸟求指导
2012-10-17 15:25
fxbszj
Rank: 5Rank: 5
来 自:阿修罗界
等 级:职业侠客
威 望:4
帖 子:163
专家分:331
注 册:2012-10-8
收藏
得分:0 
回复 4楼 小小小火柴
我的代码是有定义的,siz_t类型的。你的那段代码才没有定义
2012-10-18 17:40
fxbszj
Rank: 5Rank: 5
来 自:阿修罗界
等 级:职业侠客
威 望:4
帖 子:163
专家分:331
注 册:2012-10-8
收藏
得分:0 
回复 5楼 rossmonica
因为我用的是数组,st代表数组的容量,const定义后不可更改st的值
2012-10-18 17:41
xu_daochun
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2012-10-24
收藏
得分:0 
把赋值当成逻辑了
2012-10-24 16:02
stuniversity
Rank: 2
等 级:论坛游民
帖 子:8
专家分:13
注 册:2012-10-24
收藏
得分:0 
以下是引用fxbszj在2012-10-16 20:15:57的发言:

是不是这么理解,整个main函数是在return n;后结束的
如何if成立,就执行了花括号里面那段,程序就结束了,后面的都不会执行了。只有if不成立,才会执行后面那段cout和return,然后程序结束
fxbszj说得没错,只要在if里面的条件不成立,输出ia not equals to ib后,一旦执行return,程序就会马上结束。因为只要两个数组的第一个元素不相等则可判定这两个数组不等,所以可以直接用return结束,不用再比较剩下的元素。所以原来的程序是没有问题的。
但楼主修改后的程序一旦第一个元素相等则马上输出ia equals to ib,然后结束程序,没有比较完。
2012-10-24 20:17
额外覆盖
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:城市猎人
威 望:6
帖 子:1726
专家分:5757
注 册:2012-9-22
收藏
得分:0 
受教了

我现在所学的一切都是为了游戏!!!为了游戏,加油!加油!努力!
2012-10-25 14:57
快速回复:其中有点代码看不明白,求帮忙
数据加载中...
 
   



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

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