1から1000の乱数を1000個発生させ、文字にすることができる数字はいくつあるか、また、もじにできるものは文字に変換しファイルに保存する というもんだいで
int main (void)
{
int i,n;
srand ((unsigned)time(NULL));
printf("1~1000:\n");
for(i=1; i<=1000;i++)
1から1000の乱数を1000個発生させるという部分はこのような感じになるのではないかと予想してみたのですが、後の部分が教科書を見てもまったくわからずこまっています どなたかおねがいします
乱数
Re:乱数
たぶん、こんなことがしたいのではないかという例です。
#include <stdio.h> #include <stdlib.h> #include <ctype.h> #include <time.h> int main(void) { FILE *fp; int i, n; /* 結果出力用ファイルのオープン */ fp = fopen("output.txt", "w"); if (fp == NULL) fprintf(stderr, "file open error\n"), exit(1); /* 乱数の初期化 */ srand((unsigned int) time(NULL)); for (i = 0; i < 1000; i++) /* 指定回数分だけ繰り返す */ if (isprint(n = rand() % 1000 + 1)) /* 1~1000の乱数が表示可能なら */ fprintf(fp, "%4d %c\n", n, n); /* ファイルに出力する */ /* ファイルを閉じて終了 */ fclose(fp); return 0; }
Re:乱数
なるほど。
とりあえず私の環境では、ASCIIを使って
こんな感じで表示は出来ます・・。
とりあえず私の環境では、ASCIIを使って
こんな感じで表示は出来ます・・。
#include <stdio.h> #include <stdlib.h> #include <time.h> int main () { int i,n,count=0; srand ((unsigned)time(NULL)); for(i=0;i<1000;i++){//1000回ループ n=rand()%1000+1;//1~1000の乱数生成 if(n>=33 && n<=126){//ASCIIの文字範囲なら printf("文字コード[%3d] 変換文字[%c]\n",n,(char)n); count++;//文字数カウント } } printf("\n%d個\n",count); return 0; }