【藍橋杯-練習系統】P1103

問題描述

編程實現兩個複數的運算。

  要求:(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


代碼

#include <stdio.h>
struct complex {
	double real;
	double image;
};

complex res;

complex *add(complex a, complex b)
{
	res.real = a.real + b.real;
	res.image = a.image + b.image;
	return &res;
}

complex *sub(complex a, complex b)
{
	res.real = a.real - b.real;
	res.image = a.image - b.image;
	return &res;
}

complex *mul(complex a, complex b)
{
	res.real = a.real * b.real - a.image * b.image;
	res.image = a.real * b.image + a.image * b.real;
	return &res;
}

complex *div(complex a, complex b)
{
	res.real = (a.real * b.real + a.image * b.image) / (b.real * b.real + b.image * b.image);
	res.image = (a.image * b.real - a.real * b.image) / (b.real * b.real + b.image * b.image);
	return &res;
}

void print(complex *a)
{
	printf("%.2lf+%.2lfi\n",a->real,a->image);
}

int main(void)
{
	complex a,b;
	char ch;
	scanf("%c %lf %lf %lf %lf", &ch,&a.real,&a.image,&b.real,&b.image);
	switch(ch)
	{
		case '+': print(add(a,b));break;
		case '-': print(sub(a,b));break;
		case '*': print(mul(a,b));break;
		case '/': print(div(a,b));break;
	}
	
	return 0;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章