使用函数传递数组

时间:2018-04-02 20:24:11

标签: c function multidimensional-array

  • 嗨,我第一次使用一个功能用于我的二维阵列,到目前为止,我被告知它是正确的但我遇到了'For Loop'的问题。
  • 特别重复打印的语句和数字,直到数组已满,并显示您正在填充的特定数组。 (如图所示)。

这只打印1个带有1个数组的语句,然后打印4个数字..如何在每个语句后打印每个数字?我尝试了我认识的唯一让它变得更糟的方法。 Incorrectly Looped printed statement

以下代码:

void DisplayArray(int a[2][2]);
int main()
{
    int a[2][2], i, j, k;
    /*Counter variables for the loop*/
    printf ("***** Functions ***** \n");
    for (i=0; i<2; i++)
        for(j=0; j<2; j++)  
        printf("\n Enter numeric values for each Array [%d] [%d]: \n", i, j);
            scanf("%d", &a[i][j]);
    DisplayArray(a);
    return 0;
}
void DisplayArray(int a[2][2])
{
    int i, j;
    /*Displaying Array elements*/
    printf("\n The 2-D Array contains : \n");
    for(i=0; i<2; i++)
        for(j=0; j<2; j++)
            printf("%d \n" , a[i][j]);/*[i] name of 1 Array - [j] name of 2 Array*/
            if(j==2)
                printf("\n");
}

3 个答案:

答案 0 :(得分:0)

您忘记正确定义内部for循环的范围。

for (i=0; i<2; i++)
    for(j=0; j<2; j++)  
    printf("\n Enter numeric values for each Array [%d] [%d]: \n", i, j);
        scanf("%d", &a[i][j]);

相当于:

for (i=0; i<2; i++)
    for(j=0; j<2; j++)
       printf("\n Enter numeric values for each Array [%d] [%d]: \n", i, j);

// Outside of both the for loops. 
scanf("%d", &a[i][j]);

缩进表达了人类读者的意图,而不是计算机。

您需要使用:

for (i=0; i<2; i++)
   for(j=0; j<2; j++)
   {  // Add
      printf("\n Enter numeric values for each Array [%d] [%d]: \n", i, j);
      scanf("%d", &a[i][j]);
   } // Add

为了使代码更具可读性,还要为外部for循环添加显式范围。

for (i=0; i<2; i++)
{  // Add
   for(j=0; j<2; j++)
   {  // Add
      printf("\n Enter numeric values for each Array [%d] [%d]: \n", i, j);
      scanf("%d", &a[i][j]);
   } // Add
} // Add

对其他循环进行类似的更改。

答案 1 :(得分:0)

你的for循环可能没有按照你的意图行事,因为没有大括号,它们只会在第一个语句中起作用。

void DisplayArray(int a[2][2]);
int main()
{
    int a[2][2], i, j, k;
    /*Counter variables for the loop*/
    printf ("***** Functions ***** \n");
    for (i=0; i<2; i++)
    {
        for(j=0; j<2; j++)
        {
            printf("\n Enter numeric values for each Array [%d] [%d]: \n", i, j);
            scanf("%d", &a[i][j]);
        }
    }
    DisplayArray(a);
    return 0;
}
void DisplayArray(int a[2][2])
{
    int i, j;
    /*Displaying Array elements*/
    printf("\n The 2-D Array contains : \n");
    for(i=0; i<2; i++)
    {
        for(j=0; j<2; j++)
        {
            printf("%d \n" , a[i][j]);/*[i] name of 1 Array - [j] name of 2 Array*/
            if(j==2)
                printf("\n");
        }
    }
}

答案 2 :(得分:0)

你错过了一些花括号。改为:

>>> g = (''.join(p) for i in range(1, 3) for p in product(l, repeat=i))
>>> list(g)
['A', 'B', 'C', 'AA', 'AB', 'AC', 'BA', 'BB', 'BC', 'CA', 'CB', 'CC']

for (i=0; i<2; i++)
    for(j=0; j<2; j++) {
        printf("\n Enter numeric values for each Array [%d] [%d]: \n", i, j);
        scanf(" %d", &a[i][j]);
        DisplayArray(a);
    }

另请注意,for(i=0; i<2; i++) for(j=0; j<2; j++) { printf("%d \n" , a[i][j]); if(j==2) printf("\n"); } 永远不会评估为true。当j等于2时,循环结束。您应该将其更改为1.我还建议删除最里面的printf语句中的if(j==2)

完整代码:

\n