情報科学演習 宿題 2012.11.26

Back


5から10の範囲の乱数を発生させて,その数の分だけ3桁の正の整数を乱数で発生させて表示し,行の最後には位置を揃えて,その行の乱数の平均値を小数第一位まで表示することを10回繰り返すプログラムを作成せよ.

なお,表示においては先頭の行には自分の学生番号を,最後にはハイフンによるラインを出力すること.

My student number: s124099

  1   2   3   4   5   6   7   8   9  10   Average
415 104 429 412 369 339 223 610 971         430.2
849 159 574 587 553 235                     492.8
583 816 127 897 707 206 509 436 149 267     469.7
797 145 262 264 150 591 577 471 882         459.9
981 853 873 883 965                         911.0
470 518 635 755 153 503 783 950 262         558.8
512 598 990 679 660 839                     713.0
823 104 879 414 633 402 297 385 435 202     457.4
318 219 710 741 637 345 548                 502.6
800 383 693 963 325                         632.8

---------------------------

1 2 3 ... 10の部分も for 文を使用して下さい.平均値を右端にそろえるためのスペースもやはり for 文を使います.

解答例

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

main()
{
	srand((unsigned) time(NULL));
	
	int i, j, num1, num2, sum;
	
	printf("My student number: s124099\n\n");
	
	for(i=1; i<=10; i++)
		printf("%3d ", i);
		
	printf("  Average\n");
	
	for(i=1; i<=10; i++){
		sum = 0;
		num1 = rand() % 6 + 5;
		
		for(j=1; j<=num1; j++){
			num2 = rand() % 900 + 100;
			printf("%d ", num2);
			sum += num2;
		}

		for(j=0; j<=10-num1; j++)
			printf("    ");
			
		printf("%5.1f\n", sum * 1.0 / num1);
	}
	printf("\n---------------------------\n\n");
	
	return(0);
}


Back