搜索
查看: 1836|回复: 6
打印 上一主题 下一主题

才开始,请帮我看看,问题出在哪里

[复制链接]
跳转到指定楼层
楼主
发表于 2013-6-8 00:54:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
5啊哈币
求100以内的偶数乘积,下面的运行结果等于0,问题在哪里?
#include <stdio.h>
#include <stdlib.h>
int main()
{
        int a,i;
        a=1;
        i=1;
        while(i<=100)
        {
                if(i%2==0)
                {       
           a=a*i;
        }
    i=i+1;  
    }
        printf ( "%d",a);
        system("pause");
        return 0;
}




最佳答案

查看完整内容

long也明显放不下的 计算这样的值要自己写数据结构
沙发
发表于 2013-6-8 00:54:15 | 只看该作者
吐槽有理 发表于 2013-6-8 08:51
你试用long定义变量看看

long也明显放不下的
计算这样的值要自己写数据结构
板凳
发表于 2013-6-8 01:49:28 | 只看该作者
100以内的偶数乘积肯定放不进一个int里面的
地板
发表于 2013-6-8 08:51:07 | 只看该作者
你试用long定义变量看看
5#
 楼主| 发表于 2013-6-9 10:27:35 | 只看该作者
rosynirvana 发表于 2013-6-8 00:54
long也明显放不下的
计算这样的值要自己写数据结构

原来还要那么复杂。那个几章的教程还没有办法解决啊?
6#
发表于 2013-6-9 11:54:17 | 只看该作者
woaic 发表于 2013-6-9 10:27
原来还要那么复杂。那个几章的教程还没有办法解决啊?

没有
你有兴趣可以去看看《算法竞赛入门经典》或者《算法设计手册》或者《C语言接口与实现》

如果你只是对解决这个问题感兴趣,用随便哪种天生支持无限精度整数的语言,例如python
  1. accu = 1
  2. for x in range(2,100,2):
  3.   accu = accu * x

  4. accu
复制代码
结果是
342432247025119762482464328952081859751186750537191988279156544634880000000000L

这个数字用C的任何内置类型都放不下
7#
 楼主| 发表于 2013-6-9 18:55:08 | 只看该作者
rosynirvana 发表于 2013-6-9 11:54
没有
你有兴趣可以去看看《算法竞赛入门经典》或者《算法设计手册》或者《C语言接口与实现》

非常感谢大侠赐教。以为能速成,看来路漫漫其修远兮,得慢慢学少睡觉。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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