プログラミング入門I 宿題 2018.12.26

Back


3桁の正の整数を乱数により1つ発生させる.そして,その数が偶数であれば2で割り,奇数であれば3倍して1を足す,という作業を行う.新たに出てきた数に対しても同様の処理を行い,最終的に被演算数が1になるまで繰り返すプログラムを作成せよ.

My student number: s186099

510 255 766 383 1150 575 1726 863 2590 1295 3886 1943 5830 2915 8746 4373 13120 6560 3280 1640 820 410 205 616 308 154 77 232 116 58 29 88 44 22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1 

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

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

3倍して1を足すという処理は1つの複合演算子では書けませんので,注意してください.きちんと代入の式を書くか,2回複合演算子を使うかのどちらかになります.
解答用紙を使用する際には,学生番号と名前の記入も忘れないでください.さらに,解答用紙自体がC言語のプログラムとなっていますので, cc コマンドを実行して,コンパイルエラーの無いことを確認してから提出してください.

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


解答例

// ************************************************** 
//                                                    
//      レポート課題                                    
//      2018.12.26                                    
//                                                    
// ************************************************** 
//                                                    
//      学生番号:                                     
//                                                    
//      氏名:                                         
//                                                    
// ************************************************** 
//                                                    
//      
              
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main(void)
{
	srand((unsigned) time(NULL));
	
	printf("My student number: s186099\n\n");
	
	int num = rand() % 900 + 100;
	printf("%d ", num);
	
	while(num>1)
	{
		if(num%2==0)
		{
			num /= 2;
		}
		else
		{
			num = num * 3 + 1;
		}
		
		printf("%d ", num);
	}
	
	printf("\n\n--------------------------\n\n");		
			
	return 0;
}


Back