コンピュータ3A 履修者の皆様 本日分の課題をお送りします。頑張って解いてください。 なお,来週はVERA祭の後片付けで休講らしいですね。 本日の課題は以下の 4 題です。 1. 次のプログラムはサイコロを 6000 回振って出た目の数をカウントする プログラムである。これを配列を使って書き換えよ。 #include #include #include int main(void) { int i, face, one=0, two=0, three=0, four=0, five=0, six=0; time_t loadingtime; srand((unsigned)time(&loadingtime)); for ( i=0; i<6000; i++) { face = rand() % 6 + 1; switch(face) { case 1: ++one; break; case 2: ++two; break; case 3: ++three; break; case 4: ++four; break; case 5: ++five; case 6: break; } } printf("さいころの目 出現回数\n"); printf(" 1 %8d\n", one); printf(" 2 %8d\n", two); printf(" 3 %8d\n", three); printf(" 4 %8d\n", four); printf(" 5 %8d\n", five); printf(" 6 %8d\n", six); return 0; } 2. 次のプログラムは,gets を使って読み込んだ文章を反転させて表示する プログラム reverse.c である。足りない部分に適切な数字を入れて完成させ よ #include int main(void) { char sentence[100]; void reverse(char a[]); printf("文章を一行入力してください:\n"); gets(sentence); printf("入力された行を逆向きにプリントすると:\n"); reverse(sentence); printf("\n"); return 0; } void reverse(char str[]) { if (str[0] == '\0') return; else { reverse(&str[//ここに数字が入る]); putchar(str[//ここにも数字が入る]); } } 3. 次のプログラムはどういう働きをするか。簡潔に答えよ。 include #define SIZE 10 int whatIsThis(int a[], int x); int main(void) { int total, a[SIZE]={1,2,3,4,5,6,7,8,9,10}; total=whatIsThis(a, SIZE); printf("配列の要素の値の合計は:%d\n", total); return 0; } int whatIsThis(int a[], int x) { if ( x == 1 ){ return a[0]; } else { return a[x - 1] + whatIsThis(a, x - 1); } } 4. 次のプログラムはどういう働きをするか。簡潔に答えよ。 define SIZE 10 void someFunction(int x[], int size); int main(void) { int a[SIZE] = { 32, 27, 64, 18, 95, 14, 90, 70, 60, 37}; printf("配列の値は:\n"); someFunction(a, SIZE); printf("\n"); return 0; } void someFunction(int x[], int size) { if ( size > 0 ) { someFunction(&x[1], size -1 ); printf("%d ", x[0]); } }