为什么两种循环输出的结果不一样
编号: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放在外循环内,内循环外,则程序就正确了。
此问题由李海回答。
| |
|
|
| |
|
|