15-算法训练 P1103

 
                  算法训练 P1103  
时间限制:1.0s   内存限制:256.0MB
    
  
  编程实现两个复数的运算。设有两个复数 和 ,则他们的运算公式为:

  要求:(1)定义一个结构体类型来描述复数。
  (2)复数之间的加法、减法、乘法和除法分别用不用的函数来实现。
  (3)必须使用结构体指针的方法把函数的计算结果返回。
  说明:用户输入:运算符号(+,-,*,/) a b c d.
  输出:a+bi,输出时不管a,b是小于0或等于0都按该格式输出,输出时a,b都保留两位。

输入:
  - 2.5 3.6 1.5 4.9
输出:
  1.00+-1.30i
 
思路:
首先在java里面用类代替结构体,注意不要用public class, 且将成员变量设置为public便于使用,否则要写set,get函数,很麻烦;
格式输出注意:用system.out.printf()或者String.format()都可以,注意double 是%f 而不是lf.
import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner cin = new Scanner(System.in);
		char fh = cin.next().charAt(0); // 注意这里不用nextLine
		fushu t1 = new fushu();
		t1.shi = cin.nextDouble();
		t1.xu = cin.nextDouble();
		fushu t2 = new fushu();
		t2.shi = cin.nextDouble();
		t2.xu = cin.nextDouble();
		if(fh == '+') {
			t1.add(t2);
		}
		else if(fh == '-'){
			t1.jian(t2);
		}
		else if(fh == '*') {
			t1.chen(t2);
		}
		else {
			t1.chu(t2);
		}
		
//		System.out.println(t1.shi + "+" + t1.xu + "i");
//		System.out.println(String.format("%.2f+%.2fi", t1.shi, t1.xu));
		System.out.printf("%.2f+%.2fi", t1.shi, t1.xu);
	}

}

class fushu{
	public double shi;
	public double xu;
	fushu(){
		
	}
	fushu(double a, double b){
		shi = a;
		xu = b;
	}
	public void jian(fushu b) {
		this.shi -= b.shi;
		this.xu -= b.xu;
	}
	public void add(fushu b) {
		this.shi += b.shi;
		this.xu += b.xu;
	}
	public void chen(fushu b) {
		double shi = this.shi;
		double xu = this.xu;
		this.shi = shi * b.shi - xu * b.xu;
		this.xu = shi * b.xu + xu * b.shi;
	}
	public void chu(fushu b) {
		double shi = this.shi;
		double xu = this.xu;
		this.shi = (shi * b.shi + xu * b.xu) / (b.shi * b.shi + b.xu * b.xu);
		this.xu = (xu * b.shi - shi * b.xu) / (b.shi * b.shi + b.xu * b.xu);
	}
}

  

猜你喜欢

转载自www.cnblogs.com/zhumengdexiaobai/p/10367262.html