01/10/2018, 10:14
Nhờ xem giúp code bài tập C cơ bản
Em mới học lập trình nên anh chị cho em hỏi một số vấn đề này với ạ!
Cách em làm như thế này đúng không ạ! Em sợ suy nghĩ của mình sai.
Bài 1: Tìm số lớn nhất trong ba số
Bài em làm
#include <stdio.h>
#include <stdlib.h>
int main()
{
printf_s("====== Bai tap so sanh 3 so nguyen ======
");
int a, b, c;
printf_s("Nhap so thu nhat: ");
scanf_s("%d", &a);
printf_s("Nhap so thu hai: ");
scanf_s("%d", &b);
printf_s("Nhap so thu ba: ");
scanf_s("%d", &c);
printf_s("================ Ket qua ================
");
if (a > b && a > c) {
printf_s("%d la so lon nhat
", a);
}
else if (b > c)
{
printf_s("%d la so lon nhat
", b);
}
else {
printf_s("%d la so lon nhat
", c);
}
system("pause");
return 0;
}
Bài mẫu
#include <stdio.h>
int main() {
int a, b, c;
a = 11;
b = 22;
c = 33;
if ( a > b && a > c )
printf("%d la so lon nhat.", a);
else if ( b > a && b > c )
printf("%d la so lon nhat.", b);
else if ( c > a && c > b )
printf("%d la so lon nhat.", c);
else
printf("Gia tri cua cac so la khong duy nhat");
return 0;
}
Bài 2: Giải phương trình bậc 2
Bài em làm
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
printf_s("====== Giai phuong trinh bac 2 ======
");
double a, b, c, x1, x2, delta;
printf_s("Moi ban nhap a: ");
scanf_s("%lf", &a);
printf_s("Moi ban nhap b: ");
scanf_s("%lf", &b);
printf_s("Moi ban nhap c: ");
scanf_s("%lf", &c);
delta = b*b - 4 * a * c;
if (delta < 0) {
printf_s("Phuong trinh vo nghiem!
");
}
else if (a == 0 && b == 0)
{
printf_s("Phuong trinh vo so nghiem!
");
}
else if (delta == 0)
{
x1 = x2 = -b / 2 * a;
printf_s("Phuong trinh co nghiem kep la %lf
", x1);
}
else
{
x1 = (-b + sqrt(delta)) / (2 * a);
x2 = (-b - sqrt(delta)) / (2 * a);
printf_s("Phuong trinh co 2 nghiem phan biet: x1 = %lf va x2 = %lf
", x1, x2);
}
system("pause");
return 0;
}
Bài mẫu
#include<math.h>
#include<conio.h>
#include<stdio.h>
#include<string.h>
main()
{
float a,b,c,d;
printf("Nhap vao 3 so a, b, c: ");
scanf("%f%f%f",&a,&b,&c);
if(a==0)
{
if(b==0)
{
if(c==0)
printf("Phuong trinh co vo so nghiem!");
else
printf("Phuong trinh vo nghiem!");
}
else
printf("Phuong trinh co nghiem duy nhat la: %f",-c/b);
}
else
{
d=b*b-4*a*c;
if (d<0)
printf("Phuong trinh vo nghiem!!!");
else if (d==0)
printf("Phuong trinh co nghiem kep la: %f",-b/(2*a));
else
printf("Phuong trinh co 2 nghiem phan biet la: %f,%f",(-b+sqrt(d))/(2*a),(-b-sqrt(d))/(2*a));
}
}
Mong anh chị giúp đỡ. Em xin cảm ơn ạ. Nếu sai chỗ nào anh chị góp ý giúp em với nhé. Kết quả thì vẫn giống như bài mẫu nhưng em sợ cách làm sai.
Bài liên quan
Bài 1 chưa đúng hết các trường hợp. 4 3 4 thì sao? 4 4 4 thì sao?
Bài 2 vấn đề tương tự nhập vào là 0 0 0 thì sao? Và
có nghĩa là 0x^2 + 0x + c = 0 thì sẽ có vô số nghiệm? Đúng không nhỉ?
Em thấy trên công thức có trường hợp vô số nghiệm. Nên e mới thắc mắc là sao bài khác có VSN ý.
Nếu a == 0 && b == 0 thì cũng phải xét thêm c xem nó thế nào mới biết vô số hay là vô không số
Bài 1: Max = a rồi so sánh với b và c, tương tự, Min = a, rồi so sanh b và c bạn
Bài 2: trường hợp a == 0 và b == 0 chưa chính xác, trường hợp vô số nghiệm dường như không xảy ra đâu bạn, vì chả ai cho 3 hệ sô a = 0 b = 0 và c = 0 cả.!
Cho nên điều kiện bình thường phải xét a = 0 và a != 0
Lần sau nếu muốn kiểm tra thì tự mình kiểm tra bằng cách nghĩ ra tất cả các trường hợp có thể và 1 số trường hợp đặc biệt: các cận của biến, trường hợp chia 0, bị số âm (tuỳ bài) rồi sinh input.
Bài 1: Vì có ba số thôi nên bạn so sánh từng cặp số, gán max = a rồi ss với b, nếu b lớn hơn hoặc bằng a thì gán max = b, sau đó ss với c tương tự rồi xuất max ra là số lớn nhất.
Bài 2: Mình bày cho, thuật toán của các dạng bài giải phương trình là bài toán giải và biện luận phương trình trong toán học, bạn thiếu trường hợp a=0,b=0,c#0 vô nghiệm; a=0,b=0,c=0 vô số nghiệm; a=0,b#0 phương trình bậc nhất x=-c/b; a#0,b#0 giải pt bậc hai.
Dạ em cảm ơn anh nhé.