zoukankan      html  css  js  c++  java
  • 大数相加

    基本思路:字符串反转、字符变数字、位运算、反序输出

    #include<stdio.h>
    #include<string.h>
    #define Max 101
    void print(char sum[]);
    void bigNumAdd(char a[],char b[],char sum[]);
    int main()
    {
    	char a[Max];
    	char b[Max];
    	char sum[Max];
    	gets(a);
    	gets(b);
    	bigNumAdd(a,b,sum);
    	print(sum);
    	return 0;
    }
     
    void bigNumAdd(char a[],char b[],char sum[])
    {
    	int i=0;
    	int c=0;//表示进位
              //初始化,对以后位运算有很大帮助!
    	char m[Max]={0};
    	char n[Max]={0};
    	memset(sum,0,Max*sizeof(char)); //这里不能写成memset(sum,0,sizeof(sum));原因见注意事项1
    	//字符串反转且字符串变数字
    	int lenA=strlen(a);
    	int lenB=strlen(b);
    	for (i=0;i<lenA;i++)
    	{
    		m[i]=a[lenA-i-1]-'0';
    	}
    	for (i=0;i<lenB;i++)
    	{
    		n[i]=b[lenB-i-1]-'0';
    	}
    	//位运算
    	for (i=0;i<lenA||i<lenB;i++)
    	{
    		sum[i]=(m[i]+n[i]+c)%10+'0';//得到末位
    		c=(m[i]+n[i]+c)/10;//得到进位
    	}
    }
     
    void print(char sum[])
    {
    	int i=0;
    	int j=0;
    	printf("%s
    ",sum);
    	int len = strlen(sum);
    	for (i=len-1;sum[i]=='';i--); //找到第一个不为零的位置,方便输出
    	for (j=i;j>=0;j--)
    	{
    		printf("%c",sum[j]);
    	}
    }
    
    运行结果:

    huangcheng@ubuntu:~$ ./a.out
    1234567
    12345673
    13580240

  • 相关阅读:
    typeof与instanceof
    TCP与UDP的区别
    const、let、var关键字
    基本通用的使用jdbc文件java代码连接数据库
    HTML知识点01
    ADO.NET基础02
    ADO.NET基础03
    数据库语法01
    数据库语法02
    Ubuntu16.4 内核降级
  • 原文地址:https://www.cnblogs.com/hehehaha/p/6332428.html
Copyright © 2011-2022 走看看