加减乘除,输入格式的不同。

img


如题,如果用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;
}