我有一个简单的 C 程序,它循环从用户那里获取无限数量的数字(它是一种 CAS)。我正在用多种语言编写程序,虽然 C++ 版本运行良好,但 C 版本在循环结束时停止,当程序要求另一个用户操作时,需要用户输入两次操作。以下是该程序的工作方式:
输入操作
4+2
6
6 +2 // 用户在上一个答案的基础上加 2
8 +x // 用户可以无限期地继续这样加
相反,会发生以下情况:
输入操作
4+2
6 +2
// 在用户再次输入“+2”之前什么都不会发生
+2
8 +x
+x
[sum of 8+x]
等等。
我最初认为这种暂停是由于程序两次要求用户输入引起的,一次是在循环开始时,然后是在循环结束前。我在循环中放置了一个迭代计数器,以确定程序应该得到什么样的输入(&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;
}
谁能帮我吗?