C语言实现2个大数相加。

#include<stdio.h>
#include<string.h>
int main()
{
    char s1[100],s2[100];
    int num1[31],num2[31],len1,len2,i,j;
    memset(num1,0,sizeof(num1));
    memset(num2,0,sizeof(num2));
    printf("please int fist number\n");
    scanf("%s",s1);
    printf("please int secound number\n");
    scanf("%s",s2);
    len1=strlen(s1);
    len2=strlen(s2);
    for(i=len1-1,j=0; i>=0 ;i--)
        {
            num1[j]=s1[i]-48;
            j++;
        }
    for(i=len2-1,j=0; i>=0 ;i--)
      {

num2[i]=s2[j]-48;
        j++;
      }
    for(i=0;i<(len2>len1?len2:len1);i++)
       {
           num1[i]+=num2[i];
           if(num1[i]>9)
           {
               num1[i+1]+=1;
               num1[i]-=10;
           }

}
       if(num1[i])
        for(j=i;j>-1;j--)
        printf("%d",num1[j]);
       else for(j=i-1;j>-1;j--)
        printf("%d",num1[j]);

return 0;
}

时间: 2024-10-07 20:35:51

C语言实现2个大数相加。的相关文章

C语言使用栈实现String类型的两个大数相加

要开始找工作了,记录下学习的关于数据结构的应用~~从栈开始~~ 栈和指针的应用~~~ 实现String类型的两个大数相加 主要思想是通过C语言的栈来实现,栈是后进先出的特点,因此很适合做这类计算.建立四个栈,分别按字符串字符先后顺序入栈大数的整数部分和小数部分,然后先计算小数部分的,由于小数部分是高位对齐,因此一直出栈最长小数栈的字符并进入小数结果的栈,小数位数对齐后,两个小数栈出栈进行相加.然后进行整数栈相加,由于整数部分是按低位对齐,因此直接出栈相加即可,将每位相加结果入结果整数栈.比如字符

大数相加也算经典题之一了吧

大数相加 关于C语言大数(有千百位数的)问题,一般都是使用字符串来记录的.这里,将分享一下大数的代码. *分析 *就大数相加而言,首先末位对其,然后换成整数相加在加上进位 *记录进位,并对结果取模换成字符存入 *重复上述过程,直到公共部分加完 *然后把未加完的加进去 代码如下 1 char* BigSum(char *a,char*b)//传入的为两个大数 2 { 3 char* c=(char*)calloc(N+1,sizeof(char));//其中N为宏定义大数的最大位数 4 int l

大数相加—位运算

本文整理了C语言中大数据的相加算法,基于位运算来实现.亲测可用. //100位大数相加 #include <stdio.h> #include <string.h> #define Max 101//有进位101 int bigNumAdd(char a[],char b[],char sum[]) { int i=0; int c=0;//表示进位 //清0 char m[Max]={0}; char n[Max]={0}; memset(sum,0,101); //字符串反转且

java-两个大数相加

题目要求:用字符串模拟两个大数相加. 一.使用BigInteger类.BigDecimal类 public static void main(String[] args) { String a="8888899999999888";  String b="88888888888888";  String str=new BigInteger(a).add(new BigInteger(b)).toString();  System.out.println(str);

高精度问题之大数相加(原来就是用字符串相加,模拟手算这么简单!)

解题心的: 就是基本的一对一模拟手算..借助c++的string 不用逆序运算了.很方便的补0.  最后处理下前导0的问题. #include <iostream> #include <string> using namespace std; // 实现大数相加 结果存放在num中 void bigIntergerAdd(string &num, string add) { int goBit = 0; // 存放进位 // 先交换下顺序 加数的位数要比较少 if (num

HDU 1047 Integer Inquiry 大数相加 string解法

本题就是大数相加,题目都不用看了. 不过注意的就是HDU的肯爹输出,好几次presentation error了. 还有个特殊情况,就是会有空数据的输入case. #include <stdio.h> #include <vector> #include <string.h> #include <algorithm> #include <iostream> #include <string> #include <limits.h

模板,大数相加

char a[Max],b[Max],c[Max],sum[Max]; void jia(char str1[],char str2[]) { int i,j,k,z; k=0;z=0; for(i=strlen(str1)-1,j=strlen(str2)-1;i>=0||j>=0;i--,j--) //核心,加法以及进位 { if(i>=0) z+=str1[i]-'0'; if(j>=0) z+=str2[j]-'0'; c[k++]=z%10+'0'; z=z/10; }

两个大数相加 ----Javascrit 实现

(function(){ var addLarge = function(n1,n2){ var over = 0; var ret = ""; var len = Math.min(n1.length,n2.length); var sln1 = n1.substr(n1.length - len,n1.length ); var sln2 = n2.substr(n2.length - len,n2.length ); for(var i = len;i > 0; i--)

hdu acm-1047 Integer Inquiry(大数相加)

Integer Inquiry Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 11678    Accepted Submission(s): 2936 Problem Description One of the first users of BIT's new supercomputer was Chip Diller. He ex