精华内容
下载资源
问答
  • c语言大数相加

    2014-05-04 11:35:19
    一个运用c语言写的大数相加程序,可以实现大数的四则运算,拥有详尽的代码注释,相信可以帮助很多同学。
  • C语言大数相加

    2019-09-25 17:56:43
    //倒序相加 for ( int i = nMaxlen - 1 ; i >= 0 ; i -- ) { nFinalArry [ i ] + = ( nArry [ i ] + nArry2 [ i ] ) ; //这里考虑了进位加入 if ( nFinalArry [ i ] > 10 ) { ...
    #include "stdafx.h"
    #include<string.h>
    #include<stdlib.h>
    int main(int argc, char* argv[])
    {
     	char chArry[0x20] = {};
    	char chArry2[0x20] = {};
    	int nArry[0x20] = {};//数字数组
    	int nArry2[0x20] = {};
    	printf("输入第一个数字:");
    	scanf("%s", &chArry);
    	printf("输入第二个数字:");
    	scanf("%s", &chArry2);
    	int nFinalArry[0x20] = {};
    	int nLen1 = strlen(chArry);
    	int nLen2 = strlen(chArry2);
    	int nMaxlen = nLen1 > nLen2 ? nLen1 : nLen2;
    	int nDiffer = abs(nLen1 - nLen2);
    	//补零 保证一样长度
    	if (nLen1 == nMaxlen&& nDiffer!= 0)//判断是否需要补
    	{
    		for (size_t i = nMaxlen-1; i >=nDiffer; i--)//nMaxlen-1:去掉\0;= nDiffer:考虑第0个复制;
    		{
    			memcpy(&chArry2[i], &chArry2[i - nDiffer], sizeof(chArry2[i]));//往后面移动
    		}
    		memset(chArry2, '0', nDiffer);//将前面的补为0
    	}
    	else if ((nLen2 == nMaxlen&& nDiffer != 0))
    	{
    		for (size_t i = nMaxlen - 1; i >= nDiffer; i--)
    		{
    			memcpy(&chArry[i], &chArry[i - nDiffer], sizeof(chArry[i]));
    		}
    		memset(chArry, '0', nDiffer);
    	}
    	//转化为数字字符
    	for (size_t i = 0; i < nMaxlen; i++)
    	{
    		nArry[i] = chArry[i] - '0';
    		nArry2[i] = chArry2[i] - '0';
    	}
    	//倒序相加
    	for (int i = nMaxlen-1; i >=0; i--)
    	{
    		nFinalArry[i] += (nArry[i] + nArry2[i]);//这里考虑了进位加入
    		if (nFinalArry[i]>10)
    		{
    			nFinalArry[i] = nFinalArry[i] - 10;
    			nFinalArry[i-1]++;
    		}
    	}
    	printf("结果为:");
    	for (int i = 0; i < nMaxlen; i++)
    	{
    		printf("%d", nFinalArry[i]);
    	}
    	printf("\n");
    	return 0;
    }
    
    
    
    展开全文
  • C语言 大数相加

    千次阅读 2018-04-06 16:39:17
    printf("请分别输入要相加的两个数:\n"); scanf("%s",&a); scanf("%s",&b); a1=strlen(a); b1=strlen(b); M=max(a1,b1); m=min(a1,b1); for(i=M-1;i>M-m-1;i--){ if(b[i]+a[i-M+m]-96>=10){ ...
    #include<stdio.h>
    #include<string.h>
    max(int m,int n){
    	if(m<n) return n;
    	return m;
    }
    min(int m,int n){
    	if(m>n) return n;
    	return m;
    }
    int main(){
    	char a[1001],b[1001],a1,b1,i,M,m;
    	for(;;){
    		printf("请分别输入要相加的两个数:\n"); 
    		scanf("%s",&a);
    		scanf("%s",&b);
    		a1=strlen(a);
    		b1=strlen(b);
    		M=max(a1,b1);
    		m=min(a1,b1);
    		for(i=M-1;i>M-m-1;i--){
    			if(b[i]+a[i-M+m]-96>=10){
    				b[i]=b[i]+a[i-M+m]-10-48;
    				if(i!=0) b[i-1]++;
    				else printf("1");
    			}
    			else{
    				b[i]=b[i]+a[i-M+m]-48;
    			}
    		}
    		printf("%s\n",b);
    	}
    }

    (注意,程序只能计算两个非负数的和)

    展开全文
  • c语言 大数相加

    2014-03-10 11:58:08
    #include"stdio.h" #include"string.h" int maxlen; int an1[100]; int an2[100]; char sz1[100]; char sz2[100]; int Addition( int Maxlen , int an1[] , int an2[] ); int mai
    #include"stdio.h"
    #include"string.h"
        int maxlen;
        int an1[100];
        int an2[100];
        char sz1[100];
        char sz2[100];
        int Addition( int Maxlen , int  an1[] , int  an2[] );
    int main()
    {
        int i,j;
       scanf("%s",sz1);
       scanf("%s",sz2);
       memset(an1,0,sizeof(an1));
       memset(an2,0,sizeof(an2));
       int len1=strlen(sz1);
       int len2=strlen(sz2);
       if(len1>len2) maxlen=len1;maxlen=len2;
       for(j=0,i=strlen(sz2)-1;i>=0;i--)
        an2[j++]=sz2[i]-'0';
        for(j=0,i=strlen(sz1)-1;i>=0;i--)
        an1[j++]=sz1[i]-'0';
         Addition ( maxlen , an1 , an2 ) ;
    
        for( i = 100 ; i >= 0; i -- )
     {
      if( an1[i] != 0 )break;
     }
     for(;i>=0;i--)
      printf("%d" ,an1[i]) ;
     printf("\n") ;
     return 0;
    }
    int Addition( int Maxlen,int an1[] , int an2[] )
    {
     for(inti= 0;i<Maxlen;i++ )
     {
      an1[i]+=an2[i] ;
    
      if(an1[i]>=10 )
      {
       an1[i]-= 10 ;
       an1[i+1]++ ;
      }
     }
     return 0;
    }
    
    
    
    
    
    
    
    
    

    展开全文
  • C语言大数相加实现

    2020-05-02 23:32:57
    由于大数不可存入int数组中,所以将数字转为字符输入char数组中,将两个数组数字从个位开始,模拟正常数字加法,需要进位1时设置进位标志,两数相加大于10时进位,见具体代码。 #include <string.h> #include ...

    主要思路:
    由于大数不可存入int数组中,所以将数字转为字符输入char数组中,将两个数组数字从个位开始,模拟正常数字加法,需要进位1时设置进位标志,两数相加大于10时进位,见具体代码。

    #include <string.h>
    #include <stdio.h>
    
    int main ()
    {
    	char a[100], b[100], c[101];   //创建用于接收两个大数的字符数组以及接收相加后结果的数组,两个100位的大数相加,最多101位
    	int i, j, count = 0, alen, blen, carry = 0, temp; 
    	//i,j为循环标志, count为接收结果的数组的长度, temp为数字每一位相加之后的结果, carry为进位标志,若为进位即为1否则为0 
    	gets(a);
    	gets(b);
    	
    	alen = strlen(a);
    	blen = strlen(b);
    	
    	for (i = alen-1, j = blen-1; i>=0 && j>=0; i--,j--)  //将两个数字从个位逐加,即从数组的最高位加起 
    	{
    		temp = a[i] - '0' + b[j] - '0' + carry;  //模拟每一位相加的过程,将字符转换为数字字符,carry为进位标志 
    		if (temp >= 10){
    			temp = temp - 10;
    			carry = 1;	//每一位相加后大于10即表示有进位 
    		}else{
    			carry = 0;
    		}
    		
    		c[count++] = temp + '0';	//相加后的结果暂时转为字符进行处理 
    	}
    	
    	//当逐位相加,某个数组有剩余时
    	while (i >= 0){
    		temp  = a[i] - '0' + carry;		//此时仍需要加carry的原因是有可能在最后一位相加后需要进位
    		if (temp >= 10){
    			temp = temp - 10;
    			carry = 1;
    		}else {
    			carry = 0;
    		}
    		
    		c[count++] = temp + '0';
    		i--;
    	} 
    	
    	while (j >= 0){
    		temp = b[j] - '0' + carry;
    		if (temp >= 10){
    			temp = temp - 10;
    			carry = 1;
    		}else {
    			carry = 0;
    		}
    		
    		c[count++] = temp + '0';
    		j--;
    	}
    	
    	if (carry){	//若最后还有进位,则使最高位为1 
    		c[count] = 1 + '0';
    	}else {
    		count--;	//由于前一步是count++,count已经自加,由于没有进位,则使count-- 
    	}
    	
    	while (count >= 0){
    		printf ("%c",c[count--]);
    	} 
    	
    	return 0;
     } 
    
    展开全文
  • C语言 大数相加与大数相减

    千次阅读 2015-08-21 20:02:49
    大数相加 大数相减
  • C语言大数相加实现方法分析

    万次阅读 多人点赞 2018-04-16 16:01:36
    使用C语言内置的int,在32位系统下最大只能表示2^31-1,也就是2147483647,想要表示更大的数可以使用字符串。下面是楼主实现字符串数字相加的分析过程:1.首先来个简单的,单个数字字符相加求和inline int addchar...
  • /*------end---------*/ } struct node *addNumber(struct node *A, struct node *B) { //此处实现函数求两数相加,并返回和值链表的表头; /*------begin---------*/ //遍历A与B表 struct node *temp_A = NULL; ...
  • C语言实现大数相加相减和相乘

    千次阅读 2015-12-20 16:42:27
    C语言 大数相加 大数相减 大数相乘
  • 最近的文章已经学习了许多C语言的...和我前一篇文章有点相关,前一篇是大数相加,这次请大家思考这个算法的实现:代码附上(思考动手后再看):#include#includeusing namespace std;int main(){string s1,s2;int ji...
  • C语言实现大数相加

    2019-10-13 16:07:35
    C语言实现大数相加 //利用栈来实现大数相加 #include<stdio.h> #include<stdlib.h> #include<string.h> int main() { char s1[100]; char s2[100]; printf("请分别输入你的s1,s2\n"); gets(s1...
  • C语言处理大数相加

    2019-12-16 20:42:23
    C语言处理大数相加C语言中,当两个数超过长整形即long int的数据上限时,要完成求和,就无法用简单的运算符进行计算,此时要将其用字符串处理。代码如下: #include<stdio.h> #include<string.h>...
  • C语言中的大数相加问题一.为什么会出现大数相加的问题二.大数相加所要掌握的知识三.大数相加的思路四.整理代码五.运行实例 一.为什么会出现大数相加的问题 **C语言是面向过程的一门语言,它并不像java一般拥有众多...
  • c语言实现大数相加

    2019-03-20 18:20:24
    两个大数我们可以用数组来保存,然后在数组中逐位进行相加,再判断该位相加后是否需要进位,为了方便计算,我们将数字的低位放在数组的前面,高位放在后面。 捕获.JPG #include<stdio.h> #include<...
  • C语言大数相加

    千次阅读 2016-04-23 13:46:23
    算法思想:大数使用字符串存储,每一个单元存储操作数的每一位,之后执行位相加。基本思路:字符串反转、字符变数字、位运算、反序输出C语言代码:#include<stdio.h> #include<string.h> #define Max 101 void ...
  • C语言大数相加

    2016-07-06 10:39:18
    #include #include void reverse( char *s ); void AddBigNum( char* s1, char* s2, char* result ); int main() {  char s1[1000];  char s2[1000];  gets(s1);  gets(s2);  char res

空空如也

空空如也

1 2 3 4 5 ... 10
收藏数 198
精华内容 79
关键字:

c语言大数相加

c语言 订阅