Bài giảng Tin học đại cương - Phần 3, Chương 4: Cấu trúc điều khiển

pptx 64 trang haiha333 07/01/2022 4640
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Tin học đại cương - Phần 3, Chương 4: Cấu trúc điều khiển", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • pptxbai_giang_tin_hoc_dai_cuong_phan_3_chuong_4_cau_truc_dieu_kh.pptx

Nội dung text: Bài giảng Tin học đại cương - Phần 3, Chương 4: Cấu trúc điều khiển

  1. Chương 4: Cấu trúc điều khiển Nội dung chính 1. Cấu trúc lệnh khối 2. Cấu trúc rẽ nhánh – Cấu trúc if, if else – Cấu trúc lựa chọn switch 3. Cấu trúc lặp – Vòng lặp for – Vòng lặp while và do while 4. Các lệnh thay đổi cấu trúc lập trình – Câu lệnh continue – Câu lệnh break 01-Jan-16 175
  2. Chương 4: Cấu trúc điều khiển 4.3 Cấu trúc lặp Các cấu trúc lặp • Vòng lặp for • Vòng lặp while • Vòng lặp do while 01-Jan-16 176
  3. Chương 4: Cấu trúc điều khiển 4.3 Cấu trúc lặp for 01-Jan-16 177
  4. Chương 4: Cấu trúc điều khiển 4.3 Cấu trúc lặp Mục đích và cú pháp Dùng để lặp công việc một số chính xác lần đã định trước dựa vào sự biến thiên của biến điều khiển for([b.thuc_1];[b.thuc_2];[b.thuc_3]) Lệnh; • b.thuc_1: Khởi tạo giá trị ban đầu cho vòng lặp • b.thuc_2: Điều kiện tiếp tục vòng lặp • b.thuc_3: Thay đổi biến điều khiển của vòng lặp • Lệnh: Có thể là lệnh đơn lệnh kép hoặc lệnh rỗng 01-Jan-16 178
  5. Chương 4: Cấu trúc điều khiển 4.3 Cấu trúc lặp Sơ đồ cú pháp 01-Jan-16 179
  6. Chương 4: Cấu trúc điều khiển 4.3 Cấu trúc lặp Sử dụng int i; for(i = 0; i 0; i ) Câu_lệnh; for(int i = 0; i 0; i ) Lệnh; Turbo C++ 3.0, văn bản nguồn .cpp (c++) 01-Jan-16 180
  7. Chương 4: Cấu trúc điều khiển 4.3 Cấu trúc lặp Ví dụ 1 : Đưa ra các số nguyên lẻ nhỏ hơn 100 1. #include 2. #include 3. void main(){ 4. int i; 5. for(i = 1;i<100;i++) { 6. if(i%2 == 1) printf(“%5d”,i); 7. if((i+1)%20 ==0) printf(“\n”); 8. } 9. getch(); 10. } 01-Jan-16 181
  8. Chương 4: Cấu trúc điều khiển 4.3 Cấu trúc lặp Ví dụ 2 : Đưa ra các số nguyên lẻ nhỏ hơn 100 1. #include 2. #include 3. void main(){ 4. int i; 5. for(i = 99;i > 0;i-=2) { 6. printf(“%5d”,i); 7. if( (i-1) % 20 == 0) printf(“\n”); 8. } 9. getch(); 10. } 01-Jan-16 182
  9. Chương 4: Cấu trúc điều khiển 4.3 Cấu trúc lặp Ví dụ 3→ Nhập n và đưa ra n! #include #include void main() { long P = 1; int n, i; printf(“Nhap n : “);scanf(“%d”,&n); for(i = 1;i<=n;i++) P = P * i; printf(“Ket qua là %ld “,P); getch(); } Nhap n : 6 Ket qua là 720 01-Jan-16 183
  10. Chương 4: Cấu trúc điều khiển 4.3 Cấu trúc lặp Ví dụ 4 → Nhập n và tính tổng 1 +1/2+ +1/n #include #include void main() { float S = 0.0; int n, i; printf(“Nhap n : “);scanf(“%d”,&n); for(i = 1;i <= n;i++) S = S + (float)1/i; //S+=1.0/i; printf(“Ket qua là %7.4f “,S); getch(); Nhap n : 10 } Ket qua là 2.9290 01-Jan-16 184
  11. Chương 4: Cấu trúc điều khiển 4.3 Cấu trúc lặp Ví dụ 5→ Tìm số 3 chữ số thỏa mãn abc=a3+b3+c3 #include #include void main() {int i, a, b, c; for(i = 100;i<1000;i++){ a = i / 100; 153 b = i % 100 / 10; 370 c = i % 100 % 10; 371 if(a*a*a+b*b*b+c*c*c == i) 407 printf(“%d \n”,i); }//for getch(); }01-Jan-16 185
  12. Chương 4: Cấu trúc điều khiển 4.3 Cấu trúc lặp Ví dụ 5→ Tìm số 3 chữ số thỏa mãn abc=a3+b3+c3 #include #include void main() { int a, b, c; for(a = 1;a<=9;a++) for(b = 0;b<=9;b++) for(c = 0;c<=9;c++) if(a*a*a+b*b*b+c*c*c==100*a+10*b+c) printf(“%d \n”,100*a+10*b+c); getch(); } 01-Jan-16 186
  13. Chương 4: Cấu trúc điều khiển 4.3 Cấu trúc lặp Chú ý Không nhất thiết phải có đầy đủ các thành phần trong vòng lặp for int getchar(): đọc ký tự từ vùng đệm bàn phím. Nếu vùng đệm rỗng, đợi người dùng gõ dãy ký tự (cho tới khi ấn phím Enter), sẽ trả về ký tự đầu putchar(int c): đưa ký tự ra màn hình 01-Jan-16 187
  14. Chương 4: Cấu trúc điều khiển 4.3 Cấu trúc lặp Chú ý 1. Biểu thức khởi tạo Hello world char c; int i=0; Hello world for( ; (c=getchar())! = '\n’ ; i++) So ky tu: 11 putchar(c); printf(“\nSo ky tu: %d”,i); 2. Biểu thức điều khiển for(i=0 ; ; c=getchar(), i++) Hello world if(c==‘\n’) break; printf(“\nSo ky tu: %d”,i); So ky tu: 12 3. Thân vòng lặp for(i=0 ; getchar() != ‘\n’, i++); Hello world printf(“\nSo ky tu: %d”,i); So ky tu: 11 01-Jan-16 188
  15. Chương 4: Cấu trúc điều khiển 4.3 Cấu trúc lặp while 01-Jan-16 189
  16. Chương 4: Cấu trúc điều khiển 4.3 Cấu trúc lặp Mục đích & Cú pháp Dùng để thực hiện lặp đi lặp lại một công việc nào đó với số lần lặp không xác định. Cú pháp: while(bieu_thuc_dieu_kien) lenh; • Chương trình kiểm tra điều kiện trước khi lặp – Giá trị của biểu thức điều kiện là đúng thực hiện lệnh • Các lenh của vòng lặp có thể không được thực hiện lần nào Biểu_thức_điều_kiện sai ngay từ đầu •01-JBani-ể16u_thức_điều_kiện luôn đúng lặp vô hạn lần 190
  17. Chương 4: Cấu trúc điều khiển 4.3 Cấu trúc lặp Sơ đồ cú pháp Tính toán giá trị của Biểu thức điều kiên Lệnh Biểu thức != 0 Đúng Sai 01-Jan-16 191
  18. Chương 4: Cấu trúc điều khiển 4.3 Cấu trúc lặp Nhập n và đưa tổng của n số nguyên đầu tiên #include #include void main(){ long S = 0; int n; printf(“Nhap n : “);scanf(“%d”,&n); while (n > 0){ S = S + n; while (n> 0) n = n – 1; S += n ; } printf(“Ket qua là %ld “,S); getch(); } 01-Jan-16 192
  19. Chương 4: Cấu trúc điều khiển 4.3 Cấu trúc lặp Tìm số nguyên lớn nhất thỏa mãn 3n5-317n #include #include void main() n = 10 { while (3*pow(n,5)-317*n >= 5) clrscr(); n ; int n=0; while (3* pow(n,5) - 317*n < 5) n++; printf("%4d",n-1); getch(); } n = 3 01-Jan-16 193
  20. Chương 4: Cấu trúc điều khiển 4.3 Cấu trúc lặp Cho biết kết quả thực hiện chương trình #include #include void main() { clrscr(); int i=3; while (i > 1){ if(i % 2==0) i = i / 2; else i = i * 3 + 1; printf("%4d",i); } getch(); 10 5 16 8 4 2 1 } 01-Jan-16 194
  21. Chương 4: Cấu trúc điều khiển 4.3 Cấu trúc lặp Nhập chuỗi và đếm số nguyên âm, phụ âm, khoảng trắng #include #include void main() { int na, pa, kt; char c; na = pa = kt = 0; clrscr(); printf(“>”); while( (c=getchar()) !='\n'){ switch(c){ case 'a': case ‘e': case ‘i': case ‘o': case ‘u‘ : case ‘A': case‘E': case ‘I': case‘0': case ‘U‘ : na++; break; case ' ': kt++; break; default : pa++; } } printf("Chuoi co :%d nguyen am :%d phu am va %d khoang trang",na,pa,kt); } 01-Jan-16 195
  22. Chương 4: Cấu trúc điều khiển 4.3 Cấu trúc lặp do while 01-Jan-16 196
  23. Chương 4: Cấu trúc điều khiển 4.3 Cấu trúc lặp Mục đích & Cú pháp • Dùng để thực hiện lặp đi lặp lại một công việc nào đó với số lần lặp không xác định. • Cú pháp: do{ lenh; }while(bieu_thuc_dieu_kien); • Chương trình kiểm tra điều kiện sau khi lặp • Các lenh được thực hiện ít nhất một lần • Biểu thức luôn đúng, lặp vô hạn lần 01-Jan-16 197
  24. Chương 4: Cấu trúc điều khiển 4.3 Cấu trúc lặp Sơ đồ cú pháp Lệnh Tính toán giá trị của Biểu thức điều kiên Đúng Biểu thức != 0 Sai 01-Jan-16 198
  25. Chương 4: Cấu trúc điều khiển 4.3 Cấu trúc lặp Nhập n và đưa tổng của n số nguyên đầu tiên #include #include void main(){ long S = 0; int n; printf(“Nhap n : “);scanf(“%d”,&n); do { do S = S + n; S += n ; n = n – 1; while (n> 0); }while (n > 0); printf(“Ket qua là %ld “,S); getch(); } Nhap n : 96 Ket qua là 4656 01-Jan-16 199
  26. Chương 4: Cấu trúc điều khiển 4.3 Cấu trúc lặp Ví dụ • Nhập vào điểm của một sinh viên, nếu điểm đó không [0, 10] thì thông báo cho người dùng nhập lại. • Thực hiện: – Nếu dùng lệnh if → Chỉ kiểm tra được 1 lần – Sử dụng for Chưa biết trước số lần lặp. → Sử dụng vòng lặp không cần xác định trước số lần lặp: while / do while 01-Jan-16 200
  27. Chương 4: Cấu trúc điều khiển 4.3 Cấu trúc lặp Dùng vòng lặp while #include void main(){ float diem; clrscr(); printf(“Chuong trinh nhap diem sinh vien\n"); printf("Nhap diem (0 10) { printf("\nBan nhap khong dung!\n"); printf("Ban hay nhap lai (0<=diem<=10):"); scanf("%f",&diem); } printf("\nDiem ban vua nhap la: %.2f“, diem); } 01-Jan-16 201
  28. Chương 4: Cấu trúc điều khiển 4.3 Cấu trúc lặp Dùng vòng lặp while → Kết quả 01-Jan-16 202
  29. Chương 4: Cấu trúc điều khiển 4.3 Cấu trúc lặp Dùng vòng lặp do while #include void main() { float diem; clrscr(); printf(“Chuong trinh nhap diem sinh vien\n"); do { printf("Nhap diem (0 10) printf("\nBan nhap khong dung!\n"); } while (diem 10); printf("\nDiem ban vua nhap la: %.2f“, diem); } 01-Jan-16 203
  30. Ví dụ: Nhập số và kiểm tra số hoàn hảo 1. #include fflush(): xóa vùng đệm bàn phím 2. #include 3. #include toupper(): chuyển sang chữ hoa 4. void main(){ 5. long int n, tong, i; getche(): Đọc ký tự tự vùng đệm & hiện 6.char ch; 7. thị lên màn hình (getch() thì không) 8. do { 9. tong = 0; 10. printf("\n\nNhap vao mot so nguyen: "); scanf("%ld",&n); 11. printf("Cac uoc so cua %ld la: ",n); 12. for(i = 1;i<n;i++) 13. if(n % i == 0){ 14. printf("%5d",i); 15. tong = tong + i; 16. }//if & for 17. printf("\nTong cac uoc so cua %ld bang %ld",n,tong); 18. if(tong == n) printf("\n %5ld LA so hoan hao“,n); 19. else printf("\n %5ld KHONG LA so hoan hao“,n); 20. printf("\nBan co muon thuc hien lai(c/k)? "); 21. fflush(stdin); 22. }while(toupper(getche()) !='K'); printf("\n\nAn phim bat ki de ket thuc "); getch(); 2031.-Jan}-16 204
  31. 01-Jan-16 205
  32. Nhập số và phân tích số nguyên ra thừa số nguyên tố 1. #include 2. #include 3. #include 4. void main(){ 5. int N, i; 6. do{ printf("\n\nNhap vao so nguyen duong "); scanf("%d",&N); 7. printf("%d = ",N); 8. i = 2; 9. while (i ?"); fflush(stdin); 17. }while(toupper(getche()) != 'K'); 18. } 01-Jan-16 206
  33. 01-Jan-16 207
  34. Chương 4: Cấu trúc điều khiển 4.3 Cấu trúc lặp Ví dụ Viết chương trình thực hiện công việc - Nhập vào từ bàn phím 2 số nguyên - Nhập vào từ bàn phím một ký tự bất kỳ; ▪ Nếu đây là một toán tử số học thì đưa ra giá trị tương ứng với toán tử. ▪ Nếu không phải thì đưa ra thông báo sai - Chương trình thực hiện cho tới khi ký tự nhập vào là ‘q’ hoặc ‘Q’ 01-Jan-16 208
  35. #include #include void main() { int a, b; char ch; int Fin = 0; clrscr(); printf("Nhap cac so a, b "); scanf("%d%d",&a,&b); do{ printf("\nToan tu (+ ; - ; * ; / ; %) "); ch=getche(); switch(ch){ case '+': printf(" Co ket qua: %d\n",a+b); break; case '-': printf(" Co ket qua: %d\n",a-b); break; case '*': printf(" Co ket qua: %d\n",a*b); break; 01-Jan-16 209
  36. case '%': if (b==0) printf(" Chia cho 0\n"); else printf(" Co ket qua: %d\n",a%b); break; case '/': if (b==0) printf(" Chia cho 0\n"); else printf(" Co ket qua: %d\n",a/b); break; case 'q': case 'Q': Fin=1; break; default: printf(" khong co toan tu nay\n"); } }while(Fin==0); printf("\nKet thuc, an mot phim "); getch(); } 01-Jan-16 210
  37. 01-Jan-16 211
  38. Chương 4: Cấu trúc điều khiển 4.3 Cấu trúc lặp Ví dụ: Nhập xâu, đếm số ký tự của xâu • Khai báo: int n=0; char c; • Dùng vòng for – for(n=0;;c=getchar(),n++) if(c==‘\n’) break; – for(n=0 ; getchar() != '\n' ; n++); • Dùng vòng lặp while c = getchar(); while (c !=‘\n’){ c= getchar(); n++; } • Dùng vòng lặp do while do{ c = getchar(); n++; }while(c!=‘\n’); • Đưa kết quả ra: printf(«Chuoi chua %d ky tu »,n); 01-Jan-16 212
  39. Nhập chuỗi ký tự cho đến khi gặp ký tự ’*’ Tính tần suất xuất hiện nguyên âm ‘a’ 1. #include 2. #include 3. #include 4. void main(){ 5. char c; int n, d; 6. do{ 7. printf("\n\n"); 8. d=0; n=0; 9. while( (c=getche()) !='*'){ 10. n++; 11. if (c=='a') d++; 12. } 13. if(n==0) 14. printf("\nChuoi ky tu rong\n"); 15. else 16. printf("\ntan suat xuat hien ky tu 'a' la %5.2f%%\n",(float)100*d/n); 17. printf("Tiep tuc ?: "); 18. }while(toupper(getche()) != 'K'); 1901.-}Jan-16 213
  40. Chương 4: Cấu trúc điều khiển 4.4 Các lệnh thay đổi cấu trúc lập trình Ví dụ: Nhập một số nguyên, kiểm tra là số nguyên tố không? #includ #include void main() { int N, i, OK = 1; printf("\nNhap gia tri N : "); scanf("%d", &N); if (n<2) printf("\nSo %d khong phai so nguyen to",N); else { foorr(i=2(; ii<==2(in;t)siqrt<(N)N;i;++)i++) if (N%i == 0) { OK = 0; break; i <= (int)sqrt(N) } if (OK) printf("\nSo %d la so nguyen to.", N); else printf("\nSo %d la hop so.", N); } i= 2; getch(); while (N % i != 0) i++; } if (i == N) printf(« so ng to ») 01-Jan-16 214
  41. Chương 4: Cấu trúc điều khiển Nội dung chính 1. Cấu trúc lệnh khối 2. Cấu trúc rẽ nhánh – Cấu trúc if, if else – Cấu trúc lựa chọn switch 3. Cấu trúc lặp – Vòng lặp for – Vòng lặp while và do while 4. Các lệnh thay đổi cấu trúc lập trình – Câu lệnh continue – Câu lệnh break 01-Jan-16 215
  42. Chương 4: Cấu trúc điều khiển 4.4 Các lệnh thay đổi cấu trúc lập trình Mục đích • Các vòng lặp while/ do while/ for sẽ kết thúc quá trình lặp khi biểu thức điều kiện của vòng lặp không còn được thỏa mãn. • Tuy nhiên trong lập trình đôi khi ta cũng cần thoát khỏi vòng lặp ngay cả khi biểu thức điều kiện của vòng lặp vẫn còn được thỏa mãn. • Để hỗ trợ người lập trình làm việc đó, ngôn ngữ C cung cấp 2 câu lệnh là continue và break 01-Jan-16 216
  43. Chương 4: Cấu trúc điều khiển Continue >< break 01-Jan-16 217
  44. Chương 4: Cấu trúc điều khiển 4.4 Các lệnh thay đổi cấu trúc lập trình continue • Bỏ qua việc thực hiện các câu lệnh nằm sau lệnh continue trong thân vòng lặp. • Chuyển sang thực hiện một vòng lặp mới 01-Jan-16 218
  45. Chương 4: Cấu trúc điều khiển 4.4 Các lệnh thay đổi cấu trúc lập trình Ví dụ 1 #include #include void main() Tính tổng 100 số nguyên đầu tiên { ngoại trừ các số chia hết cho 5 int i; int sum = 0; for(i = 1;i<=100;i++) { if(i % 5 == 0) for(i=1;i<=100;i++) continue; if (i % 5 != 0) sum += i; sum += i; } } 01-Jan-16 219
  46. Chương 4: Cấu trúc điều khiển 4.4 Các lệnh thay đổi cấu trúc lập trình break Thoát khỏi vòng lặp ngay cả khi biểu thức điều kiện của vòng lặp vẫn còn được thỏa mãn. Chú ý: • break dùng để thoát ra khỏi khối lặp hiện tại • break cũng dùng để thoát ra khỏi lệnh rẽ nhánh switch 01-Jan-16 220
  47. Chương 4: Cấu trúc điều khiển 4.4 Các lệnh thay đổi cấu trúc lập trình Ví dụ 2 #include #include void main() { int n; do { printf(" \nEnter the number :"); scanf("%d", &n); if (n 10) { printf("Skip the value\n"); continue; } printf("The number is: %d", n); } while (n!= 0); }01-Jan-16 221
  48. Chương 4: Cấu trúc điều khiển 4.4 Các lệnh thay đổi cấu trúc lập trình Ví dụ 3 #include #include void main() { int i; for(i = 1;i<=10;i++) { if(i == 5) continue; printf(“%5d”,i); if(i==7) break; } getch(); } 01-Jan-16 222
  49. Chương 4: Cấu trúc điều khiển 4.4 Các lệnh thay đổi cấu trúc lập trình Ví dụ 4 #include #include void main() { int i,j; clrscr(); for(i = 0;i i){ break; }//if }//for _ j printf("i:%d j:%d\n",i,j); }//for_i getch(); } 01-Jan-16 223
  50. Chương 4: Cấu trúc điều khiển 4.4 Các lệnh thay đổi cấu trúc lập trình Ví dụ tổng hợp Viết chương trình thực hiện các công việc sau • Nhập vào một dãy số cho tới khi – Tổng của dãy lớn hơn 1550 hoặc là – Số phần tử trong dãy lớn hơn 100 • Đưa ra số lượng phần tử nằm trong khoảng (35, 70) • Đưa ra trung bình cộng của các phần tử chia hết cho 7 01-Jan-16 224
  51. Chương 4: Cấu trúc điều khiển 4.4 Các lệnh thay đổi cấu trúc lập trình Nhập một dãy số cho tới khi số phần tử trong dãy lớn hơn 100 Bắt đầu #include void main(){ i int a, i; Nhập số a i = 0; do{ i  i+1 printf("Nhap vao so nguyen:"); s scanf("%d",&a); i > 100 i++; đ }while (i <= 100); Kết thúc } 01-Jan-16 225
  52. Chương 4: Cấu trúc điều khiển 4.4 Các lệnh thay đổi cấu trúc lập trình Nhập một dãy số cho tới khi tổng của dãy lớn hơn 1550 Bắt đầu #include void main(){ i S int a, S; S = 0; Nhập số a do{ S  S+a printf("Nhap vao so nguyen:"); scanf("%d",&a); s S > 1550 S+=a; đ }while (S <= 1550); Kết thúc } 01-Jan-16 226
  53. Chương 4: Cấu trúc điều khiển 4.4 Các lệnh thay đổi cấu trúc lập trình Nhập một dãy số cho tới khi thỏa mãn . Bắt đầu #include i void main(){ S int a, i, S; S = 0; i=0; Nhập số a do{ S  S+a printf("Nhap vao so nguyen:"); scanf("%d",&a); i  i+1 S+=a; s s i++; i > 100 S > 1550 }while ( (i <=100)&&(S <= 1550) ); đ đ } Kết thúc 01-Jan-16 227
  54. Đưa ra TBC của các phần tử chia hết cho 7(1) #include Bắt đầu void main(){ int a, i=0,S7=0,d7=0; i0 S70 do{ d70 printf("Nhap vao soNhnậpgsuốyaen:"); scanf("%d",&a); i++; i  i+1 if(a%7==0){ đ d7d7+1 a % 7=0 d7++; S7S7+a S7+=a; s } s i > 100 }while (i <= 100); đ if(d7==0) s đ Thông báo: Không printf(“TBKChlào: Sn7/dg7 co sod7=c0 hia h ecótsốcchhiaohế7tc)h;o7 else printf(“Ket qua la %.4f“,(float) S7/d7); Kết thúc } 01-Jan-16 228
  55. Đưa ra TBC của các phần tử chia hết cho 7(2) #include Bắt đầu void main(){ int a, i=0,S7=0,d7=0i ,S0=S07; 0 do{ S0 d70 printf("Nhap vaoNhsậop snốgauyen:"); scanf("%d",&a); i++; S+=a; i  i+1 SS+a if(a%7==0){ đ d7d7+1 a % 7=0 d7++; S7S7+a S7+=a; s } s s i > 100 S > 1550 }while ( (i <=100)&&(S <=đ 1550) ); đ if(d7==0) s T hông báo:Không printf(“KhToBnCglà: cS7o/d7so chiad7h=0et cđho 7); else có số chia hết cho 7 printf(“Ket qua la %.4f“,(float) S7/d7); } Kết thúc 01-Jan-16 229
  56. Chương 4: Cấu trúc điều khiển 4.4 Các lệnh thay đổi cấu trúc lập trình Ví dụ tổng hợp Bắt đầu #include i0 S70 void main(){ S0 d70 d0 int a, i=0,S7=0,d7=0,NShậ=p 0số,a d = 0; do{ i  i+1 SS+a đ printf("Nhap vao as%o7n=0guy end:7");d7s+1canf("%d",&a); S7S7+a i++; S+=a; s if(a%7==0){ đ d7++; a>35 &a 100 S > 1550 if( (a>35) && (a < 70đ) ) d++; đ }while ( (i <=100T)hô&ng&ba(oS:số<p=/tử t1ro5ng5kh0oả)ng);(35,70) là d s printf(“So phanTBCtulà:tSr7o/dn7 g khod7a=0ng (đ35T,7hô0ng)báloa :K%hôndg \n”,d); if(d7==0) printf(“Khong co so chiacóhseố cthica hhếotch7o ”7); else printf(“TBC cac so chia het cho 7 %.4f“,(float) S7/d7); Kết thúc 01}-Jan-16 230
  57. Chương 4: Cấu trúc điều khiển 4.3 Cấu trúc lặp Bài tập tại lớp 1. Cho hàm số f (x) = x5 + 5 x Lập trình tính và đưa ra màn hình các cặp giá trị với x lấy dãy giá trị - 10;-9.9;-9.8; ; 4.9;5.0. 2. Đọc vào dãy số cho tới khi gặp một số dương chia hết cho 5; Tìm số lớn nhất của dãy và số lần xuất hiện các giá trị đó 3. Nhập vào dãy cho tới khi gặp số 0. Tính trung bình cộng các số chẵn đã đọc (không tính số 0) 4. Lập trình thực hiện trò chơi bốc sỏi với máy tính – Có N viên sỏi, 2 người chơi lần lượt bốc từ 1 đến 5 viên. Người bốc vên sỏi cuối luôn thắng/thua. Hãy viết chương trình thực hiện nhập N (N [30 50) ) và máy tính là một người chơi. Máy tính đi trước và luôn thắng nếu được (N=6,12, người đi trước thua) 01-Jan-16 231
  58. Chương 4: Cấu trúc điều khiển 4.3 Cấu trúc lặp Tính hàm f (x) = x5 + 5 x 1. #include • pow(x,y) sinh ra lỗi khi x âm và y 2. #include không là số nguyên 3. void main(){ • fabs(x) trả về trị tuyệt đối của x 4. float x, fx; khi là số thực Có sai số khi x=0.0 5. for(x=-10.0; x \n",x,fx); 11. } 12. } 01-Jan-16 232
  59. Chương 4: Cấu trúc điều khiển 4.3 Cấu trúc lặp Đọc dãy số tới khi gặp số 0, tìm và đếm số max 1. #include 2. #include 3. void main(){ 4. int a, d=0, max = INT_MIN; 5. do { 6. printf("Nhap mot so : "); scanf("%d",&a); 7. if( a > max){ 8. max = a; 9. d = 1; 10. }else 11.if (a == max) d++; 12. }while ( a < 0 || a%5 !=0); 13. printf(“Max: %d; Co %d gia tri",max,d); 14. } 01-Jan-16 233
  60. Chương 4: Cấu trúc điều khiển 4.3 Cấu trúc lặp Bài tập Viết chương trình đọc x và n vào từ bàn phím rồi tính S = x + x + x ++ x n dâ'u c ăn x2 x3 xn S =1+ x + + ++ 2 3 n x2 x3 xn S =1+ x + + ++ 2! 3! n! x2 x3 (−1)n xn S =1− x + − ++ 2! 3! n! 01-Jan-16 234
  61. Viết chương trình đọc x và n vào từ bàn phím rồi tính 1. #include x2 x3 xn 2. #include S = 1+ x + + + + 3. void main(){ 2! 3! n! 4. int n, i; 5. float x, u = 1.0,S=1.0; 6. clrscr(); 7. printf("Nhap vao so nguyen n : "); scanf("%d",&n); 8. printf("Nhap vao so thuc x : "); scanf("%f",&x); 9. for(i = 1; i <= n; i ++){ 10. u *= x/i; 11. S += u; 12. } 13. printf("Ket qua la %.8f",S); 14. getch(); 15. } 01-Jan-16 235
  62. Chương 4: Cấu trúc điều khiển 4.3 Cấu trúc lặp Bài tập (Tính tổng vô hạn) Đọc x và eps từ bàn phím và tính biểu thức sau với độ chính xác nhỏ hơn eps x2 x3 (−1)n xn S = 1− x + − ++ + 1 2! 3! n! x3 x5 (−1)n S = x − + ++ x 2n+1 +//sin(x) 2 3! 5! (2n +1)! x2 x4 (−1)n S =1− + ++ x 2n +//cos(x) 3 2! 4! (2n)! 01-Jan-16 236
  63. Nhập x và  và tính với độ chính xác nhỏ hơn  x2 x3 (−1)n xn S =1− x + − ++ + 2! 3! n! 01-Jan-16 237
  64. Chương 4: Cấu trúc điều khiển Tổng kết 1. Câu lệnh khối Đặt trong cặp ngoặc nhọn { } 2. Cấu trúc rẽ nhánh – if (bieu_thuc), if (bieu_thuc) else – switch (bieu_thuc) {(case/break/default)} 3. Cấu trúc lặp – for(bieu_thuc_1; bieu_thuc_2; bieu_thuc_3) CauLenh; – while (bieu_thuc) CauLenh; – do Cau_Lenh while (bieu_thuc); 4. Các lệnh thay đổi cấu trúc lập trình – continue/ break 01-Jan-16 238