/*
* 文件名称:复数.cpp
* 作 者:王素雨
* 完成日期:2017 年 12 月1日
* 版 本 号:v1.0
* 对任务及求解方法的描述部分: 无
* 输入描述:无
* 问题描述:无
* 程序输出: 无
* 问题分析:略
* 算法设计:略
*/
#include <stdio.h>
#include <math.h>
struct complex_struct{
double x,y;
};
double real_part(struct complex_struct z)
{
return z.x;
}
double img_part(struct complex_struct z)
{
return z.y;
}
double magnitude(struct complex_struct z)
{
return sqrt(z.x*z.x+z.y*z.y);
}
double angle(struct complex_struct z)
{
return atan2(z.y,z.x);
}
struct complex_struct make_from_real_img(double x,double y)
{
struct complex_struct z;
z.x=x;
z.y=y;
return z;
}
struct complex_struct make_from_mag_ang(double r,double A)
{
struct complex_struct z;
z.x=r*cos(A);
z.y=r*sin(A);
return z;
}
struct complex_struct add_complex(struct complex_struct z1,struct complex_struct z2)
{
return make_from_real_img(real_part(z1)+real_part(z2),img_part(z1)+img_part(z2));
}
int main(void)
{
struct complex_struct z1,z2,z;
printf("请分别输入z1的实部与虚部:");
scanf("%f%f",&z1.x,&z1.y);
printf("请分别输入z2的实部与虚部:");
scanf("%f%f",&z2.x,&z2.y);
z=add_complex(z1,z2);
if(z.x==0&&z.y!=0){
printf("z=%fi",z.y);
}
if(z.y==0&&z.x!=0){
printf("z=%f",z.x);
}
if(z.x==0&&z.y==0){
printf("z=0");
}
if(z.x!=0&&z.y!=0){
printf("z=%f+%fi",z.x,z.y);
}
return 0;
}
二、运行结果
问题:为什么会出现这样的情况?怎么改进代码,选择语句太耗时了