時間としては、先週から取り組んでいる N進数 の取扱いプログラムの 課題時間とした。
よくある間違い
演習の時に3年生がよく、プログラム作成時にやりそうな間違いとして、 いくつかのネタを紹介する。
/* 平均点を求めたい。*/ int sum = 100 ; /* 合計点 */ int size = 3 ; /* 人数 */ float mean ; mean = sum / size ; ........... mean = (float)sum / (float)size ; と書くべき。 printf( "%f" , mean ) ; ★平均点は 33.0 点 平均点を求めるつもりのプログラムでも、 sum / size はそれぞれ整数型なので、割算も整数型で行われる。 /* 点数が可ならば(60≦点<80) */ if ( 60 <= point < 80 ) ..... if ( 60 <= point && point < 80 ) と書くべき。 処理... ; ★処理は(ほとんどの処理系では)必ず実行される。 条件式は、(60 <= point) < 80 と解釈される。 60 <= point は論理値 0 or 1 を返す。 その (0 or 1) を 80 と比較するため。 /* 実数データの読み込み */ double x ; scanf( "%f" , &x ) ; ........ scanf( "%lf" , &x ) ; と書くべき ★xはゴミの値となる。 %f は float型(4byte)の入力フォーマット。 scanf は、xの場所に、入力データを 4 byte だけ格納する。 しかし、x は double 型で (8byte) の値。残りの 4byte にはゴミが入ったまま。