
如题,如果用while循环输入值的时候会因为阶乘而导致后面无法运行。
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int func(int n)
{
if (n == 0)
{
return 1;
}
else
{
return n * func(n - 1);
}
}
int main()
{
int num1, num2;
while (scanf("%d", &num1) == 1)
{
char fla;
while ((fla = getchar()) == ' ')
{
;
}
if (fla == '!')
{
printf("%d\n", func(num1));
}
else
{
scanf("%d", &num2);
switch (fla)
{
case '+':
printf("%d\n", num1 + num2);
break;
case '-':
printf("%d\n", num1 - num2);
break;
case '*':
printf("%d\n", num1 * num2);
break;
case '/':
if (num2 == 0)
{
printf("error\n");
break;
}
printf("%d\n", num1 / num2);
break;
case'%':
if (num2 == 0)
{
printf("error\n");
break;
}
printf("%d\n", num1 % num2);
break;
}
}
}
return 0;
}