| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 434 人关注过本帖
标题:各位大牛,求助,求代码,题目如下:
只看楼主 加入收藏
chi19872125
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2012-8-13
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:7 
各位大牛,求助,求代码,题目如下:
程序达到的效果是:如果输入12极其34,屏幕输出46。给定条件如下
a.仅需支持整数(包含整数和负数),不需支持浮点数。但整数的长度可以无限。
b.参数可以任意输出,参数不符合要求,输出错误提示。
2012-08-13 21:54
justNPC
Rank: 5Rank: 5
等 级:职业侠客
帖 子:101
专家分:311
注 册:2012-8-11
收藏
得分:0 
46=12+34?
整数长度还能无限?
2012-08-13 22:57
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:0 
楼上不说我都没看出来 46 和 12, 34 有什么关系。
2012-08-14 03:11
stophin
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:3
帖 子:227
专家分:618
注 册:2010-3-26
收藏
得分:5 
整数无限?要用到大数相加了?可以把加数、被加数及和三个整数作为字符串进行输入输出,用字符串来一位一位进行相加,但是挺麻烦的
2012-08-14 17:08
chi19872125
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2012-8-13
收藏
得分:0 
那只是一个例子,无限长的数是不是要用链表
2012-08-14 21:06
灬未来
Rank: 1
等 级:新手上路
帖 子:9
专家分:4
注 册:2012-7-20
收藏
得分:0 
我只知道整型中最长的整型是long int 型
2012-08-15 11:05
netlin
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:24
帖 子:544
专家分:4308
注 册:2012-4-9
收藏
得分:6 
4楼的思路比较好!
用两个字符数组分别存放加数和被加数,再用另外一个字符数组存放和。再用一个整数来存放进位或借位。

做自己喜欢的事!
2012-08-15 22:11
wsj3000
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:78
专家分:161
注 册:2009-8-4
收藏
得分:9 
呵呵,明显就是一个算法题嘛。脑子转转弯啦,肯定不是用整型相加了,否则就没意思了。其实4楼说对了,字符操作题。
给你个程序:

程序代码:
#include "stdio.h"
#include "string.h"
#include "stdlib.h"

#define CHK_NUM_RET(num) \
    do{\
        if(!((num) >= '0' && (num) <= '9')) \
        {\
            fprintf(stderr,"error, not number!\r\n");\
            return 1;\
        }\
    }while(0)

int main(int argc, char * argv[])
{
    char * pssum=NULL;
    int len1=0, len2=0, lensum=0;
    int num1=0, num2=0, sum=0, carry=0;
    int i=0;

    if(argc != 3)
    {
        fprintf(stderr, "Parameter error, need 2 numbers to sum\r\n");
        return 1;
    }

    len1 = strlen(argv[1]);
    len2 = strlen(argv[2]);
    lensum = (len1 >= len2) ? len1 : len2;

    pssum = malloc(lensum);
    if(pssum == NULL)
    {
        fprintf(stderr, "no enough memory!\r\n");
        return 2;
    }
    pssum[lensum] = '\0';

    lensum--;
    len1--;
    len2--;
    carry=0;
    while(lensum>=0)
    {
        //get num1
        if(len1 >= 0)
        {
            CHK_NUM_RET(argv[1][len1]);
            num1 = argv[1][len1] - '0';
        }
        else
            num1=0;
        //get num2
        if(len2 >= 0)
        {
            CHK_NUM_RET(argv[2][len2]);
            num2 = argv[2][len2] - '0';
        }
        else
            num2=0;

        //get sum
        sum = num1+num2+carry;
        if(sum >= 10)
        {
            sum -= 10;
            carry=1;
        }
        else
            carry=0;

        pssum[lensum] = sum + '0';

        lensum--;
        len1--;
        len2--;
    }

    if(carry == 1)
    {
        putchar('1');
    }
    printf("%s\r\n", &pssum[0]);

    return 0;
}

2012-08-16 12:23
快速回复:各位大牛,求助,求代码,题目如下:
数据加载中...
 
   



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

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