我正在开关操作员的帮助下制作加法,减法,除法和乘法程序。在这里,我想制作一个程序,只有当用户输入任何其他字符而不是'Y'时才会停止。问题是:当我运行程序时,在相应案例的结果之后它只打印'你想继续',然后程序停止。请帮忙!先感谢您! :)
#include<stdio.h>
int main() {
int n,a,b;
char answer;
while(1) {
printf("enter \n1.Addition \n2.subtraction \n3.division \n4.multiplication\t");
scanf("%d",&n);
switch(n) {
case 1: {
printf("enter value of a and b:\t");
scanf("%d %d",&a,&b);
printf("addition of %d+%d is %d",a,b,a+b);
goto ans;
}
case 2: {
printf("enter the value of a and b:\t");
scanf("%d %d",&a,&b);
printf("Subtraction of %d-%d is %d",a,b,a-b);
goto ans;
}
case 3: {
printf("enter the value of a and b:\t");
scanf("%d %d",&a,&b);
printf("Division of %*% is %d",a,b,a/b);
goto ans;
}
case 4: {
printf("enter the value of a nad b:\t");
scanf("%d %d",&a,&b);
printf("Multiplication of %d*%d is %d",a,b,a*b);
goto ans;
}
default: printf("invalid value!");
goto ans;
}
ans: {
printf("Do you want to continue?(Y/N):\t");
scanf("%c",&answer);
if(answer=='Y') continue;
else break;
}
}
return 0;
}
答案 0 :(得分:3)
而不是这个
scanf("%c",&answer);
尝试使用它:
scanf(" %c",&answer);
格式字符串中的空白占用空格,包括换行符,并读取第一个非空白字符。
答案 1 :(得分:2)
您是scanf
处理新行的受害者:
scanf() leaves the new line char in buffer?
特别是:
scanf
函数在尝试解析字符以外的内容之前会自动删除空格。字符格式(主要是%c
)是例外(它们不会删除空格),这是您在上一次扫描中的情况。