热情软件屋

 

为什么两种循环输出的结果不一样


编号:QA004337
建立日期: 2001年7月31日 最后修改日期:2001年7月31日
所属类别:

赵思齐:
    操作系统: windows98
    编程工具: visual c++
    问题: 我遇到一个这样的问题:
    要求用for循环画出10x10个由0组成的图案,为什么用这样的代码输出结果是:
    0000000000
    
    
    
     (此处有九行空行)
    
    
    
    
    
    (代码:)
    #include <iostream&rt;
    using namespace std;
    
    int main()
    {
     int row=10,numberPerRow=10;
     for(;0     {
     for(;0     cout<<"0";
     cout<<"\n";
     }
     return 0;
    }
    
    
    而在换用这样的代码后则一切正常:
    #include <iostream>
    using namespace std;
    
    int main()
    {
     int row=10,numberPerRow=10;
     for(int i=0;i<row;i++)
     {
     for(int j=0;j<numberPerRow;j++)
     cout<<"0";
     cout<<"\n";
     }
     return 0;
    }
    输出结果为:
    0000000000
    0000000000
    0000000000
    0000000000
    0000000000
    0000000000
    0000000000
    0000000000
    0000000000
    0000000000
    为什么两种代码输出结果不一样?
    水平: 刚入门

回答:

    有经验的人可以一下子看出你的问题,不过对新手你最好进行单步跟踪,这样可以很快找到问题。参考:QA003656 "VC有没有对程序一步一步地执行的功能"
    具体到你的问题,第一个程序在运行第一次外循环时,numberPerRow从10开始,所以第一行正确输出,但是在这次循环结束时,numberPerRow已经减少到0。从第二次外循环开始,numberPerRow一直都是0,所以以后各行都无法得到结果。如果你把umberPerRow=10放在外循环内,内循环外,则程序就正确了。

此问题由李海回答。

 
把这个问题推荐给朋友
   
   
您的意见类别
您的名字
您的电子邮件
您的建议(请尽可能详细)
 
 

版权所有 1997-2008 热情软件屋
如果您有任何建议和意见, 请给我发个电子邮件 askpro@china-askpro.com
Web Designed by ZebraStudio