A+B——算法入门(c语言)

第一次写博客,就从最简单的开始吧。
大家最开始学习的应该是“Hello World!”吧?嘛,这个其实就是一条输出语句,所以我们直接从a+b开始。

简单A+B

顾名思义,这真的是最简单的a +b算法,直接上代码吧。

#include
int main()
{
    int a,b;
    while(scanf("%d %d",&a,&b)!=EOF){  //将输入赋值给 a 和 b        
        printf("%d\n",a+b);            //输出 a+b 的结果 
    }
    return 0;
 }

如果 a和b较大,则可以用 long long (%lld)定义,如果还不够用,那么你就应该考虑换一种方式解题了。

复杂A+B

我们以这道题目为原型,此处用到了许多与字符串相关的知识,如整数跟字符串类型的转换,两字符串大小的比较等。

P1601 A+B Problem(高精)

*洛谷

题目背景

题目描述

高精度加法,x相当于a+b problem,[b][color=red]不用考虑负数[/color][/b]

输入输出格式

输入格式:

分两行输入a,b<=10^500

输出格式:

输出只有一行,代表A+B的值

#include
#include
char str1[1002]="",str2[1002]="";   //将两字符串置空(虽然意义不大) 
void reciprocal(char str[])     //将字符串颠倒。例:"12345"变为"54321" 
{
    int len=strlen(str);
    for(int i=0; i<(len+1)/2; i++){   
        char p=str[i];
        str[i]=str[len-i-1];
        str[len-i-1]=p;

    }
}
void add(char str1[], char str2[])
{
    int len1=strlen(str1);
    int len2=strlen(str2);
    int temp,one=0;
    if(strcmp(str1,str2)>=0){   //如果str1比str2大或相等 
        reciprocal(str1);
        reciprocal(str2);
        for(int i=0; i//因为str1比str2大,只进行len2位数的操作 
            temp=str1[i]-'0'+str2[i]-'0'+one;   //temp表示两数字在相同位数上的和再加上前一位的进位(one) 
            one=temp/10;
            temp%=10;
            str1[i]=char(temp+'0');     //此处较懒,直接用str1储存最终结果 
        } 
        while(one!=0) { //注意此处还要考虑str1之后位数的进位情况,如:99999 + 11 
            str1[len2]=char(str1[len2++]-'0'+one+'0');
            one=(str1[len2]-'0'+one)/10;
        }   
    }
    else {
        reciprocal(str1);
        reciprocal(str2);
        for(int i=0; i//同上 
            temp=str2[i]-'0'+str1[i]-'0'+one;
            one=temp/10;
            temp%=10;
            str1[i]=char(temp+'0');
        }
        for(int i=len1; i//与上面while语句功能相似 
            temp=str2[i]-'0'+one;
            one=temp/10;
            temp%=10;
            str1[i]=char(temp+'0');
        }
        if(one!=0) str1[len2]='1';      
    }
    reciprocal(str1);   //将数字换位正常顺序 
}
int main()
{
    scanf("%s",str1);
    scanf("%s",str2);
    add(str1,str2);
    printf("%s\n",str1);        
    return 0;

 } 

你可能感兴趣的:(c语言,洛谷,入门)