[编程题]A+B
  • 热度指数:11846 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 64M,其他语言128M
  • 算法知识视频讲解
给定两个整数A和B,其表示形式是:从个位开始,每三位数用逗号","隔开。 现在请计算A+B的结果,并以正常形式输出。

输入描述:
输入包含多组数据数据,每组数据占一行,由两个整数A和B组成(-10^9 < A,B < 10^9)。


输出描述:
请计算A+B的结果,并以正常形式输出,每组数据占一行。
示例1

输入

-234,567,890 123,456,789
1,234 2,345,678

输出

-111111101
2346912
#include <stdio.h>
#include<string.h>
int main() {
    char temp;
    char a[100][20]={0};
    int len=0,j=0;
    while(scanf("%c",&temp)!=EOF){
        if(temp=='\n'||temp==' '){len++;j=0;}
        else{
            if(temp==','){}
            else{a[len][j]=temp;j++;}
        }
    }
    int n;
    if(len%2==1){ n=(len+1)/2;}
    else{n=len/2;}
    for(int i=0;i<n;i++){
        int len1=strlen(a[i*2]);
        int len2=strlen(a[i*2+1]);
        if(a[i*2][0]=='-'&&a[i*2+1][0]!='-'){
            int e=1;long value1=0,value2=0;
            for(int t=len1-1;t>0;t--){
                value1-=(int)(a[i*2][t]-'0')*e;
                e*=10;
            }
            e=1;
            for(int t=len2-1;t>=0;t--){
                 value2+=(int)(a[i*2+1][t]-'0')*e;
                e*=10;
            }
            value1=value1+value2;
            printf("%ld\n",value1);
        }
        else if(a[i*2][0]=='-'&&a[i*2+1][0]=='-'){
            int e=1;long value1=0,value2=0;
            for(int t=len1-1;t>0;t--){
                value1-=(int)(a[i*2][t]-'0')*e;
                e*=10;
            }
            e=1;
            for(int t=len2-1;t>0;t--){
                 value2-=(int)(a[i*2+1][t]-'0')*e;
                e*=10;
            }
            value1=value1+value2;
            printf("%ld\n",value1);
        }
        else if(a[i*2][0]!='-'&&a[i*2+1][0]!='-'){
            int e=1;long value1=0,value2=0;
            for(int t=len1-1;t>=0;t--){
                value1+=(int)(a[i*2][t]-'0')*e;
                e*=10;
            }
            e=1;
            for(int t=len2-1;t>=0;t--){
                 value2+=(int)(a[i*2+1][t]-'0')*e;
                e*=10;
            }
            value1=value1+value2;
            printf("%ld\n",value1);
        }
        else if(a[i*2][0]!='-'&&a[i*2+1][0]=='-'){
            int e=1;long value1=0,value2=0;
            for(int t=len1-1;t>=0;t--){
                value1+=(int)(a[i*2][t]-'0')*e;
                e*=10;
            }
            e=1;
            for(int t=len2-1;t>0;t--){
                 value2-=(int)(a[i*2+1][t]-'0')*e;
                e*=10;
            }
            value1=value1+value2;
            printf("%ld\n",value1);
        }
    }
    return 0;
}

发表于 2024-03-03 03:38:22 回复(0)
c语言 long long类型

#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<string.h>
#include<limits.h>


long long func(char *str)
{
    
    int i=0;
    int flag=1;
    long long ans=0;
    int len=strlen(str);
    if(str[0]=='-')
    {
        flag=-1;
        i++;
    }
    char n[1001];
    int k=0;
    for(;i<len;i++)
    {
        if(str[i]!=',')
        {
            n[k]=str[i];
            k++;
        }
    }
    for(int i=0;i<k;i++)
    {
        ans=ans+(n[i]-'0')*pow(10,k-i-1);
    }
    //printf("%lld\n",ans*flag);
    return ans*flag;
}


int main()
{
    char str1[1001];
    char str2[1001];
    while(scanf("%s %s",str1,str2)!=EOF)
    {
        long long x = func(str1);
        long long y = func(str2);
        long long ans=x+y;
        printf("%lld\n",ans);
    }
}


发表于 2022-03-18 15:03:04 回复(0)