簡體   English   中英

無法從 int 轉換為 int**

[英]Cannot convert from int to int**

我編寫了一個程序,它必須計算 1 - 20 的所有主要演員並將其存儲在二維數組中。 但我不明白為什么因素不存儲值,

#include <stdio.h>
#include <stdlib.h>

int prime_check(int number, int **p);

int
main(void)
{
    int **factor;

    factor = (int **) malloc(21 * sizeof(int *));
    for (int j = 0; j <= 20; j++)
        factor[j] = (int *) malloc(8 * sizeof(int));
    for (int number = 2; number <= 20; number++) {
        prime_check(number, factor);
    }
    printf("%d", factor[4][4]);         /* Main Function Ends */
}

int
prime_check(int number, int **p)
{
    int pos = 0;
    int test = number;

    while (!(number % 2)) {
        p[test][pos] = 2;
        pos++;
        number = number / 2;
    }
    for (int i = 3; i <= number; i++) {
        while (number % i == 0) {
            p[test][pos] = i;
            pos++;
            number = number / i;
        }

    }
    return 0;
}

您的程序似乎正在運行。 它確實會產生重復的因素。

以下 function 將轉儲您的結果

void results(int rows, int cols, int** array)
{
    for (int i = 0; i <= rows; i++)
    {
        printf( "%4d - ", i );
        for (int j = 0; j <= cols; j++)
        {
            printf( "%2d ", array[i][j] );
        }
        printf("\n");
    }
}

你可以把它稱為

results(20, 7, factor)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM