| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 6787 人关注过本帖
标题:如何设计一个程序,求出100位数以内的加法?
只看楼主 加入收藏
whitesnow
Rank: 1
等 级:新手上路
帖 子:1
专家分:3
注 册:2012-6-27
收藏
得分:3 
可以把两个加数作为数组来保存,例如2个20位数的int相加x[20],y[20],sum保存在z[20]里,
int flag=0;        //保存进位
z[19]=x[19]+y[19]+flag;
z[19]=z[19]%10;
flag=z[19]/10;
如此,依次循环
2012-06-28 14:09
妖刀重生
Rank: 1
等 级:新手上路
帖 子:8
专家分:3
注 册:2012-5-5
收藏
得分:3 
# include <stdio.h>
# include <stdlib.h>

int main(void)
{
    char * s = (char *)malloc(200 * sizeof(char));
    int * h = (int *)malloc(100 * sizeof(int));
    int * m = (int *)malloc(100 * sizeof(int));
    int n[110] = {0};
    int i, j, t, x, q;
   
    printf("请输入需要计算的题目:\n");
    scanf("%s", s);

    for (x=0, i=0; *(s+x); x++, i++)
    {
        if (*(s+x) >= '0' && *(s+x) <= '9')
            h[i] = (*(s+x) - 48);
        else
            break;
    }

    if (*(s+x) == '+')
        x ++;

    for (j=0; *(s+x); x++, j++)
    {
        if (*(s+x) >= '0' && *(s+x) <= '9')
            m[j] = (*(s+x) - 48);
        else
            break;
    }

    free(s);

    if (i > j)
        q = t = i;
    else
        q = t = j;

    while (t >= 0 && i >=0 && j >=0)
    {
        n[t] = n[t] + h[i] + m[j];
        if (t == 0)
            break;
        if (n[t] >= 10)
        {
            n[t] = n[t] - 10;
            n[t-1] ++;
        }

        t --;
        i --;
        j --;
    }

    while (t >= 0)
    {
        if (i < 0)
            n[t] = n[t] + m[j];
        if (j < 0)
            n[t] = n[t] + h[i];
        t --;
        i --;
        j --;
    }

    free(h);
    free(m);
   
    for (i=0; i<q; i++)
        printf("%d", n[i]);

    printf("\n");

    return 0;
}
2012-06-28 18:27
快速回复:如何设计一个程序,求出100位数以内的加法?
数据加载中...
 
   



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

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