请问为何定义 while(ch=getchar()!='\n')程序会报错
/***************显示一个菜单实现加法,减法,乘法,除法**********************/#include<stdio.h>
#include<ctype.h>
char get_first(void);
float get_input(void);
int main()
{
float i,j; //定义输入的两个数字
float sum;
char ch;
while(1)
{
printf("Enter the operation of your choice:\n");
printf("a.add\t\ts.subtract\n");
printf("m.mutiply\t\td.divide\n");
printf("q.quit\n");
ch=get_first();
if(ch!='a'&&ch!='s'&&ch!='m'&&ch!='d') //如果输入的不是a,s,m,d四个字母中的一个则结束程序
{
printf("Bey!\n");
break;
}
printf("Enter first number:\n"); //输入第一个变量
i=get_input();
printf("Enter second number:\n"); //输入第二个变量
j=get_input();
while(ch=='s'&&j==0) //当其为除法时分母不能为0
{
printf("Enter a number other than 0:");
j=get_input();
}
switch(ch)
{
case 'a':
sum=i+j; //实现加法运算
printf("%4.2f+%4.2f=%4.2f\n",i,j,sum);
break;
case 's': //实现除法运算
sum=i/j;
printf("%4.2f/%4.2f=%4.2f\n",i,j,sum);
break;
case 'm': //实现减法运算
sum=i-j;
printf("%4.2f-%4.2f=%4.2f\n",i,j,sum);
break;
case 'd': //实现乘法运算
sum=i*j;
printf("%4.2f*%4.2f=%4.2f",i,j,sum);
break;
default:
break;
}
}
return 0;
}
char get_first(void) //去除转义字符换行字符等非法输入
{
int ch;
while(isspace(ch=getchar()))
;
while(getchar()!='\n')
continue;
return ch;
}
float get_input(void) //判断其输入的是否为数字
{
float n;
char ch;
while(scanf("%f",&n)!=1)
{
while((ch=getchar())!='\n')
putchar(ch);
printf(" is not an number.\n");
printf("Please enter a number,such ad 2.5,-1.78E8 or 3:");
}
while(getchar()!='\n')
continue;
printf("\n");
return n;
}
上面的程序输出结果是正确的,但是将char get_first(void)函数更改如下时就会出错
char get_first(void) //去除空格,转义字符,换行字符等非法输入
{
int ch;
while(isspace(getchar()))
;
while(ch=getchar()!='\n')
continue;
return ch;
}
其输出结果如下,请问各位大神这是为什么啊???????