から




IV-3 Edit

1/1+1/2+1/3+...+1/99999+1/100000を計算するために,C言語で次の二つの関数A,bを作った。ただしfloatはIEEE754に従う単制度(32bit)の型であり,コンパイルされた機械語コードは,ソースコード中に記述された演算をすべて順序どおりに実行するものとする。

float A(){
	int i; float sum = 0.0;
	for (i=1; i<=100000; i++){
		sum += 1.0/(float)i;
	}
	return sum;
}

float B(){
	int i; float sum = 0.0;
	for (i=100000; i>=1; i--){
		sum += 1.0/(float)i;
	}
	return sum;
}

A,Bの実行結果について,1〜5の中から最も適切なものを選べ。

  1. AとBの結果は同じ精度になる。
  2. Aの結果の方がBより精度が高い。
  3. Bの結果の方がAより精度が高い。
  4. Aはオーバーフローになるが,Bは正常に実行できる。
  5. Bはオーバーフローになるが,Aは正常に実行できる。


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 下位頁新規  一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2010-02-22 Mon 23:18:57 JST (2918d)