0

最初の行には 997 までのすべての素数が含まれます。2 行目は初期化時にすべて 0 を含む必要があります。これは、後で for ループを介して値が与えられるためです。ただし、次の方法で配列を初期化すると:

nt prime(int numfac[2][168], int num){
int j = 0, i = 0;
int numfac[][] = {
                  {2,3,5,7,1,13,17,19,
                   23,29,31,37,41,43,
                   47,53,59,61,67,71,
                   73,79,83,89,97,101,
                   103,107,109,113,127,
                   131,137,139,149,151,
                   157,163,167,173,179,
                   181,191,193,197,199,
                   211,223,227,229,233,
                   239,241,251,257,263,
                   269,271,277,281,283,
                   293,307,311,313,317,
                   331,337,347,349,353,
                   359,367,373,379,383,
                   389,397,401,409,419,
                   421,431,433,439,443,
                   449,457,461,463,467,
                   479,487,491,499,503,
                   509,521,523,541,547,
                   557,563,569,571,577,
                   587,593,599,601,607,
                   613,617,619,631,641,
                   643,647,653,659,661,
                   673,677,683,691,701,
                   709,719,727,733,739,
                   743,751,757,761,769,
                   773,787,797,809,811,
                   821,823,827,829,839,
                   853,857,859,863,877,
                   881,883,887,907,911,
                   919,929,937,941,947,
                   953,967,971,977,983,
                   991,997},
                   {0}
                   };

私のコンパイラは、「配列型には不完全な要素型があります」と返します。

Cで2次元配列の1行だけを初期化するにはどうすればよいですか? 前もって感謝します。

4

1 に答える 1

0

for ループを使用して、1 行で 168 列を初期化できます。

元。

int i;
for (i = 0; i < 168; i ++)
{
    numfac[1][i] = 0;
}

numfac[2][168] と宣言された配列には、実際には要素 [0,1] と [0,1,2...167] が含まれることに注意することが重要です。さらに、値が設定されていない場合は NULL になり、重大な誤算の原因となります。

于 2013-11-10T06:11:54.470 に答える