#include<stdio.h> int main() { double a,b,c,d; int h1,j1,k1,l1,h2,j2,k2,l2=0; scanf("%.1f%.1f%.1f%.1f"&a,&b,&c,&d); h1=a+c; h2=b+d; j1=a-c; j2=b-d; k1=a*c+b*d; k2=a*d+b*c; l1=((a*c+b*d)/(c*c+d*d)); l2=((b*c-a*d)/(c*c+d*d)); if((h1!=0&&h2!=0) { printf("(%.1f+%.1fi)+(%.1f+%.1fi)=%.1f+%.1fi",a,b,c,d,h1,h2); } else if(h1==0&&h2==0) { printf("(%.1f+%.1fi)+(%.1f+%.1fi)=%.1f",a,b,c,d,0); } if(j1!=0&&j2!=0) { printf("(%.1f+%.1fi)-(%.1f+%.1fi)=%.1f+%.1fi",a,b,c,d,j1,j2); } else if(j1==0&&j2==0) { printf("(%.1f+%.1fi)-(%.1f+%.1fi)=%.1f",a,b,c,d,0); } if(k1!=0&&k2!=0) { printf("(%.1f+%.1fi)*(%.1f+%.1fi)=%.1f+%.1fi",a,b,c,d,k1,k2); } else if(k1==0&&k2==0) { printf("(%.1f+%.1fi)*(%.1f+%.1fi)=%.1f",a,b,c,d,0); } if(l1!=0&&k2!=0) { printf("(%.1f+%.1fi)/(%.1f+%.1fi)=%.1f+%.1fi",a,b,c,d,h1,h2); } else if(l1==0&&k2==0) { printf("(%.1f+%.1fi)/(%.1f+%.1fi)=%.1f",a,b,c,d,0); } return 0; }哪里有问题
时间: 2024-01-10 17:02:49 浏览: 63
#include<stdio.h>
这段代码有一些语法错误和逻辑错误,具体如下:
1. scanf函数的格式字符串应该为"%lf%lf%lf%lf",而不是"%.1f%.1f%.1f%.1f",因为要读取double类型的变量,而不是float类型的变量。此外,scanf函数的第二个参数应该是&a、&b、&c、&d,而不是&a,&b,&c,&d,因为&a,&b,&c,&d是一个整体,不符合scanf函数的要求。
2. 如果条件语句中只有一个表达式,那么这个表达式的前面和后面都需要加上括号。
3. 在第四个if条件语句中,判断l2是否等于0是错误的,应该判断k2是否等于0。
4. 在第四个if条件语句中,应该输出l1而不是h1和h2。
5. 在程序的开头应该加上#include<math.h>,因为程序中用到了数学库中的函数。
修正后的代码如下:
```
#include<stdio.h>
#include<math.h>
int main() {
double a,b,c,d;
int h1,j1,k1,h2,j2,k2,l2=0;
scanf("%lf%lf%lf%lf",&a,&b,&c,&d);
h1=a+c;
h2=b+d;
j1=a-c;
j2=b-d;
k1=a*c+b*d;
k2=a*d-b*c;
l1=((a*c+b*d)/(c*c+d*d));
l2=((b*c-a*d)/(c*c+d*d));
if((h1!=0)&&(h2!=0)) {
printf("(%.1f+%.1fi)+(%.1f+%.1fi)=%.1f+%.1fi",a,b,c,d,h1,h2);
} else if(h1==0&&h2==0) {
printf("(%.1f+%.1fi)+(%.1f+%.1fi)=%.1f",a,b,c,d,0.0);
}
if((j1!=0)&&(j2!=0)) {
printf("(%.1f+%.1fi)-(%.1f+%.1fi)=%.1f+%.1fi",a,b,c,d,j1,j2);
} else if(j1==0&&j2==0) {
printf("(%.1f+%.1fi)-(%.1f+%.1fi)=%.1f",a,b,c,d,0.0);
}
if((k1!=0)&&(k2!=0)) {
printf("(%.1f+%.1fi)*(%.1f+%.1fi)=%.1f+%.1fi",a,b,c,d,k1,k2);
} else if(k1==0&&k2==0) {
printf("(%.1f+%.1fi)*(%.1f+%.1fi)=%.1f",a,b,c,d,0.0);
}
if((l1!=0)&&(k2!=0)) {
printf("(%.1f+%.1fi)/(%.1f+%.1fi)=%.1f+%.1fi",a,b,c,d,l1,l2);
} else if(l1==0&&k2==0) {
printf("(%.1f+%.1fi)/(%.1f+%.1fi)=%.1f",a,b,c,d,0.0);
}
return 0;
}
```
阅读全文