C语言实现大整数运算
2014-10-11 15:52
453 查看
一、简介:
我们知道,C语言中的整型有short、int、long。ANSI C标准定义的整数类型范围为:类型 | 比特数 | 取值范围 |
unsigned short int | 16 | 0至65535(0至2^16-1) |
signed short int | 16 | -32768至32767(-2^15至2^15-1) |
unsigned int | 16 | 0至65535(0至2^16-1) |
signed int | 16 | -32768至32767(-2^15至2^15-1) |
unsigned long | 32 | 0至4294967295(0至2^32-1) |
signed long | 32 | -2147483648至2147483647(-2^31至2^31-1) |
二、大整数相加
#include <stdio.h> #include <string.h> #define N 10000 void Convert(char *, int); void AddZero(char *, int, int); int main() { int i, alen, blen, mlen, c[N+1]={0}, zflag=0; char a , b ; printf("input:\n"); gets(a); gets(b); alen = strlen(a); blen = strlen(b); Convert(a, alen); Convert(b, blen); if (alen > blen) { mlen = alen; AddZero(b, blen, alen); } else { mlen = blen; AddZero(a, alen, blen); } for (i=0; i<mlen; i++) c[i+1] = a[i] + b[i]; for (i=0; i<mlen; i++) if (c[i+1]>9) { c[i] += c[i+1]/10; c[i+1] %= 10; } printf("result:\n"); i = 0; while(1) if (c[i++]) break; else zflag++; for (i=zflag; i<mlen+1; i++) printf("%d", c[i]); printf("\n"); return 0; } void Convert(char *p, int len) { for(int i=0; i<len; i++) *(p+i) -= '0'; } void AddZero(char *p, int len1, int len2) { for(int i=len1-1; i>=0; i--) *(p+i+(len2-len1)) = *(p+i); for (i=0; i<len2-len1; i++) *(p+i) = 0; }
三、大数相乘
#include <stdio.h> #include <string.h> #define N 100 void Multiply(char , char ); int main() { char a , b ; printf("input:\n"); gets(a); gets(b); printf("result:\n"); Multiply(a, b); return 0; } void Multiply(char a , char b ) { int i, j, k, alen, blen, c[2*N+1]={0}, cflag; alen = strlen(a); blen = strlen(b); for (i=0; i<alen; i++) a[i] -= '0'; for (j=0; j<blen; j++) b[j] -= '0'; for (i=alen-1; i>=0; i--) for (j=blen-1; j>=0; j--) c[i+j+1] = a[i]*b[j]; for (k=1; k<alen+blen+1; k++) { cflag=0; if (c[k]>=10) cflag = c[k]/10; c[k-1] += cflag; c[k] = c[k]; } for (i=0; 1; i++) if (c[i]) break; while(i < alen+blen) printf("%d", c[i++]); printf("\n"); }
相关文章推荐
- 大整数加减运算的C语言实现
- C语言,用数组实现结果为100000位内的大整数幂运算。
- C语言实现整数四则运算表达式的计算
- C语言实现大整数加减运算详解
- 位运算之美——用+,-和位运算实现正整数除法和取模(一)
- 位运算之美——用+,-和位运算实现正整数除法和取模(二)
- C语言:实现N个整数排序,并插入一个整数!
- 链表中每个结点的data域存放一个二进制位。并在此链表上实现对二进制数加1的运算。 用C语言编写 用以存放输入的二进制数 建立 一个带头结点的线性链表
- 大整数四则运算算法与实现(C++)
- 一个简单的四则运算程序C语言实现--实现处理括号
- 自定义大数类,用数组实现任意超大整数的加减乘运算
- java实现一个整数和一个小数的四则运算和求最大值,平均值。
- C语言实现读取输入中最前面的整数
- 发个小程序玩,实现任意长度十进制整数加法。传说中的什么复试C语言题
- linux shell 实现 四则运算(整数及浮点) 简单方法
- C语言字符串转成整数的函数实现
- 大整数的运算实现
- 顺序表的链式结构中用C语言实现单链表的交并差运算
- Linux系统下用C语言实现浮点数四则运算表达式的求值
- 求两个整数的最大公约数的各种算法(C语言实现)