プログラミング入門 情報科学演習 宿題 2016.11.21

Back


以下のように数列を表示するプログラムを for 文を用いて作成せよ.なお,各行のプログラムは以下のような条件で行うものとする.

  1. 最初の行は for 文を使用して普通に作成すること.

  2. 2行目の数列は一つの for 文と複合演算子 *= を用いて作成するが,その際に if 文などの条件分岐を使用しないこと.

  3. 3行目の数列は2行目のやり方に加えて,複合演算子 += を用いて作成すること.この時にも, if 文などの条件分岐を使用しないこと.使用する for 文は当然一つだけとする.

My student number: s164099

  1   2   3   4   5   6   7   8   9  10 
  1  -2   3  -4   5  -6   7  -8   9 -10 
  1  -1   2  -2   3  -3   4  -4   5  -5 

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

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

よく間違える人がいるのですが,C言語には ^ ** のようなべき乗の演算子はありませんから.

今回はメンター学習室で勉強することができないので,できる範囲でプログラムに取り組んでください.そのため,以下のように部分点を予め提示しておきます.
  1. 1行目の数列ができたら2点.
  2. 2行目の数列ができたら6点.
  3. 2行目の数列で,条件に反して if 文を使ったら2点.
  4. 2行目がきちんとできた上で3行目ができたら2点.
  5. 合計で10点満点ですが,2行目で if 文を使ってしまったら最大で4点です.
インデントが正しくない場合は2点減点ですので,注意してください.学生番号やハイフンライン,解答用紙への学生番号や氏名なども欠けると全て減点ですので,得点がなくなってしまうことが無いように,提出は慎重に行いましょう.
解答用紙を使用する際には,まず,科目名の不要な方を削除してください.また,学生番号と名前の記入も忘れないでください.さらに,解答用紙自体がC言語のプログラムとなっていますので, cc コマンドを実行して,コンパイルエラーの無いことを確認してから提出してください.

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


解答例

/* ************************************************** */
/*                                                    */
/*      プログラミング入門  情報科学演習C7                            */
/*      レポート課題                                  */
/*      2016.11.21                                    */
/*                                                    */
/* ************************************************** */
/*                                                    */
/*      学生番号:                                    */
/*                                                    */
/*      氏名:                                        */
/*                                                    */
/* ************************************************** */
/*                                                    */
/*      この行以降に解答のプログラムを書くこと        */

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

main()
{
	srand((unsigned) time(NULL));
	
	int i, sign, sum;
	
	printf("My student number: s164099\n\n");
	
	for(i=1; i<=10; i++)
		printf("%3d ", i);
	
	printf("\n");
	
	sign = 1;
	
	for(i=1; i<=10; i++){
		printf("%3d ", i * sign);
		sign *= -1;
	}
	
	printf("\n");
	
	sum = 0;
	sign = 1;
	
	for(i=1; i<=10; i++){
		sum += i * sign;
		printf("%3d ", sum);
		sign *= -1;
	}
	
	printf("\n");

	printf("\n---------------------------------------\n\n");
	
	return(0);
}


Back