7-4 复数的二次运算(15 分)(用 c 写,指定思路和答案) - 如果结果的实部或虚部为 0,则不输出。如果结果为 0,则输出 0.0。
最编程
2024-03-27 15:58:29
...
输入样例1:
2 3.08 -2.04 5.06
输出样例1:
(2.0+3.1i) + (-2.0+5.1i) = 8.1i
(2.0+3.1i) - (-2.0+5.1i) = 4.0-2.0i
(2.0+3.1i) * (-2.0+5.1i) = -19.7+3.8i
(2.0+3.1i) / (-2.0+5.1i) = 0.4-0.6i
输入样例2:
1 1 -1 -1.01
输出样例2:
(1.0+1.0i) + (-1.0-1.0i) = 0.0
(1.0+1.0i) - (-1.0-1.0i) = 2.0+2.0i
(1.0+1.0i) * (-1.0-1.0i) = -2.0i
(1.0+1.0i) / (-1.0-1.0i) = -1.0
我的思路当看到要求输出这么多个±就应该考虑如何正确的输出+和-号,要保证他们不会同时出现或者不出现
1)如果用if判断那就太麻烦了,会累死
2)就考虑到只需要判断虚部的正负就可以啦
当虚部为正时输出+
而未负时啥都不输出,因为负号就相当于减号了
题目中还有这样一个要求,如果结果的实部或者虚部为0,则不输出。如果结果为0,则输出0.0。
这也是关键的,而前面的输入块不需要考虑而后面的结果块才需要考虑
所以就要分两个打印函数啦,一个负责打印你输入的东西
另一个就负责打印你输出的东西
题目没有要求输入多组数据,这也是这题简单的原因啦
符号直接printf就可以了
我的ac代码:
#include<stdio.h>
#include<math.h>
void print(double a1,double a2)
{
if(a2<0) printf("(%.1lf%.1lfi)",a1,a2);
else printf("(%.1lf+%.1lfi)",a1,a2);
}
//负责打印输入的东西
void printcj(double c1,double c2)
{
if(c2<=0.05&&c2>=-0.05)
printf("%.1lf",c1);
else if(c1<=0.05&&c1>=-0.05)
printf("%.1lfi",c2);
else if(c2<0) printf("%.1lf%.1lfi",c1,c2);
else printf("%.1lf+%.1lfi",c1,c2);
printf("\n");
}
//负责输出结果
struct complex {
double a;
double b;
};
//定义结构体变量,表示复数的实部和虚部
int main()
{
struct complex x1,x2;
scanf("%lf %lf %lf %lf",&x1.a,&x1.b,&x2.a,&x2.b);
//输入,结构体变量的输入也不能忘了&哦
//加法
double sumx = x1.a+x2.a;
double sumy = x1.b+x2.b;
//减法
double delx = x1.a-x2.a;
double dely = x1.b-x2.b;
//乘法
double multiply_x = x1.a*x2.a-x1.b*x2.b;
double multiply_y = x1.b*x2.a+x1.a*x2.b;
//除法
double divx = (x1.a*x2.a+x1.b*x2.b)/(x2.a*x2.a+x2.b*x2.b);
double divy = (x1.b*x2.a-x1.a*x2.b)/(x2.a*x2.a+x2.b*x2.b);
//复数的计算忘记公式的可以百度
//下面你就会发现我是直接输出计算符号的,因为只需要输出一次就好了
print(x1.a,x1.b);//输出输入的数字
printf(" + ");
print(x2.a,x2.b);//输出输入的数字
printf(" = ");
printcj(sumx,sumy);//输入结构,函数内判断了是否有可能-0.0
//以下与上相同
print(x1.a,x1.b);
printf(" - ");
print(x2.a,x2.b);
printf(" = ");
printcj(delx,dely);
print(x1.a,x1.b);
printf(" * ");
print(x2.a,x2.b);
printf(" = ");
printcj(multiply_x,multiply_y);
print(x1.a,x1.b);
printf(" / ");
print(x2.a,x2.b);
printf(" = ");
printcj(divx,divy);
return 0;
}
下一篇: C++ 复数计算器的简单实现