#include
#include
float input(void);
float inputdivide(void);
float divide(float num1 ,float num2);
int main(void)
{
int ch ;
float answer;
float firnum , secnum;
while((ch = getchar()) != EOF)
{
if(ispunct(ch) || ch == '\n')
continue;
{
printf("divide\n");
firnum = input();
secnum = inputdivide();
answer = divide(firnum,secnum);
break;
}
}
return 0;
}
float inputdivide(void)
{
float input;
char ch;
while(scanf("%f",&input) != 1)
{
while((ch = getchar()) != '\n')
{
putchar(ch);
}
printf("again!\n");
while(input == 0 )
{
printf("again\n");
break;
}
}
return input;
}
float input(void)
{
float input;
char ch;
while(scanf("%f",&input) != 1)
{
while((ch = getchar()) != '\n')
putchar(ch);
printf("again!\n");
}
return input;
}
float divide(float num1 ,float num2)
{
float output;
output = num1 / num2 ;
printf("%g / %g = %g\n",num1,num2,output);
return output;
}
想要输入第二个数的时候0的时候把0截断,但是程序截不断,为什么inputdivide应该怎么改?
scanf("%f",&input) != 1如果改成scanf("%f",&input) == 1程序就输出不了的数,为什么?
while(input == 0 )
{
printf("again\n");
break;
{
}
如果这一段你想表达的是退出整个input回调函数,那这里要更改成 if(input==0),因为如果是while .那么只能退出这一下小层的while.整个大结构体还没退出。