搜索
楼主: 18320012584
打印 上一主题 下一主题

一个好标题,将获得更多人关注哦。求阶乘的代码

[复制链接]
楼主
发表于 2014-4-22 15:20:51 | 显示全部楼层
本帖最后由 河蟹 于 2014-4-22 16:10 编辑

想要限制范围的话按下面的那样写就行了
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. int fac(int);
  4. int main()
  5. {
  6.     int n;
  7.     printf("请输入1到9的数字:");
  8.     scanf("%d", &n);
  9.     if(n>9||n<1)
  10.     printf("对不起,你的输入超出范围!\n");
  11.     else
  12.     {

  13.        fac(n);//额,这个是多余的可以删除
  14.        printf("求得阶乘结果为:%d\n", fac(n));
  15.     }
  16.         system("pause");
  17.         return 0;
  18. }
  19. int fac(int n)
  20. {
  21.         if(n == 1)
  22.                 return 1;
  23.         return n * fac(n-1);        
  24. }
复制代码
沙发
发表于 2014-4-22 15:38:14 | 显示全部楼层
本帖最后由 河蟹 于 2014-4-23 20:31 编辑

再来一个加入了while循环,当输入超出范围时更正输入
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. int fac(int);
  4. int main()
  5. {
  6.     int i=0,n;
  7.     printf("请输入1到9的数字:");
  8.     scanf("%d", &n);
  9.     do
  10.     {
  11.       if(n<=9&&n>=1)
  12.        {  
  13.          i=fac(n);
  14.          printf("求得n的阶乘结果为:%d\n",i);
  15.          
  16.        }
  17.       else
  18.       {
  19.          printf("对不起,你的输入超出范围!请重新输入:\n");
  20.          printf("请输入1到9的数字:");<span style="line-height: 1.5;">       </span>
复制代码
板凳
发表于 2014-4-22 15:41:43 | 显示全部楼层
本帖最后由 河蟹 于 2014-4-22 15:42 编辑
rosynirvana 发表于 2014-4-22 15:36
这样多算一次fac(n)

嗯,所以后面就更正了,直接赋值的说,仔细一看,确实是我的疏忽,直接把fac()放入printf里就行了
地板
发表于 2014-4-22 16:13:31 | 显示全部楼层
rosynirvana 发表于 2014-4-22 15:54
循环里面放scanf记得清缓冲区

是加入fflush(stdin)吗?
5#
发表于 2014-4-22 16:50:59 | 显示全部楼层
本帖最后由 河蟹 于 2014-4-22 16:58 编辑
rosynirvana 发表于 2014-4-22 16:17
fflush(stdin)不能移植
用getchar清吧
好吧,是咱弄错了,下面的话作废
话说是使用getchar来替换scanf 吗?嗯,我试了下发现会出现一些蛋疼的事情,不知道是不是我搞错了还是咋滴
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

广播台
特别关注
快速回复 返回顶部 返回列表