演習の解答例

各演習問題の解答例は以下の通りです。 講評に関しては、ここをみてください。

小テスト1 の講評

こちらで考えていた解答例はこんな感じです。
#include <stdio.h>

int main();

int main()
{int a, b, c, D;
 char buffer[10];

 printf("aを入力してください\n");
 gets(buffer);
 a=atoi(buffer);

 printf("bを入力してください\n");
 gets(buffer);
 b=atoi(buffer);

 printf("cを入力してください\n");
 gets(buffer);
 c=atoi(buffer);

 D=b*b-4*a*c;

 printf("判別式は %d です。\n", D);

 if (D > 0){printf("解は、2つの異なる実数解を持ちます。\n");}
 else if (D==0){printf("解は、重解を持ちます。\n");}
 else {printf("解は、2つの異なる虚数解を持ちます。\n");}
 
 return (0);
}
みなさん、よくできていました。 以下, 目についた誤りを解説しておきます
送り先を kunihiro@ice.uec.ac.jp にしたもの (正しい送り先は kunihiro だ, と説明してあります)
if 文の等号の判定が 「=」になっている人がたくさんいました。 正しくは、「==」です。「重解」となってほしいのだが、「虚数解となってしまう」 とアンケートに書いてくれた人がいました。たぶん、「=」になっているのではないですか?確認をしてみてください。
この問題は次の3通りに場合わけをするのですが、
  1. D>0のとき、
  2. D=0のとき、
  3. D<0
if (D>0){....;}
else if (D==0) {....;}
else{...;}
と書きます。たくさんの人が、
if (D>0){....;}
else if (D==0) {....;}
else if (D<0){...;}
と書いていました。間違いではありませんが、ちょっと無駄です。