只读取和打印正数组索引

Read and print only positive array indexes

我的问题与某些已回答的问题类似,但特别是此问题的答案不在其中。这是我的代码

    int main()
{   int i,j,k,sorted;
    int A[4][4];
    int C[16];
    int positive = 0;

    for(i=0;i<4;i++)
    {
        for(j = 0; j<4; j++)
        {
            printf("A[%d][%d]: ", i,j);
            scanf("%d", &A[i][j]);

            if(A[i][j]>0){
                C[positive] = A[i][j];
                printf("C = %d\n");         
                positive++;
            }       
        }
    }
    for(j=0;j<4;j++)
    {
        printf("%d  ", A[positive]);
    }
    printf("\n");
    //printf("Your positive numbers are: ", positive);

    printf("\n");
    system("pause");
    return 0;

}

我想检查输入是否为负数,然后才将其添加到一维数组。问题是我该怎么做?

一般提示

int main()
{   

int i,j,k,sorted; // do not declare loop control variables outside of their respective loops
int A[4][4];
int C[16];
int positive = 0; // for readability's sake please refrain from using long ass variable names for simple control var's

for(i=0;i<4;i++) // idiomatic way is for(int i = 0; i < 4; i++)
{
    for(j = 0; j<4; j++) // for(int j = 0; j<4; j++)
    {
        printf("A[%d][%d]: ", i,j);
        scanf("%d", &A[i][j]);

        if(A[i][j]>0)
        {
            C[positive] = A[i][j];
            printf("C = %d\n"); // missing argument & redundant since you intend to print them afterwards anyway? 
            positive++;
        }       
    }
}
for(j=0;j<4;j++) // this loop is supposed to print all positive numbers?
{
    printf("%d  ", A[positive]); // you are looping through A[0-3][0], which are not necessarily the positive numbers of A.
}
printf("\n");
//printf("Your positive numbers are: ", positive);

现在回答您手头的问题。代码试图做什么和您向我们提出的要求是两件不同的事情。现在您正在向 C 数组添加正值,但您的问题是关于负值?

清理了我认为您想要的行为方式的代码。

int main()
{
int A[4][4];
int C[16];
int k = 0;
for (int i = 0; i < 4; i++)
{
    for (int j = 0; j < 4; j++)
    {
        printf("A[%d][%d]: ", i, j);
        scanf("%d", &A[i][j]);
        if (A[i][j] > 0) 
        {
            C[k] = A[i][j];
            k++;
        }
    }
}
printf("positive numbers in matrix A are: ");
for (int i = 0; i < k; i++) // loop from 0 to actual number of positive integers; array size remains at 16 in this case.
{
    printf("%d  ", C[i]);
}
printf("\n");
//printf("Your positive numbers are: ", positive);
printf("\n");
system("pause");
return 0;
}
int main()
{   int i,j,k,sorted;
int A[4][4];
int C[16];
int positive = 0;

for(i=0;i<4;i++)
{
    for(j = 0; j<4; j++)
    {
        printf("A[%d][%d]: ", i,j);
        scanf("%d", &A[i][j]);

        if(A[i][j]>0){
            C[positive] = A[i][j];
            printf("C = %d\n");         
            positive++;
        }       
    }
}
for(j=0;j<positive;j++)
{
    printf("%d  ", C[j]);
}
printf("\n");
//printf("Your positive numbers are: ", positive);

printf("\n");
system("pause");
return 0;

}

你错在结果循环中,你打印了一个二维数组,但你只使用了一维数组,在循环中不是直到 4,而是直到正数,然后在循环中,你打印了 A,但结果是 C 没有 A