小程序 - c字符串表示大整数

#define max(a, b) ((a) > (b) ? (a) : (b))

static char* reverse(char *str)
{
    char *l, *r, c;
    for (l = str, r = str + strlen(str) - 1; l < r; l++, r--) {
        c = *l;
        *l = *r;
        *r = c;
    }
    return str;
}

/*
 * Return the result of a big int as string when succeeded; otherwise
 * a NULL is returned. The caller needs to take care of the returned
 * heap memory; caller needs to ensure the inputs are valid big int.
 */
char* addBigInt(char *i1, char *i2)
{
    char *p1, *p2, *p3, *res;
    int len1, len2, val, carry;

    if (!i1 || !*i1)
        return strdup(i2);
    if (!i2 || !*i2)
        return strdup(i1);

    len1 = strlen(i1);
    len2 = strlen(i2);
    if ((res = (char*)malloc(max(len1, len2) + 2)) == NULL)
        return NULL;
    for (p1 = i1 + len1 - 1, p2 = i2 + len2 - 1, p3 = res, val = 0;
        p1 != i1 - 1 || p2 != i2 - 1 || val;      *p3++ = val % 10 + ‘0‘, val /= 10) {
        if (p1 != i1 - 1)
            val += *(p1--) - ‘0‘;
        if (p2 != i2 - 1)
            val += *(p2--) - ‘0‘;
    }
    *p3 = ‘\0‘;
    return reverse(res);
}
时间: 2024-08-09 10:36:05

小程序 - c字符串表示大整数的相关文章

日常记录(c语言)--字符串实现大整数加法

运行环境:CentOs 64位--vim 最近在看<剑指offer>这本书,看了前面的关于面试的能力,顿时觉得自己的编程能力差得好远. 可能我对鲁棒的代码理解还不深,我觉得鲁棒应该就是代码可以应对各种不同的输入,都能有相应的处理,并给出相应的输出. 下面是我看了之后对之前做过的大整数加法做了一些完善,之前的只能实现对纯数字字符进行求和,甚至连对空指针的处理都没有,好惭愧.我会用注释来记录自己对此算法的理解. 1 #include <stdio.h> 2 #include <s

小程序未来的十大畅想

小程序的出现改变了已有的推广模式,补足了APP的不足,更重要的是无需下载即可使用. 1.相互转化 不管是通过公众号讲流量导入小程序,还是通过小程序往公众号引流,两者都是相互连通的.而且可以连接上线和下线 2.更多的营销 在公众号内无法实现的营销手段,现在可有效借助小程序来实施.而对于传统商家想转战电商而言,小程序则更是提供了更多的可能. 3.更低的成本 淘宝天猫京东已经饱和,现在如果再进入这些战场,成本相对高昂(平台使用费.保证金.砸流量.平台抽成),不是一般商家能承受的.所以微信对他们而言是一

微信小程序开发—你期待的分享功能来了,微信小程序序新增5大功能

微信小程序在12月21日发布了新版本的开发工具,并在官网公布新增分享.模板消息.客服消息.扫一扫.带参数二维码功能. 有了分享功能,相信会给很多创业者带来了无限的可能性! 下面就来看看这些新功能到底怎么用吧! 1.分享 可以分享小程序的任何一个页面给好友或群聊.注意是分享给好友或群聊,并没有分享到朋友圈.一方面微信在尝试流量分发方式,但同时又不愿意开放最大的流量入口. 开发文档:https://mp.weixin.qq.com/debug/wxadoc/dev/api/share.html?t=

前端微信小程序源码开发大神牛

代码规范:变量与方法使用尽量使用驼峰式命名,避免使用$开头. 以$开头的方法或者属性为框架内建方法或者属性,可以被使用,使用前请参考API文档入口,页面,组件的命名后缀为.wpy.外链的文件可以是其它后缀. 请参考wpy文件说明使用ES6语法开发. 框架在ES6下开发,因此也需要使用ES6开发小程序,ES6中有大量的语法糖可以让我们的代码更加简洁高效.使用Promise 框架默认对小程序提供的API全都进行了 Promise 处理,甚至可以直接使用async/await等新特性进行开发. 项目创

小程序 - 去字符串空格/二叉树查找

/* * Remove all the white spaces from a string. */ void removeWB(char* str) { char* p; for (p = str; *str; str++) if (*str != ' ') *p++ = *str; *p = '\0'; } 查找某给定值在排序二叉树中是否存在. #include <stdio.h> typedef struct Node { int val; struct Node *left, *rig

每天一个小程序-连接字符串!

#include<stdio.h>#include<string.h>#define MAX_LEN 100 void Conect(char a[],char b[]);int main(){ char str1[MAX_LEN],str2[MAX_LEN]; printf("please iuput str1:\n"); scanf("%s",str1); printf("please iuput str2:\n");

字符串+数组模拟大整数乘法

C/C++中存在精度问题,很难做到大整数的加法和乘法操作,这里给出大整数的模拟乘法运算. 模拟原理: 模拟每一个位的值进行相乘,并使其加到对应的位置上,最后保证每一位的数都小于10,即从尾到头扫描一遍进位即可. 主要代码: k=(mx-i)+(mbx-j);//相乘后的位置 c[k-1]+=sum%10; c[k]+=sum/10; for(t=1;t<=k;++t){//保证每一位上的数都小于10 if(c[t]>=10){ //cout<<c[t]<<"

1万字!彻底看懂微信小程序

Q:为什么说小程序如炮友? A:小程序刚发布不久就流行一个段子:APP如原配,一年不用几次:服务号如情人,一个月固定几次:订阅号如酒店小卡片,天天可以卖广告:小程序像炮友,用完就走. 资本如嫖客,各个平台和垂直类掠夺者已经瓜分掉了线上流量,那么未来争夺的流量战场必然在实体场景,很多巨头其实已经证明了线下流量庞大的潜力.在快递包裹上印上自己的二维码关注公众号形成二次寄出快递的粘性,PokemonGo让用户在实体地图上捕获小精灵. 未来的入口不限于二维码,而是一切的富媒体.二维码之于2D识别,复杂图

大整数运算模板总结

大整数运算模板总结. 大整数结构体表示 整型数组从低位到高位顺序存储每一位数字,另外需要存储数字的长度. struct bign { int d[1000]; int len; bign(){ memset(d, 0, sizeof(d)); len = 0; } }; 大整数输入 一般通过字符串输入. bign Change(string str)//输入字符串转大整数 { bign a; a.len = str.length(); for (int i = 0; i < a.len; i++