Mình chỉ thay đổi cách thức ở lệnh printf cuối hai đoạn code mà không thay đổi gì ở biểu thức nhưng khi chạy kết quả lại có sự khác biệt về giá trị, mình nhập giá trị lần lượt là 2 4 6
Gán cho biến rồi mới đưa vào printf
#include <stdio.h>
#include <math.h>
int main()
{
float a, b, c, d, r1, r2;
printf("Nhap he so a:");scanf("%f",&a);
printf("Nhap he so b:");scanf("%f",&b);
printf("Nhap he so c:");scanf("%f",&c);
if (a==0)
{
printf("\nPhuong trinh co bac la 1\n");
if (b!=0)
printf("Co mot nghiem: %.2f\n", -c/b);
else
if (c==0)
printf("Co vo so nghiem\n");
else
printf("Vo nghiem\n");
}
else
{
printf("\nPhuong trinh co bac la 2\n");
d = b*b-4*a*c;
if (d=0)
printf("Co nghiem kep: %f",-b/2*a);
else if (d>0)
printf("Co 2 nghiem thuc: %f va %f", -b+sqrt(d)/2*a, -b-sqrt(d)/2*a);
else
r1 = -b/(2*a);
r2 = sqrt(-d)/(2*a);
printf("Co 2 nghiem phuc: %.0f + %.1fi and %.0f - %.1fi", r1, r2, r1, r2);
}
}
Không dùng biến, tính trực tiếp trong printf:
#include <stdio.h>
#include <math.h>
int main()
{
float a, b, c, d;
printf("Nhap he so a:");scanf("%f",&a);
printf("Nhap he so b:");scanf("%f",&b);
printf("Nhap he so c:");scanf("%f",&c);
if (a==0)
{
printf("\nPhuong trinh co bac la 1\n");
if (b!=0)
printf("Co mot nghiem: %.2f\n", -c/b);
else
if (c==0)
printf("Co vo so nghiem\n");
else
printf("Vo nghiem\n");
}
else
{
printf("\nPhuong trinh co bac la 2\n");
d = b*b-4*a*c;
if (d=0)
printf("Co nghiem kep: %f",-b/2*a);
else if (d>0)
printf("Co 2 nghiem thuc: %f va %f", -b+sqrt(d)/2*a, -b-sqrt(d)/2*a);
else
printf("Co 2 nghiem phuc: %.0f + %.1fi and %.0f - %.1fi", -b/(2*a), sqrt(-d)/(2*a), -b/(2*a), sqrt(-d)/(2*a));
}
}
nghiệm phức nhưng không có phần ảo, tính kiểu nào cũng ra cả phần nghiệm phức.
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?