私は単純な C プログラムを持っています。これはループしてユーザーから不特定の数を取得します (一種の CAS です)。私は複数の言語でプログラムに取り組んでおり、C++ バージョンは完全に機能しますが、プログラムが別のユーザー操作を要求すると、C バージョンはループの最後で停止し、ユーザーは操作を 2 回入力する必要があります。プログラムの動作は次のとおりです。
操作を入力します
4+2
6
6 +2 // ユーザーは前の回答に 2 を追加します
8 +x // ユーザーはこのように無期限に追加を続けることができます
代わりに、次のようになります。
操作を入力してください
4+2
6 +2
// ユーザーがもう一度「+2」を入力するまで何も起こりません
+2
8 +x
+x
[8+x の合計]
など。
私は当初、この一時停止は、プログラムがループの開始時に 1 回、ループの最後に 2 回、ユーザー入力を求めることが原因であると考えていました。&num1,&op,&num2
プログラムが取得する入力の種類 (または)を決定するために、ループに反復カウンターを配置します&op,&num2
。何らかの理由で、違いはありませんでした。コードの関連部分は次のとおりです。
int opnubmer;
opnumber = 0;
printf("Enter an operation\n");
while(op != '=')
{
if (opnumber == 0)
{
scanf("%d%c%d",&num1,&op,&num2);
}
else if (opnumber != 0)
{
scanf("%s%d",&op,&num2);
}
switch(op)
{
case '+':
num2 += num1;
break;
case '-':
num2 -= num1;
break;
case '*':
num2 *= num1;
break;
case '/':
num2 /= num1;
break;
default:
printf("%s%c%s", "Unknown op: ", op, "\n");
exit(1);
}
printf("Solution: ");
printf("%d",num2);
opnumber++;
num1=num2;
}
誰でも私を助けることができますか?