プログラミング入門II 宿題 2019.06.10

Back


1から99の範囲の整数を乱数により20個発生させます.次にその数字を大きい順に並べ替えてください.そして,もう1個1から99までの整数のどれかを乱数により発生させ,先ほどの配列の順番に加えて表示するプログラムを作成しましょう.

My student number: s186099

Original numbers
 1 19 35 83 19 44 53 64 17  4 51  5 65 49 85 68  7 49 66 55 

Sort array above
85 83 68 66 65 64 55 53 51 49 49 44 35 19 19 17  7  5  4  1 

Add 75 into array
85 83 75 68 66 65 64 55 53 51 49 49 44 35 19 19 17  7  5  4  1 

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

なお,結果の出力では必ず最初の行に自分の学生番号を,最後にハイフンによるラインをつけること.無い場合には減点するので注意.

配列の要素の個数は最初から21個にしておいて,追加して並べ替えられるようにしましょう.
解答用紙を使用する際には,学生番号と名前の記入も忘れないでください.さらに,解答用紙自体がC言語のプログラムとなっていますので, cc コマンドを実行して,コンパイルエラーの無いことを確認してから提出してください.

指定の解答用紙を使用していない,コンパイルエラーが出る,実行時に警告が出る,学生番号と名前が無い,というような答案は提出されても採点しません.注意してください.


解答例

// ************************************************** 
//                                                    
//      プログラミング入門II レポート課題                                    
//      2019.06.10                                    
//                                                    
// ************************************************** 
//                                                    
//      学生番号:                                     
//                                                    
//      氏名:                                         
//                                                    
// ************************************************** 
//                                                    
//      
              
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main(void)
{
	srand((unsigned) time(NULL));
	
	printf("My student number: s186099\n\n");
	
	int i, j, num, tmp, ary[21];
	
	printf("Original numbers\n");
	
	for(i=0; i<=19; i++)
	{
		ary[i] = rand() % 99 + 1;
		printf("%2d ", ary[i]);
	}
	
	printf("\n\nSort array above\n");
	
	for(i=0; i<=18; i++)
	{
		for(j=i+1; j<=19; j++)
		{
			if(ary[i]<ary[j])
			{
				tmp = ary[i];
				ary[i] = ary[j];
				ary[j] = tmp;
			}
		}
	}
	
	for(i=0; i<=19; i++)
	{
		printf("%2d ", ary[i]);
	}
	
	printf("\n\n");
	
	num = rand() % 99 + 1;
	printf("Add %d into array\n", num);
	
	for(i=19; i>=0; i--)
	{
		if(num>ary[i])
		{
			ary[i+1] = ary[i];
			ary[i] = num;
		}
	}
	
	for(i=0; i<=20; i++)
	{
		printf("%2d ", ary[i]);
	}
	
	printf("\n\n-------------------------------\n\n");
	
	return 0;
}


Back