2
#include <stdio.h>
#include <time.h>
int main(int argc,char *argv[])
{

        int i;
        int array[20];
        srand(time(NULL));
        for (i=0; i<20; i++)
            array[i] = rand()%8999 + 1000;

        char *fname = argv[1];
        FILE *fp;
        fp = fopen(fname,"w");
        fwrite(array,sizeof(int),20,fp );

        fclose(fp);
        return 0;
}

私のプログラムは、1000 から 9999 の範囲内で 20 個の乱数のシーケンスを生成する必要があります。20 個の数値の配列を作成し、並べ替えて、コマンドラインで渡されたファイルに転送する必要があります...

4

4 に答える 4

1

まず、 の戻り値を確認しますfopen

それで:

fwrite(array,sizeof(int),20,fp );

arrayポインタを動かしていません。次のようなものを使用します。

fprintf(fp, "%d\n", array[i]);

また:

array[i] = rand()%9999 + 1001;

によって得られた値が である場合はどうなりますrand()%99999998? then は と の間で9998 + 1001はなくなったと思います。また、どのように収穫できますか?10009999rand()%9999 + 10011000

于 2013-10-17T21:28:14.140 に答える