float num; int sum=1 ; printf("请输入一个数算其阶乘:"); scanf("%f", &num); int input = (int)num; if ((num-input)==0) { if (input == 0 || input == 1) { printf("阶乘为:1"); } else { for (int i = 1; i <= input; i++) { sum = sum * i; } printf("阶乘为:%d\n", sum); } }else{ printf("请输入一个整数!"); }
首先输入数需要考虑整数和浮点数,先令初始状态输入数为浮点类型。
将输入数强制转化成整型,int型只取整数部分,输入数与整数部分相减==0既为输入的是整数,若非0则提示输入一个整数!
先排除输入的整数为0和1的情况,此时两个数的阶乘为1,为特殊值,单独输出。
算阶乘则利用for循环,i=1;i<=input;(input为强制转换后的整数),循环input次,每次得到的结果相乘。输出阶乘。