C++ C++;|双输入输出

C++ C++;|双输入输出,c++,C++,该程序要求用户输入一个字符,并引导用户输入两个数字并执行某项任务,问题是在切换过程后,程序要求用户输入另一个字符,但在输出中显示两次,似乎在我点击按键添加一个字符并使其进入开关后,它很好地完成了分配,但在它之后,它连续两次要求我添加另一个字符 void main() { char ch; 双和,num1,num2,maxNumber,minNumber; printf(“请输入字符:”); ch=getchar(); 而((ch!='q')| |(ch!='q')) { 开关(ch) { 案例

该程序要求用户输入一个字符,并引导用户输入两个数字并执行某项任务,问题是在切换过程后,程序要求用户输入另一个字符,但在输出中显示两次,似乎在我点击按键添加一个字符并使其进入开关后,它很好地完成了分配,但在它之后,它连续两次要求我添加另一个字符

void main()
{
char ch;
双和,num1,num2,maxNumber,minNumber;
printf(“请输入字符:”);
ch=getchar();
而((ch!='q')| |(ch!='q'))
{
开关(ch)
{
案例“a”:案例“a”://平均数
printf(“请输入两个数字:”);
扫描频率(“%lf%lf”、&num1、&num2);
总和=(num1+num2)/2;
printf(“介于%.1lf和%.1lf之间的平均数是%.1lf\n”,num1,num2,sum);
如果(sum-(int)sum==0)
printf(“数字是一个整数\n”);
其他的
printf(“该数字不是整数\n”);
打破
大小写“*”://乘以数字
printf(“请输入两个数字:”);
扫描频率(“%lf%lf”、&num1、&num2);
总和=num1*num2;
printf(“在%.1lf和%.1lf之间相乘的数字是%.1lf\n”,num1,num2,sum);
打破
case'm'://显示最小数量
printf(“请输入两个数字:”);
扫描频率(“%lf%lf”、&num1、&num2);
num1>num2?(minNumber=num2):(minNumber=num1);
printf(“最小数字为%.1lf\n”,minNumber);
打破
case'M'://显示最大数量
printf(“请输入两个数字:”);
扫描频率(“%lf%lf”、&num1、&num2);
num1>num2?(maxNumber=num1):(maxNumber=num2);
printf(“最小值为%.1lf\n”,最大值);
打破
案例“^”://在数字之间执行幂运算
printf(“请输入两个数字:”);
扫描频率(“%lf%lf”、&num1、&num2);
总和=功率(num1,num2);
printf(“通电数字为%.1lf\n”,总和);
打破
案例“q”:案例“q”:
printf(“程序已结束”);
打破
违约:
打破
}
printf(“请输入字符:”);
scanf(“%c”和“ch”);
}
}

无关:
(ch!=“q”)|(ch!=“q”)
将始终为真。即使它是一个,根据定义,它也不可能是另一个。如果两者都不是,那么这两个表达式都是真的。那应该是
&&
。我相信这有你的答案。引用该答案:“当您输入第二个字符串并按下enter键时,一个字符串和一个字符被放入输入缓冲区,即:输入的字符串和换行符。该字符串被scanf使用,但换行符仍保留在输入缓冲区中。”