Giáo trình ngôn ngữ C



tải về 2.34 Mb.
Chế độ xem pdf
trang39/62
Chuyển đổi dữ liệu16.03.2023
Kích2.34 Mb.
#54376
1   ...   35   36   37   38   39   40   41   42   ...   62
C ĐHQGHN

S = x - x
3
/3! + x
5
/5! - x
7
/7! +... 
Nhưng rõ ràng chương trình không thể tính vô hạn được, chúng ta chỉ có thể tính với 
một giới hạn nào đó. Có hai cách để giới hạn một là theo số các số hạng trong tổng tức là 
chỉ tính tổng với n số hạng đầu tiên của chuỗi, cách này có ưu điểm là số bước lặp xác 
định, nhưng không ước lượng được sai số. Cách thứ hai chúng ta hạn chế số bước theo độ 
chính xác của kết quả. Chúng ta có thể phát biểu lại bài toán là: Tính sin(x) theo công 
thức khai triển trên với độ chính xác 
ε (epsilon) cho trước. Có nghĩa là kết quả tính được 
(S) có sai số so với giá trị thực của nó không quá 
ε, hay fabs(S-sin(x)) <= ε. Yêu cầu này 
có thể thoả mãn khi chúng ta tính tổng đến số hạng thức k nào đó mà giá trị tuyệt đối của 
phần tử này <= 
ε. 
Cácbạn thấy rằng các phần tử trong chuỗi có tính chất đan dấu và giả sử ta ký hiệu 
phần tử thứ k trong chuỗi là p
k
thì


Gi¸o tr×nh tin häc c¬ së II - N
gôn ngữ
 C
55
p
k
= (-1)
2k

2k +1
/
(2k+1)


p
k+1
= (-1)
2k+1

2(k+1) +1
/
(2(k+1)+1)

= -p

* x

/(2k*(2k+1))
 Chúng ta có sơ đồ khối thuật giải như sau: 
sơ đồ khối tính S sin(x) 
 


Gi¸o tr×nh tin häc c¬ së II - N
gôn ngữ
 C
56
các bạn có chương trình tính sin( x) 
 
#include  
#include  
void main(){ 
float x, eps; 
float s, sh; 
int k; 
printf("\nNhap gia tri (radian) x = "); 
scanf("%f",&x); 
printf("\nNhap sai so duoc phep eps = "); 
scanf("%f",&eps); 
s=x;sh=x; k=1; 
do { 
sh =-sh*x*x/(2*k*(2*k+1)); 
s+=sh; 
k++; 
} while(fabs(sh)>eps); 
printf("s= %f ",s); 

Ví dụ 5.3: Viết chương trình nhập một số nguyên dương n từ bàn phím, kiểm tra và thông 
báo số đó có là số nguyên tố hay không. 
Yêu cầu
- Chương trình chỉ kiểm tra số n >2
- Sau khi kiểm tra xong một số, chương trình hỏi người dùng có muốn kiểm tra 
tiếp hay không, nếu trả lời c(C) thì chương trình vẫn tiếp tục cho nhập và kiểm 
tra số tiếp, ngược lại sẽ kết thúc chương trình.
Giải :Để kiểm tra số n có là số nguyên tố hay không chúng ta cần kiểm tra các số từ 2 tới 
xem có số nào là ước của n hay không, nếu không thì thông báo n là số nguyên tố, 
ngược lại thông báo n là hợp số. 


Gi¸o tr×nh tin häc c¬ së II - N
gôn ngữ
 C
57
#include  
#include  
#include  
#include  
void main(){ 
int k, n, tl; 
do{ 
printf("\nNhap gia tri can kiem tra = "); 
scanf("%d",&n); 
if(n<2) printf("Khong kiem tra so <2"); 
else { k=2; 
while((k<=sqrt(n))&&(n%k)) k++; 
if(k>sqrt(n)) 
printf("\n%d La so nguyen to",n); 
else 
printf("\n%d Khong la so nguyen to",n); 

printf("\nban co kiem tra so khac khong :"); 
tl = getch(); 
} while(toupper(tl)=='C'); 

IV.6. Cấu trúc for 
Đây cũng là toán tử điều khiển thực hiện lặp một số lệnh nào đó nhưng có cú pháp 
khác với hai chương trình lặp mà chúng ta đã xem xét ở phần trên, for trong C được dùng 
hết sức mềm dẻo nhưng nói chung nó sẽ trực quan và dễ hiểu hơn trong những tình huống 
lặp mà số bước lặp xác định. 
Trước khi trình bày cú pháp tổng quát của for chúng ta hãy xem xét một đoạn lệnh (in 
các kí tự từ ‘a’ tới ‘z’ và mã của chúng) như sau: 
for(i=’a’; i<’z’; i++) 
printf(“ gia tri %d là mã của ki tu %c”, i,i); 
đoạn lệnh trên có thể viết lại bằng chương trình while là 

=‘a’; 
while(i<=’z’) 
{ printf(“ gia tri %d là mã của ki tu %c”, i,i); 
i++; 



Gi¸o tr×nh tin häc c¬ së II - N
gôn ngữ
 C
58
¾

tải về 2.34 Mb.

Chia sẻ với bạn bè của bạn:
1   ...   35   36   37   38   39   40   41   42   ...   62




Cơ sở dữ liệu được bảo vệ bởi bản quyền ©hocday.com 2024
được sử dụng cho việc quản lý

    Quê hương