m0_66365554 2022-02-21 17:01 采纳率: 0%
浏览 251

湖北民院oj复数的和

Problem Description
计算两个复数之和。
Input Description
在两行中分别输入两个复数a+bi,a和b均为正整数。
Output Description
在一行中输出两个复数的和。
Sample Input
1+2i
3+4i
Sample Output
(1+2i)+(3+4i)=4+6i

  • 写回答

1条回答 默认 最新

  • 关注

    写个复数类,一个实数,一个虚数,做个+重载就可以了。或者直接读取4个数分别计算也行。

    img

    代码如下:

    #include <stdio.h>
    
    void trans(char* s,int* a,int* b,char* ch)
    {
        int i=0;
        
        //计算a1
        *a=0;
        *b=0;
        while(s[i]>='0'&&s[i]<='9')
        {
            *a = *a*10 + s[i]-'0';
            i++;
        }
        //过滤空格
        while(s[i]==' ') i++;
        *ch = s[i];
        i++;
        //过滤空格
        while(s[i]==' ') i++;
        //计算b
        
        while(s[i]>='0'&&s[i]<='9')
        {
            *b = *b*10 + s[i]-'0';
            i++;
        }
    }
    
    
    
    int main()
    {
        char s1[20],s2[20];
        int a1,a2,b1,b2;
        int c,d;
        char ch1='+',ch2='+';
        
        scanf("%s",s1);
        scanf("%s",s2);
        
        trans(s1,&a1,&b1,&ch1);
        trans(s2,&a2,&b2,&ch2);
    
        
    
        if(ch1=='-')
            b1 = -b1;
        if(ch2=='-')
            b2 = -b2;
    
        c = a1+a2;
        d = b1+b2;
    
    
        if(d>0)
            printf("(%d%c%di)+(%d%c%di)=%d+%di",a1,ch1,b1,a2,ch2,b2,c,d);
        else if(d==0)
            printf("(%d%c%di)+(%d%c%di)=%d",a1,ch1,b1,a2,ch2,b2,c);
        else
            printf("(%d%c%di)+(%d%c%di)=%d%di",a1,ch1,b1,a2,ch2,b2,c,d);
        return 0;
    }
    
    
    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 2月21日