1. Trang chủ
  2. » Giáo án - Bài giảng

■ Bài tập C or C++ phần 09 đến 16 ■ Có bài giải (từ cơ bản đến nâng cao ■ Tập 2 of 2)

39 373 1

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 39
Dung lượng 912,19 KB

Nội dung

Phần 09 ■ Biến có cấu trúcPhần 10 ■ BT nâng cao phần 3Phần 11 ■ BT nâng cao phần 4Phần 12 ■ BT ôn tập phần 1Phần 13 ■ BT ôn tập phần 2Phần 14 ■ BT ôn tập phần 3Phần 15 ■ BT ôn tập phần 4Phần 16 ■ BT ôn tập phần 5

Bài tập C++Tập / Biến cấu trúc - Struct TD: Mỗi điểm hình học chiều toạ độ (x, y) Khai báo biến C hay C++ sau: struct Diem{ int x, y; }; Bài tập 09.01 – Tìm độ dài đoạn thẳng AB: Độ dài đoạn thẳng AB với điểm A toạ độ xA, yA điểm B toạ độ xB, yB tính sau: ̅̅̅̅ 𝐴𝐵 = √(𝑥𝐴 − 𝑥𝐵 )2 + (𝑦𝐴 − 𝑦𝐵 )2 #include #include struct Diem{ int x, y; }; int main() { float dodai; struct Diem A; struct Diem B; printf("Ban hay nhap toa cua diem thu nhat "); scanf("%d %d", &A.x, &A.y); printf("Ban hay nhap toa cua diem thu hai "); scanf("%d %d", &B.x, &B.y); dodai = sqrt(pow(A.x - B.x,2) + pow(A.y - B.y,2)); // sqrt = Căn bậc pow(a, n) = an printf("Do dai doan thang AB la %6.2f", dodai); return 0; } Bài tập 09.02 – Tìm toạ độ trung điểm đoạn thẳng AB: Toạ độ trung điểm I đoạn thẳng AB xI, yI tính sau: xI = (𝑥𝐴 +𝑥𝐵 ) yI = (𝑦𝐴 +𝑦𝐵 ) Biên soạn: Th.s Nguyễn Anh Việt Trang Bài tập C++Tập / #include #include struct Diem{ float x, y; }; // tọa độ số thực dấu phẩy int main() { float dodai; struct Diem A; struct Diem B; struct Diem TrungDiem; printf("Ban hay nhap toa cua diem thu nhat "); scanf("%f %f", &A.x, &A.y); printf("Ban hay nhap toa cua diem thu hai "); scanf("%f %f", &B.x, &B.y); TrungDiem.x = (A.x + B.x)/2; TrungDiem.y = (A.y + B.y)/2; printf("Trung diem cua doan thang AB co toa la (%.2f, %.2f)", TrungDiem.x, TrungDiem.y); return 0; } Bài tập 09.03 – Danh sách học sinh: Nhập vào danh sách học sinh gồm Họ, Tên, Điểm TB * Sắp thứ tự danh sách theo điểm TB học sinh * In danh sách học sinh Điểm TB >= * In danh sách học sinh Điểm TB < (tự làm bài) * In danh sách học sinh điểm TB cao * In danh sách học sinh điểm TB thấp (tự làm bài) #include #include #include int n, i, j, t1; char t2[31]; struct HocSinh { char Ho[31], Ten[11]; float DiemTB; }; struct HocSinh HS[10]; Biên soạn: Th.s Nguyễn Anh Việt Trang Bài tập C++Tập / void Nhap_DS() { printf("Danh sach co bao nhieu hoc sinh "); scanf("%d", &n); for (i=0; i=0 (toàn bộ) In_DS(5, "co diem TB >=5"); // In DS điểm TB >=5 In_DS(Diem_TB_Max(), "co diem TB cao nhat"); // In DS điểm TB >=Max (có điểm max) return 0; } Bài tập 10.01 – Đổi số thập phân thành số nhị phân: Để đổi số thập phân thành số nhị phân ta thực sau: TD: Đổi số 137 => Đem chia kết phép chia lấy ngược số dư 137 68 34 17 2 1 Kết 137 10 = 10001001 #include #include int main() { int n, k; char CNP[21]; strcpy(CNP, ""); printf("Hay nhap so can doi tu he 10 sang he "); scanf("%d", &n); k = n; while (k>0) { if (k % == 0) strcat(CNP, "0"); else strcat(CNP, "1"); k = k / 2; } strrev(CNP); // Đảo ngược chuổi printf("So %d he 10 doi sang he la %s", n, CNP); Biên soạn: Th.s Nguyễn Anh Việt Trang Bài tập C++Tập / return 0; } Bài tập 10.02 – Đổi số thập phân thành số thập lục phân (hệ 16): Để đổi số thập phân thành số hệ 16 ta thực sau: TD: Đổi số 249 => Đem chia cho 16 đến kết phép chia lấy ngược số dư Chú ý số dư từ 10 đến 15 chuyển đổi thành A đến F 249 9 16 15 15 F 16 Kết 249 10 = F9 16 #include #include int main() { long n, k; char CTLP[21]; strcpy(CTLP, ""); printf("Hay nhap so can doi tu he 10 sang he 16 "); scanf("%d", &n); k = n; while (k>0) { switch (k%16) { case 0: strcat(CTLP, "0"); break; case 1: strcat(CTLP, "1"); break; case 2: strcat(CTLP, "2"); break; case 3: strcat(CTLP, "3"); break; case 4: strcat(CTLP, "4"); break; case 5: strcat(CTLP, "5"); break; case 6: strcat(CTLP, "6"); break; case 7: strcat(CTLP, "7"); break; case 8: strcat(CTLP, "8"); break; case 9: strcat(CTLP, "9"); break; case 10: strcat(CTLP, "A"); break; case 11: strcat(CTLP, "B"); break; case 12: strcat(CTLP, "C"); break; case 13: strcat(CTLP, "D"); break; case 14: strcat(CTLP, "E"); break; case 15: strcat(CTLP, "F"); break; } k = k / 16; } strrev(CTLP); // Đảo ngược chuổi printf("So %d he 10 doi sang he 16 la %s", n, CTLP); Biên soạn: Th.s Nguyễn Anh Việt Trang Bài tập C++Tập / return 0; } Bài tập 10.03 – Đổi số thập phân thành số theo hệ m (m từ đến 16): #include #include int main() { long n, m, k; char Cxx[21]; strcpy(Cxx, ""); printf("Hay scanf("%d", printf("Hay scanf("%d", nhap so can doi tu he 10 sang he m "); &n); nhap he can doi (tu den 16) "); &m); k = n; while (k>0) { switch (k%m) { case 0: strcat(Cxx, "0"); break; case 1: strcat(Cxx, "1"); break; case 2: strcat(Cxx, "2"); break; case 3: strcat(Cxx, "3"); break; case 4: strcat(Cxx, "4"); break; case 5: strcat(Cxx, "5"); break; case 6: strcat(Cxx, "6"); break; case 7: strcat(Cxx, "7"); break; case 8: strcat(Cxx, "8"); break; case 9: strcat(Cxx, "9"); break; case 10: strcat(Cxx, "A"); break; case 11: strcat(Cxx, "B"); break; case 12: strcat(Cxx, "C"); break; case 13: strcat(Cxx, "D"); break; case 14: strcat(Cxx, "E"); break; case 15: strcat(Cxx, "F"); break; } k = k / m; } strrev(Cxx); printf("So %d he 10 doi sang he %d la %s", n, m, Cxx); return 0; } Bài tập 11.01 – Đổi số nhị phân thành số thập phân: Biên soạn: Th.s Nguyễn Anh Việt Trang Bài tập C++Tập / Để đổi số nhị phân thành số thập phân ta thực sau: TD: Đổi số 10001001 Tính luỹ thừa = 27 128 26 64 25 32 Nhân tương ứng với giá trị luỹ thừa Cộng giá trị lại 128 0 24 16 23 8 128 + + = 137 22 21 20 1 0 Kết 10001001 = 137 10 #include #include int main() { int So, i; long LT, STP=0; char CNP[21]; printf("Hay nhap chuoi can doi tu he sang he 10 "); gets(CNP); LT = 1; for (i=strlen(CNP)-1; i>=0; i ) { if (CNP[i]=='0') So =0; else So = 1; STP += So * LT; LT = LT * 2; } printf("Chuoi %s he doi sang he 10 la %d", CNP, STP); return 0; } Biên soạn: Th.s Nguyễn Anh Việt Trang Bài tập C++Tập / Bài tập 11.02 – Đổi số thập lục phân (hệ 16) thành số thập phân: Để đổi số thập phân thành số hệ 16 ta thực sau: Tính luỹ thừa 16 = Các giá trị A, B, …, F => 10, 11, … , 15 Nhân tương ứng với giá trị luỹ thừa Cộng giá trị lại 16 16 16 F 15 240 240 + = 249 Kết F9 16 = 249 10 #include int main() { int So, i, err=0; long LT, STP=0; char CTLP[21]; printf("Hay nhap chuoi can doi tu he 16 sang he 10 "); gets(CTLP); LT = 1; for (i=strlen(CTLP)-1; i>=0; i ) { switch (CTLP[i]) { case '0': So=0; break; // Chuổi chứa ký tự 'x'/ nhiều "x " case '1': So=1; break; case '2': So=2; break; case '3': So=3; break; case '4': So=4; break; case '5': So=5; break; case '6': So=6; break; case '7': So=7; break; case '8': So=8; break; case '9': So=9; break; case 'A': So=10; break; case 'B': So=11; break; case 'C': So=12; break; case 'D': So=13; break; case 'E': So=14; break; case 'F': So=15; break; default: err=1; } STP += So * LT; LT = LT * 16; } Biên soạn: Th.s Nguyễn Anh Việt Trang Bài tập C++Tập / if (err==0) printf("Chuoi %s he 16 doi sang he 10 la %d", CTLP, STP); else printf("Chuoi %s khong la chuoi he 16 (0 va A F)", CTLP); return 0; } Bài tập 11.03 – Đổi chuổi số theo hệ m (m từ đến 16) thành số thập phân: #include int main() { int So, i, err=0, m; long LT, STP=0; char CTLP[21]; printf("Hay nhap chuoi can doi tu he m sang he 10 "); gets(CTLP); printf("Hay nhap he m (2 den 16) "); scanf("%d", &m); LT = 1; for (i=strlen(CTLP)-1; i>=0; i ) { So=-1; switch (CTLP[i]) { case '0': So=0; break; case '1': So=1; break; case '2': So=2; break; case '3': So=3; break; case '4': So=4; break; case '5': So=5; break; case '6': So=6; break; case '7': So=7; break; case '8': So=8; break; case '9': So=9; break; case 'A': So=10; break; case 'B': So=11; break; case 'C': So=12; break; case 'D': So=13; break; case 'E': So=14; break; case 'F': So=15; break; } if (So==-1) err=1; STP += So * LT; LT = LT * m; } Biên soạn: Th.s Nguyễn Anh Việt Trang Bài tập C++Tập / if (err==0) printf("Chuoi %s he %d doi sang he 10 la %d", CTLP, m, STP); else printf("Chuoi %s khong la chuoi he %d", CTLP, m); return 0; } Các toán cổ Bài 12.01 Trăm trâu trăm cỏ Trâu đứng ăn năm Trâu nằm ăn ba Lụ khụ trâu già Ba bó Hỏi số trâu số cỏ ? int main() { int dung, nam, gia; for (dung=1; dung

Ngày đăng: 02/10/2017, 23:20

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w