1585 - 复数
时间限制 : 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" ; } }