2013-03-20 190 views
0

我试图完成使用嵌套的循环以下(C语言):嵌套的循环逻辑

a[0] = b[0][0]; 
    a[1] = b[1][0]; 
    a[2] = b[1][1]; 
    a[3] = b[2][0]; 
    a[4] = b[2][1]; 
    a[5] = b[2][2]; 
    a[6] = b[3][0]; 
    a[7] = b[3][1]; 
    a[8] = b[3][2]; 
    a[9] = b[3][3]; 

我有这样的:

for (j=0; j<3; ++j) 
     for (k=0; k<j; ++k) 
      a[i] = b[j][k]; 

我想我需要这样的:

for (i=0; i<9; ++i) 

但我在解决问题的地方遇到问题。任何有关逻辑的帮助表示赞赏。谢谢。

回答

2

两个定位。

  • 包括计数器
  • 让您绑定的检查包括

画报:

int i=0; 
for (j = 0; j <= 3; ++j) 
    for (k = 0; k <= j; ++k) 
     a[i++] = b[j][k]; 

Ideone

+0

好眼!我已经错过了边界检查... – Floris 2013-03-20 04:17:48

+0

这没有办法。非常感谢! – Ben 2013-03-20 04:38:41

1

你太亲近了!这应做到:

i=0; 
for (j=0; j<3; ++j) 
    for (k=0; k<j; ++k) 
     a[i++] = b[j][k]; 
+0

你是对的。我的解决方案错了。 – joce 2013-03-20 04:15:30

0

你只需要增加嵌套的内部变量循环:

int i = 0; 
for (j=0; j<3; ++j) 
    for (k=0; k<j; ++k) 
     a[i++] = b[j][k];