実行する操作をユーザーに求める非常に単純な計算プログラムを使用し、その後にこの操作を実行する2つの整数のプロンプトを表示します。プログラムは、ユーザーが文字「q」を入力した場合を除いて、これらの操作の後にループすることになっています。その時点で、プログラムは終了することになっています。
#include <stdio.h>
int main (void)
{
char c;
int number[2], num1, num2, result;
double num1d, num2d, resultd;
int done=1;
while(done)
{
printf("\t What sort of operation would you like to perform? \n \t Type + - * / accordingly. \n");
c = getchar();
printf("\tplease enter a number \n");
scanf("%d",&number[0]);
printf("\tplease enter another number \n");
scanf("%d",&number[1]);
num1 = number[0];
num2 = number[1];
switch(c)
{
case('-'):
result = num1-num2;
printf("\nThe first number you entered subtracted by the second number is %d.\n", result);
break;
case('+'):
result = num1+num2;
printf("The first number you entered added to the second number is %d.\n", result);
break;
case('*'):
result = num1*num2;
printf("The first number you entered multiplied with the second number is %d.\n", result);
break;
case('/'):
num1d = (double) num1;
num2d = (double) num2;
resultd = num1d/num2d;
printf("The first number you entered divided by the second number is %g.\n", resultd);;
break;
case('q'):
printf(" Now Exiting...\n");
done=0;
break;
default:
puts("Invalid key pressed. Press q to exit");
break;
}
}
return 0;
}
1回の計算では正しく機能しますが、その後は奇妙に機能します。特にそれは印刷します
printf("\t What sort of operation would you like to perform? \n \t Type + - * / accordingly. \n");
printf("\tplease enter a number \n");
完全に。
入力バッファをクリアする標準的な方法では、while (getchar() != '\n');
これは修正されません。このテキストが正しく表示されない場合の2回に1回は、ユーザーはプログラムを指示どおりに表示されているかのように使用できます(したがって、ユーザーは+、キャリッジリターン、整数、キャリッジリターンなどの操作を入力できます。プログラムはその時点から正しく実行されます)ただし、プログラムは入力に関係なく「無効なキーが押されました。qを押して終了します」と表示します。