复数1

/*  
* 文件名称:复数.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;
}

二、运行结果



问题:为什么会出现这样的情况?怎么改进代码,选择语句太耗时了

猜你喜欢

转载自blog.csdn.net/jtys2016/article/details/78691880