Bài giảng Tin học đại cương - Phần 3, Chương 4: Cấu trúc điều khiển
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:
- bai_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
- 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
- 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
- Chương 4: Cấu trúc điều khiển 4.3 Cấu trúc lặp for 01-Jan-16 177
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- Chương 4: Cấu trúc điều khiển 4.3 Cấu trúc lặp while 01-Jan-16 189
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 01-Jan-16 205
- 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
- 01-Jan-16 207
- 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
- #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
- 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
- 01-Jan-16 211
- 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
- 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
- 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
- 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
- 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
- Chương 4: Cấu trúc điều khiển Continue >< break 01-Jan-16 217
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- Đư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; i0 S70 do{ d70 printf("Nhap vao soNhnậpgsuốyaen:"); scanf("%d",&a); i++; i i+1 if(a%7==0){ đ d7d7+1 a % 7=0 d7++; S7S7+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
- Đư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=0i ,S0=S07; 0 do{ S0 d70 printf("Nhap vaoNhsậop snốgauyen:"); scanf("%d",&a); i++; S+=a; i i+1 SS+a if(a%7==0){ đ d7d7+1 a % 7=0 d7++; S7S7+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
- 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 i0 S70 void main(){ S0 d70 d0 int a, i=0,S7=0,d7=0,NShậ=p 0số,a d = 0; do{ i i+1 SS+a đ printf("Nhap vao as%o7n=0guy end:7");d7s+1canf("%d",&a); S7S7+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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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