| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 259 人关注过本帖, 1 人收藏
标题:关于2^100的一些问题
只看楼主 加入收藏
一个孩子
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:5
帖 子:356
专家分:954
注 册:2012-10-1
结帖率:96.77%
收藏(1)
已结贴  问题点数:20 回复次数:1 
关于2^100的一些问题
#include<stdio.h>
#include<stdlib.h>

#define MAXSIZE 1000

void main()
{
    int i, j, mark = 0, carry = 0;

    int data[MAXSIZE] = { 1, 0 };

    for (i = 0; i < 100; i++) {

        for (j = 0, carry = 0; j <= mark; j++)
        {
            data[j] = data[j] * 2 + carry; 这段核心代码是真心不懂啊,只能在纸上顺着循环写上几个数字,不理解数值位增加时数组空间变化怎样的?
            carry = data[j] / 10;
            data[j] = data[j] % 10;

        }
        if(carry) {
            data[++mark] = carry;
        }
        carry = 0;
    }
    for (i = mark; i >= 0; i--)
        printf("%d", data[i]);

    printf("\n");
}
不懂的地方有:
1.不知道在数组中的数值在循环过程中是怎样变化的尤其是在数值位增加时。
搜索更多相关主题的帖子: include 空间 
2012-10-01 22:04
pauljames
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:千里冰封
威 望:9
帖 子:1555
专家分:10000
注 册:2011-5-8
收藏
得分:20 
用carry来保存进位,用data中的元素来保存每个数字,这就是第二个for循环里面的含义。只要超出10就表示有进位,因此有carry = data[j] / 10;

经常不在线不能及时回复短消息,如有c/单片机/运动控制/数据采集等方面的项目难题可加qq1921826084。
2012-10-02 10:37
快速回复:关于2^100的一些问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015338 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved