You are on page 1of 8

Câu hỏi Từ những cấu trúc đã được xây dựng ở bài 3, với đầu vào là 2 struct Circle, chương

, chương trình yêu cầu viết hàm kiểm tra


1 xem 2 đường tròn đó có cắt nhau tại 2 điểm hay không. Nếu cắt nhau tại 2 điểm, trả về giá trị 1, ngược lại 0.
Đúng một phần int checkPosition(Circle c1, Circle c2){
Điểm 0,80 của
//TO DO
1,00
}

For example:

Input Result

1 1 2 Hai duong tron cat nhau tai 2 diem


3 4 3

1 1 2 Hai duong tron khong cat nhau tai 2 diem


4 4 2

Answer: (penalty regime: 0 %)


1 ▼ int checkPosition(Circle c1, Circle c2){
2
3 double d = sqrt(pow(c2.center.x - c1.center.x, 2) + pow(c2.center.y - c1.center.y, 2))
4
5 if (d > c1.radius + c2.radius || d < fabs(c1.radius - c2.radius))
6 return 0;
7 else
8 return 1;
9 }

Input Expected Got

 1 1 2 Hai duong tron cat nhau tai 2 diem Hai duong tron cat nhau tai 2 diem 
3 4 3

 1 1 2 Hai duong tron khong cat nhau tai 2 diem Hai duong tron khong cat nhau tai 2 diem 
4 4 2

 1 1 1 Hai duong tron cat nhau tai 2 diem Hai duong tron cat nhau tai 2 diem 
2 2 2

 0 0 5 Hai duong tron khong cat nhau tai 2 diem Hai duong tron khong cat nhau tai 2 diem 
6 6 3

Your code failed one or more hidden tests.

Đúng một phần


Điểm cho bài nộp này: 0,80/1,00.
Câu hỏi Ta xây dựng 1 struct để quản lý thông tin sinh viên như sau:
2 struct student{
Chính xác
char id[5];
Điểm 1,00 của
1,00 char name[100];

char sex;

int height;
}

File đầu vào gồm 1 mảng struct student có 2 phần tử:

SV01 Nhuan M 180

SV02 Nhi F 160

Chương trình yêu cầu in ra thông tin sinh viên theo format:
"<id> <name> <sex> <height>"

Trong đó <id> có độ rộng là 6 và căn lề trái

<name> có độ rộng là 12 và căn lề phải

<sex> có độ rộng là 3, căn phải

<height> có độ rộng là 5, căn phải


Output:

SV01 Nhuan M 180

SV02 Nhi F 160 // xuống dòng

Copy đoạn sau vào box Answer và viết phát biểu vào phần //TO DO

void printInfo(Student students[]){


//TO DO
}

For example:

Input Result

SV01 Nhuan M 180 SV01 Nhuan M 180


SV02 Nhi F 160 SV02 Nhi F 160

Answer: (penalty regime: 0 %)


