搜索
查看: 839|回复: 8
打印 上一主题 下一主题

大家帮我看看这个是哪里出问题了?

[复制链接]
跳转到指定楼层
楼主
发表于 2014-3-5 21:56:38 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
5啊哈币
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. int main()
  4. {
  5.         printf("1*3*...*99=? \n");
  6.     int i=1,t=1;
  7.     while(i<=99)
  8.     {
  9.     t=t*i;
  10.     i=i+2;
  11.     }
  12.     printf("1*3*...*99=%d \n",t);
  13.         system("pause");
  14.         return 0;
  15. }
复制代码
我是想求1*3*...*99的值。
但是运行出来的值是这个:

求助怎么改?

9PMQB93SU54WN@6%{O14~SG.jpg (6.1 KB, 下载次数: 3)

运行结果

运行结果
沙发
发表于 2014-3-5 22:11:37 | 只看该作者
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. int main()
  4. {
  5.         double i=1,t=1;   //类型改下试试~~
  6.     printf("1*3*...*99=? \n");  
  7.     while(i<=99)
  8.     {
  9.         t=t*i;
  10.         i=i+2;
  11.     }
  12.     printf("1*3*...*99=%d \n",t);
  13. system("pause");
  14. return 0;
  15. }
复制代码
板凳
发表于 2014-3-6 08:56:37 | 只看该作者
上溢,建议用double类型,要double溢出可不是那么容易的~
地板
发表于 2014-3-6 10:13:45 | 只看该作者
有符号整型最大值32767,无符号整形最大值65535。很明显你的结果溢出了
5#
发表于 2014-3-6 12:42:57 | 只看该作者
刘玟羽 发表于 2014-3-6 10:13
有符号整型最大值32767,无符号整形最大值65535。很明显你的结果溢出了

这又是老古董数据了
32位int能达到21亿
6#
发表于 2014-3-6 12:44:23 | 只看该作者
大数乘法用C的内置类型放不下
要自己模拟
初学者别尝试了,写起来真的很烦躁的
7#
发表于 2014-3-14 00:09:17 | 只看该作者
double 就可以解决
8#
发表于 2014-3-14 00:34:40 | 只看该作者
说用double的别逗了
哪里算阶乘只要十几位数字的?
9#
发表于 2014-3-14 18:29:54 | 只看该作者
不懂不懂不懂不懂
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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