论坛: 编程破解 标题: C语言初手,循环嵌套的问题,大家讨论一下. 复制本贴地址    
作者: cailman [cailman]    论坛用户   登录
不明白为什么,谁懂,教教我好吗?

以下C语言程序,

(1)
代码:

main(){
int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}},i=0,j=0;
while(i<=2)
{
  while(j<=3)
      {printf("%d ",a[i][j]);j++;
          }
          i++;

          }
printf("\n--------------------------------\n");
}




按我的意向,应该输出:

1 2 3 4 5 6 7 8 9 10 11 12
--------------------------------

而实际上输出的是:

1 2 3 4
--------------------------------

问题:为什么只循环了i=0,而没有循环"i=1"和"i=2"?



于是我修改了程序:
(2)
代码:

main(){
int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}},i=0,j=0;
for(;i<=2;i++)
  {
  for(;j<=3;j++) {printf("%d ",a[i][j]);}
  }
printf("\n--------------------------------\n");
}


没想到输出的依然是:

1 2 3 4
--------------------------------


我再次修改程序:
(3)
代码:

main(){
int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}},i=0,j=0;
for(i=0;i<=2;i++)                                /* 此行相对程序(2)有修改  */
  {
      for(j=0;j<=3;j++) {printf("%d ",a[i][j]);}  /* 此行相对程序(2)有修改  */
        }
        printf("\n--------------------------------\n");
        }



这一次终于输出:

1 2 3 4 5 6 7 8 9 10 11 12
--------------------------------


问题2:程序(2)和程序(3)应该是一样的(因为i和j有赋初值"0").
所以for语句的"表达式1"应该可以省略.为什么会出现输出不同的问题?




地主 发表时间: 04-09-04 00:15

回复: shuihun [shuihun]   论坛用户   登录
main()
{int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}},i=0,j=0;
while(i<=2)
{     
        j=0;
      ~~~~~~循环一次J要清0,不然停留在3第一次循环结束就退出了
        while(j<=3)   
            {printf("%d ",a[i][j]);
                  j++;         
            }       
              i++;       
          }
printf("\n--------------------------------\n");
}

第二个例子同理

B1层 发表时间: 04-09-04 01:56

回复: windflower [windflower]   论坛用户   登录
j每次需要清零,楼上己说明白。

B2层 发表时间: 04-09-04 18:30

回复: cailman [cailman]   论坛用户   登录
明白了,唉,初手,让大家见笑了

B3层 发表时间: 04-09-04 22:39

论坛: 编程破解

20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon

粤ICP备05087286号