1 ▼ void printInfo(Student students[]){
2 ▼ for(int i = 0; i < 2; i++){
3 printf("%-*s %*s %*c %*d\n", 6, students[i].id, 12, students[i].name, 3, students[
4 }
5 }
6
7
8
9
Input Expected Got

 SV01 Nhuan M 180 SV01 Nhuan M 180 SV01 Nhuan M 180 


SV02 Nhi F 160 SV02 Nhi F 160 SV02 Nhi F 160

 IT1 Thu F 160 IT1 Thu F 160 IT1 Thu F 160 


IT2 Feed M 170 IT2 Feed M 170 IT2 Feed M 170

 HT01 Thy F 165 HT01 Thy F 165 HT01 Thy F 165 


HT02 Ty F 165 HT02 Ty F 165 HT02 Ty F 165

 1910 Thao F 170 1910 Thao F 170 1910 Thao F 170 


1911 Thien M 180 1911 Thien M 180 1911 Thien M 180

Passed all tests! 

Chính xác
Điểm cho bài nộp này: 1,00/1,00.
Câu hỏi Giả sử ta có struct student như sau:
3 struct student{
Chính xác
char id[5];
Điểm 1,00 của
char name[10];
1,00
int ly;

int hoa;

File đầu vào gồm:

Dòng 1 là số lượng sinh viên


Mỗi dòng tiếp theo là thông tin của 1 sinh viên

Chương trình yêu cầu xây dựng 1 giao diện console quản lý sinh viên có format:

Tiêu đề:

ID_ _ _ _ ‘ ‘Name_ _ _ _’ ‘_ _Ly’ ‘_ _Hoa

In ra thông tin của sinh viên theo format của tiêu đề (được cung cấp dưới đây)

Đồng thời tính điểm trung bình từng môn của các sinh viên (lấy 2 chữ số thập phân)

ID Name Ly Hoa

SV01 Thinh 10 8
SV02 Tuyen 9 9

Diem trung binh mon ly: 9.50

Diem trung binh mon hoa: 8.50 // xuống dòng

Copy đoạn dưới đây và viết phát biểu vào //TO DO

void printInfo(Student students[], int n){


printf("%-7s %10s %5s %5s\n","id","name","ly","hoa");
//TO DO
}

For example:

Input Result

2 id name ly hoa
SV01 Thinh 10 8 SV01 Thinh 10 8
SV02 Tuyen 9 9 SV02 Tuyen 9 9
Diem trung binh mon ly: 9.50
Diem trung binh mon ly: 8.50

Answer: (penalty regime: 0 %)


1 ▼ void printInfo(Student students[], int n){
2 printf("%-7s %10s %5s %5s\n","id","name","ly","hoa");
3 float avg_ly = 0, avg_hoa = 0;
4 ▼ for(int i = 0; i < n; i++){
5 printf("%-7s %10s %5d %5d\n", students[i].id, students[i].name, students[i].ly, s
6 avg_ly += students[i].ly;
7 avg_hoa += students[i].hoa;
8 }
9 avg_ly /= n;
10 avg_hoa /= n;
11 printf("Diem trung binh mon ly: %.2f\n", avg_ly);
12 printf("Diem trung binh mon ly: %.2f\n", avg_hoa);
13 }
Input Expected Got

 2 id name ly hoa id name ly hoa 


SV01 Thinh 10 8 SV01 Thinh 10 8 SV01 Thinh 10 8
SV02 Tuyen 9 9 SV02 Tuyen 9 9 SV02 Tuyen 9 9
Diem trung binh mon ly: 9.50 Diem trung binh mon ly: 9.50
Diem trung binh mon ly: 8.50 Diem trung binh mon ly: 8.50

 3 id name ly hoa id name ly hoa 


SV01 Tuan 10 10 SV01 Tuan 10 10 SV01 Tuan 10 10
SV02 Hung 10 10 SV02 Hung 10 10 SV02 Hung 10 10
SV03 Lam 10 10 SV03 Lam 10 10 SV03 Lam 10 10
Diem trung binh mon ly: 10.00 Diem trung binh mon ly: 10.00
Diem trung binh mon ly: 10.00 Diem trung binh mon ly: 10.00

 1 id name ly hoa id name ly hoa 


SV01 Thinh 8 7 SV01 Thinh 8 7 SV01 Thinh 8 7
Diem trung binh mon ly: 8.00 Diem trung binh mon ly: 8.00
Diem trung binh mon ly: 7.00 Diem trung binh mon ly: 7.00

 2 id name ly hoa id name ly hoa 


IT01 Dang 8 9 IT01 Dang 8 9 IT01 Dang 8 9
IT02 Yen 7 8 IT02 Yen 7 8 IT02 Yen 7 8
Diem trung binh mon ly: 7.50 Diem trung binh mon ly: 7.50
Diem trung binh mon ly: 8.50 Diem trung binh mon ly: 8.50

Passed all tests! 

Chính xác
Điểm cho bài nộp này: 1,00/1,00.
Câu hỏi Cho struct Point để quản lý các điểm trong hệ trục tọa độ Oxy như sau:
4 typedef struct sPoint{
Chính xác
int x;
Điểm 1,00 của
int y;
1,00
} Point;

Đầu vào gồm 3 dòng, mỗi dòng là 1 đỉnh của tam giác. Yêu cầu viết hàm trả về diện tích của 3 tam giác đó (kiểu
double), lấy 2 chữ số thập phân.

Gợi ý công thức tính diện tích tam giác

Với p là nửa chu vi,

a,b,c: các cạnh của tam giác

Copy đoạn sau và phát biểu vào //TO DO


double area(Point a, Point b, Point c){

//TO DO

For example:

Input Result

1 1 1.00
1 2
3 1

Answer: (penalty regime: 0 %)


1 ▼ double area(Point a, Point b, Point c){
2
3 double side1 = sqrt(pow(a.x - b.x, 2) + pow(a.y - b.y, 2));
4
5 double side2 = sqrt(pow(b.x - c.x, 2) + pow(b.y - c.y, 2));
6
7 double side3 = sqrt(pow(c.x - a.x, 2) + pow(c.y - a.y, 2));
8
9 double semiPerimeter = (side1 + side2 + side3) / 2;
10
11 double area = sqrt(semiPerimeter * (semiPerimeter - side1) * (semiPerimeter - side2)
12
13 return area;
14 }

Input Expected Got

 1 1 1.00 1.00 
1 2
3 1
Input Expected Got

 0 0 0.50 0.50 
0 1
1 0

 1 10 4.50 4.50 
4 4
3 3

 1 5 14.00 14.00 
4 6
3 15

Passed all tests! 

Chính xác
Điểm cho bài nộp này: 1,00/1,00.
Câu hỏi Giả sử struct Point dùng để biểu diễn 1 điểm trong Oxy
5 typedef struct sPoint{
Chính xác
int x;
Điểm 1,00 của
int y;
1,00
} Point;

struct Circle có 1 trường dữ liệu struct Point để lưu tâm hình tròn và 1 trường dữ liệu int để lưu bán kính đường tròn.

typedef struct sCircle{

Point center;

int radius;
} Circle;

Đầu vào gồm có 2 struct Circle. Chương trình yêu cầu nhập vào thông tin của 2 đường tròn và in ra diện tích của
2 đường tròn (kiểu double) đó với pi =3.14 theo format sau:

“<S1> <S2>”

Với S1 là diện tích hình tròn 1, S2 là diện tích hình tròn 2, lấy 2 chữ số thập phân.

int main(){

//TO DO

For example:

Input Result

1 2 3 28.26 78.50
1 3 5

Answer: (penalty regime: 0 %)


1 ▼ int main(){
2 Circle circle1, circle2;
3
4 scanf("%d %d %d", &circle1.center.x, &circle1.center.y, &circle1.radius);
5 scanf("%d %d %d", &circle2.center.x, &circle2.center.y, &circle2.radius);
6
7 double area1 = 3.14 * circle1.radius * circle1.radius;
8 double area2 = 3.14 * circle2.radius * circle2.radius;
9
10 printf("%.2lf %.2lf\n", area1, area2);
11
12 return 0;
13 }

Input Expected Got

 1 2 3 28.26 78.50 28.26 78.50 


1 3 5

You might also like