搜索
查看: 1715|回复: 18
打印 上一主题 下一主题

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

[复制链接]
跳转到指定楼层
#
发表于 2014-4-22 12:34:59 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
5啊哈币
我要求n 的阶乘,可是1<=n<=9,折个条件要满足,而我的代码是就算我输入10,他还是能给出答案,我要的是只能是1到9的答案,输入10后无法输出答案的代码。
18#
 楼主| 发表于 2014-4-23 10:58:14 | 只看该作者
河蟹 发表于 2014-4-22 15:41
嗯,所以后面就更正了,直接赋值的说,仔细一看,确实是我的疏忽,直接把fac()放入printf里就行了

兄弟,你说的那些语句我还没学哦。。。。。
17#
发表于 2014-4-22 16:50:59 | 只看该作者
本帖最后由 河蟹 于 2014-4-22 16:58 编辑
rosynirvana 发表于 2014-4-22 16:17
fflush(stdin)不能移植
用getchar清吧
好吧,是咱弄错了,下面的话作废
话说是使用getchar来替换scanf 吗?嗯,我试了下发现会出现一些蛋疼的事情,不知道是不是我搞错了还是咋滴
16#
发表于 2014-4-22 16:17:22 | 只看该作者
河蟹 发表于 2014-4-22 16:13
是加入fflush(stdin)吗?

fflush(stdin)不能移植
用getchar清吧
15#
发表于 2014-4-22 16:13:31 | 只看该作者
rosynirvana 发表于 2014-4-22 15:54
循环里面放scanf记得清缓冲区

是加入fflush(stdin)吗?
14#
发表于 2014-4-22 15:54:50 | 只看该作者
河蟹 发表于 2014-4-22 15:38
再来一个加入了while循环,当输入超出范围时更正输入

循环里面放scanf记得清缓冲区
13#
发表于 2014-4-22 15:48:20 | 只看该作者
河蟹 发表于 2014-4-22 15:41
嗯,所以后面就更正了,直接赋值的说,仔细一看,确实是我的疏忽,直接把fac()放入printf里就行了

注视的斜杠反了……
\\是无法编译的……
12#
发表于 2014-4-22 15:41:43 | 只看该作者
本帖最后由 河蟹 于 2014-4-22 15:42 编辑
rosynirvana 发表于 2014-4-22 15:36
这样多算一次fac(n)

嗯,所以后面就更正了,直接赋值的说,仔细一看,确实是我的疏忽,直接把fac()放入printf里就行了
11#
发表于 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>
复制代码
10#
发表于 2014-4-22 15:36:26 | 只看该作者
河蟹 发表于 2014-4-22 15:20
想要限制范围的话按下面的那样写就行了

这样多算一次fac(n)
9#
发表于 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. }
复制代码
8#
发表于 2014-4-22 14:51:16 | 只看该作者
7#
发表于 2014-4-22 14:51:11 | 只看该作者
6#
 楼主| 发表于 2014-4-22 14:07:48 | 只看该作者
那真是谢谢你了,我被道题困恼了几天了,如果不用考虑范围的话,我早就知道答案了
5#
 楼主| 发表于 2014-4-22 13:33:53 | 只看该作者
我理解不了你说的这段话,不过我上面要提问的就是  《啊哈c思考快你一步》这本书的第四章,第四节,求和,那节内容的动手试一试的习题,如果有那道习题的答案也可以。
地板
发表于 2014-4-22 13:08:05 | 只看该作者
18320012584 发表于 2014-4-22 13:05
不好意思,我要的是只能用while或者if语句来实现的。。。。。我只学到了while,if

那段连while if都没用,不是比你要求的更高?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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