用C语言如何实现大数据的加法,且是包括整数和小数的运算?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用C语言如何实现大数据的加法,且是包括整数和小数的运算?相关的知识,希望对你有一定的参考价值。
刚写的 看看符合你要求不
#include <stdio.h>#include <string.h>
typedef struct
int a[200];
int b[200];
NUM;
void format_num(NUM *n, char *str)
char *p_dot = NULL;
char *p;
int i = 0;
memset(n, 0, sizeof(*n));
for(p = str; *p; p ++)
if(*p == \'.\') break;
if(*p)p_dot = p;
p --;
while(p >= str)
n->a[i++] = *p-- - \'0\';
p = p_dot;
if(p == NULL) return;
i = 0;
p++;
while(*p)
n->b[i++] = *p++ - \'0\';
void print_num(NUM *n)
int i, j;
for(i = sizeof(n->a)/sizeof(n->a[0]) - 1; i>=0; i --)
if(n->a[i]) break;
if(i >= 0)
for(;i>=0; i --)
printf("%d",n->a[i]);
else printf("0");
for(i = sizeof(n->b)/sizeof(n->b[0]) - 1; i>=0; i --)
if(n->b[i]) break;
if(i>=0)
printf(".");
for(j = 0; j <= i; j ++)
printf("%d", n->b[j]);
void add(NUM *a, NUM *b, NUM*c)
int t = 0;
int i;
for(i = sizeof(a->b)/sizeof(a->b[0]) - 1; i>=0; i --)
t += a->b[i] + b->b[i];
c->b[i] = t%10;
t /= 10;
for(i = 0; i < sizeof(a->a)/sizeof(a->a[0]); i ++)
t += a->a[i] + b->a[i];
c->a[i] = t%10;
t /= 10;
int main()
char sa[100], sb[100];
NUM a,b,c;
scanf("%s%s", sa,sb);
format_num(&a, sa);
format_num(&b,sb);
print_num(&a);
printf(" + ");
print_num(&b);
printf(" = ");
add(&a,&b,&c);
print_num(&c);
printf("\\n");
return 0;
参考技术A 用数组或者指针。。
ZZNUOJ_用C语言编写程序实现1153:大整数加法(附完整源码)
题目描述
比利经常会碰到超大整数的加法运算,而普通的计算器上无法进行。因此他想你帮他写一个程序来计算结果。
输入
输入数据有多组。首先输入一个整数T,表示有T组输入。
每组输入有两行,每行一个大整数。每个整数最多1000位。没有负数输入。
输出
对于每组输入,输出两个整数的和,单独占一行。
样例输入
2
1 2
112233445566778899 998877665544332211
样例输出
3
1111111111111111110
完整源码:
#include<stdio.h>
#
以上是关于用C语言如何实现大数据的加法,且是包括整数和小数的运算?的主要内容,如果未能解决你的问题,请参考以下文章