首页 > 其他 > 详细

Linux C一站式学习习题答案7.2.1

时间:2014-02-27 00:53:55      阅读:515      评论:0      收藏:0      [点我收藏+]

1、在本节的基础上实现一个打印复数的函数,打印的格式是x+yi,如果实部或虚部为0则省略,例如:1.0、-2.0i、-1.0+2.0i、1.0-2.0i。最后编写一个main函数测试本节的所有代码。想一想这个打印函数应该属于上图中的哪一层?

a.打印函数

#include<stdio.h>

int structa ( double x,double y )
{
    	if ( y==0 )
		printf ( "%.1f\n",x );
	else 
	{
		if (x==0)
			printf ("%.1fi\n",y);
		else
		{
			if ( y>0 )
				printf ("%.1f+%.1fi\n",x,y);
			if ( y<0 )
				printf ("%.1f%.1fi\n",x,y);
		}
	}
	return 0;
}


int main (  )
{
	double x,y;
	printf ("请输入复数的实部和虚部:");
	scanf ("%lf %lf",&x,&y);
	structa ( x,y );
	return 0;
}

b.验证函数

#include<stdio.h>
#include<math.h>


double x,y,x1,x2,yy,y2;
struct complex_struct { double x, y; } z,z1,z2;


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));
}

struct complex_struct sub_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));
}

struct complex_struct mul_complex(struct complex_struct z1, struct complex_struct z2)

{
	return make_from_mag_ang(magnitude(z1) * magnitude(z2), angle(z1) + angle(z2));
}

struct complex_struct div_complex(struct complex_struct z1, struct complex_struct z2)

{
	return make_from_mag_ang(magnitude(z1) / magnitude(z2), angle(z1) - angle(z2));
}

int struct_P ( struct complex_struct z )
{
	if ( z.y==0 )
		printf ( "%.1f\n",z.x );
	else 
	{
		if (z.x==0)
			printf ("%.1fi\n",z.y);
		else
		{
			if ( z.y>0 )
				printf ("%.1f+%.1fi\n",z.x,z.y);
			if ( z.y<0 )
				printf ("%.1f%.1fi\n",z.x,z.y);
		}
	}
	return 0;
}

int main (  )
{
	printf ("please enter the parameters of complex:");
	scanf ("%lf%lf%lf%lf",&x1,&yy,&x2,&y2);
	//struct complex_struct z ;
	z1.x = x1;
	z1.y = yy;
	z2.x = x2;
	z2.y = y2;
	printf ( "z1=" );
	struct_P ( z1 );
	printf ( "z2=" );
	struct_P ( z2 );
	printf ( "z1+z2=" );
	z = add_complex( z1,z2 );
	struct_P ( z );
	printf ( "z1-z2=" );
	z = sub_complex( z1,z2 );
	struct_P ( z );
	printf ( "z1*z2=" );
	z = mul_complex( z1,z2 );
	struct_P ( z );
	printf ( "z1/z2=" );
	z = div_complex( z1,z2 );
	struct_P ( z );
	return 0;
}



Linux C一站式学习习题答案7.2.1,布布扣,bubuko.com

Linux C一站式学习习题答案7.2.1

原文:http://blog.csdn.net/whorus1/article/details/19932901

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!