ホーム » スタッフ » 斉藤徹 » 演習

2006年6月
« 5月   7月 »
 123
45678910
11121314151617
18192021222324
252627282930  

最近の投稿(電子情報)

アーカイブ

カテゴリー

演習

時間としては、先週から取り組んでいる 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 にはゴミが入ったまま。