0

簡単な質問ですが、解決策が見つかりません。基本的に、以下のプログラムは、1 から 1000 までの各整数を 2 乗することを想定しています。しかし、印刷すると途切れてしまいます。300行しか印刷できず、その後は途切れます。この例では、最初の行が 1 ではなく、j<301 の場合は 4、j<302 の場合は 9 になります。どうすれば1000行を印刷できるかが私の主な質問です。

#include <stdio.h>
#include <math.h>

int main(void)
{
    int j;
    double k,sarr[1000];

    for (j=0; j<301; j++)
    {
        k = pow(j,2);
        sarr[j] = k;
        printf("\n%lf",sarr[j]);    
    }

    return(0);
}    
4

2 に答える 2

3

コードに問題はありません。あなたの端末は、プログラムの出力の最後の 300 行だけをライン バッファーに保持していると思われます。

出力をファイルにリダイレクトしてみてください (または、プログラム内から数値をファイルに書き込んでください)。

于 2013-03-03T20:09:34.297 に答える
1

最初の行は1( = 2^0) にする必要があるため、出力は切り捨てられます。

forループを変更してi = 0、...、999をループしfor (j=0; j<1001; j++)、出力をファイルにリダイレクトして、ターミナルを使用する場合に出力全体を表示できます。

走る:

./program > filename

プログラムの出力を、filename現在のディレクトリに保存される というファイルにリダイレクトします。このファイルには、印刷されたすべての数字が含まれている必要があります。

さらに、配列自体は必要ありません。type の単一の変数を使用するだけdoubleです。

于 2013-03-03T20:11:50.467 に答える