1585 - 复数

通过次数

0

提交次数

0

时间限制 : 1 秒 内存限制 : 32 MB

编写一个复数类,有构造函数,能对复数初始化重载加法操作符并按a+bi 的形式输出。

题目输入

输入第一行表示测试用例的个数m,接下来m行每行有4个用空格隔开的整数,分别表示2个复数的实部和虚部。

题目输出

输出m行。按a+bi或者a-bi格式输出,表示两个复数相加的和。

输入/输出样例

输入格式

1
3 4 1 -2

输出格式

4+2i

C语言解答

#include<stdio.h>
int main()
{
	int n,i=0,a,ai,b,bi,c,ci;
	scanf("%d",&n);
	while(i<n)
	{
       scanf("%d%d%d%d",&a,&ai,&b,&bi);
        c=a+b;
		ci=ai+bi;
		printf("%d",c);
		if(ci==0)
			printf("\n");
		else if(ci>0)
			printf("+%di\n",ci);
		else
			printf("%di\n",ci);
		i++;

	}
	return 0;
}

C++解答

#include <cstdio>

int main() {
    //freopen("test.in", "r", stdin);
    //freopen("test.out", "w", stdout);
    int t;
    scanf("%d", &t);
    while (t--) {
        int a1, b1, a2, b2;
        scanf("%d %d %d %d", &a1, &b1, &a2, &b2);
        int a = a1 + a2;
        int b = b1 + b2;
        if (b >= 0)
            printf("%d+%di\n", a, b);
        else
            printf("%d%di\n", a, b);
    }
    return 0;
}

Java解答



import java.util.Scanner;

public class Main {
   private static Scanner s = new Scanner(System.in) ;
   
   public static void main(String[] args) {
	 int n = s.nextInt() ;
	 
	 for (int i = 0; i < n; i++) {
		 int x1 = s.nextInt() ;
		 int y1 = s.nextInt() ;
		 int x2 = s.nextInt() ;
		 int y2 = s.nextInt() ;
		 
		 B a = new B(x1, y1) ;
		 B b = new B(x2, y2) ;
		 System.out.println(B.add(a, b));
	 }
   }
}

class B{
	int a ;
	int b ;
	public B(int a, int b) {
		this.a = a;
		this.b = b;
	}
	public static String add(B a , B b){
		int x = a.a + b.a ;
		int y = b.b + a.b ;
		if(y<0)
			return x+""+y+"i" ;
		else 
			return x+"+"+y+"i" ;
	}
	
	
}