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


VI.3 - Lời gọi hàm và truyền tham số



tải về 2.34 Mb.
Chế độ xem pdf
trang60/62
Chuyển đổi dữ liệu16.03.2023
Kích2.34 Mb.
#54376
1   ...   54   55   56   57   58   59   60   61   62
C ĐHQGHN

VI.3 - Lời gọi hàm và truyền tham số
Một hàm có thể gọi thực hiện thông qua tên hàm, với những hàm có tham số thì trong 
lời gọi phải truyền cho hàm các tham số thực sự (đối số) tương ứng với các tham số hình 
thức. 
Khi hàm được gọi và truyền tham số phù hợp thì các lệnh trong thân hàm được thực 
hiên bắt đầu từ lệnh đầu tiên sau dấu mở móc { và kết thúc khi gặp lệnh return, exit hay 
gặp dấu đóng móc } kêt thúc hàm. 
Cú pháp
 
([danh 
sách 
các 
tham 
số thực sự]); 
Các tham số thực sự phải phù hợp với các tham số hình thức:
à
số tham số thực sự phải bằng số tham số hình thức. 
à
Tham số thực sự được truyền cho các tham số hình thức tuần tự từ trái sang phải, 
tham số thực sự thứ nhất truyền cho tham số hình thức thứ nhất, tham số thực sự 
thứ 2 truyền cho tham số hình thức thứ 2,.. kiểu của các tham số hình thức phải phù 
hợp với kiểu của các tham số hình thức. Sự phù hợp ở đây được hiểu là kiểu trùng 
nhau hoặc kiểu của tham số thực sự có thể ép về kiểu của tham số hình thức.
Ví 
dụ: giả sử có các hàm max, nhapmang như đã định nghĩa ở trên 
int a=4, b=6,c; 
int 
D[10]; 


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


max(a,b); 
nhapmang(D,5); 
Lưu ý sau này chúng ta thấy hàm có thể có đối số thay đổi và chúng có thể được 
truyền tham số với giá trị ngầm định vì vậy tham số hình thức có thể ít hơn tham số 
thực sự.
¾
Một số ví dụ 
 
Ví dụ VI.1: Viết chương trình nhập một số n từ bàn phím ( n >2), in các số nguyên tố từ 2 
tới n. 
Giải: Để in các số nguyên tố trong khoảng từ 2 tới n chúng ta thực hiện như sau: với mỗi 
số k 
∈ [2,n] kiểm tra xem k có là nguyên tố hay không, nếu đúng thì in k ra màn hình. 
Vậy chúng ta sẽ xây dựng hàm để kiểm tra một số có là nguyên tố hay không,
− tên hàm: nguyento 
− đầu vào: k là một số nguyên cần kiểm tra
− giá trị trả về: 1 nếu đúng k là số nguyên tố, ngược lại trả về 0. 
#include  
#include  
#include  
int nguyento(int k);//
nguyên mẫu hàm kiểm tra k là số nguyên tố 
void main(){ 
int k, n; 
do{ 
printf("\nNhap gia tri n (n>=2) = "); 
scanf("%d",&n); 
} while(n<2); 
printf("\nCac so nguyen to tu 2 toi %d la \n",n); 
for(k=2; k<=n; k++) 
if (nguyento(k)) printf("%d, ",k); 

//-----
định nghĩa hàm nguyento 
------------ 
int nguyento(int k){
int i=2; 
while((i<=sqrt(k))&&(k%i)) i++; 
if(i>sqrt(k)) 
return 1; 


Gi¸o tr×nh tin häc c¬ së II - N
gôn ngữ
 C
92
else 
return 0;
} 
( ví dụ VI.1 - in các số nguyên tố từ 2 tới n) 
Ví dụ VI.2 - Viết chương trình nhập 2 mảng A, B có n phần tử nguyên từ bàn phím, tính 
mảng tổng C = A+B, in 3 mảng A, B, C ra màn hình. 
Yêu cầu:
- n <20; 
- chương trình gồm 3 hàm: hàm nhập mảng, hàm in mảng, hàm tổng hai mảng.
Giải: Chúng ta cần xây dựng 3 hàm như sau 
1. Hàm nhập mảng 
− Tên hàm: nhapmang 
− Giá trị trả về: không trả về (void) 
− Tham số: mảng cần nhập ( int A[]) và số phần tử kiểu int 
− nguyên mẫu: void nhapmang( int A[], int n);
2. Hàm in mảng 
− Tên hàm: inmang 
− Giá trị trả về: không trả về (void) 
− Tham số: mảng cần in ( int A[]) và số phần tử của mảng kiểu int 
− nguyên mẫu: void inmang( int A[], int n);
3. Hàm tính tổng hai mảng 
− Tên hàm: tong 
− Giá trị trả về: không trả về (void) 
− Tham số: hai mang A, B, mảng kết quả C và số phần tử kiểu int 
− nguyên mẫu: void tong ( int A[], int B[], int C[], int n);
Các bạn có chương trình minh họa như sau 
 


Gi¸o tr×nh tin häc c¬ së II - N
gôn ngữ
 C
93
#include  
#include  
void nhapmang(int a[], int n); 
void inmang(int a[], int n); 
void tong(int A[],int B[],int C[],int n); 
void main(){ 
clrscr(); 
const int max = 20; // 
int A[max], B[max],C[max]; 
int n; 
do{ 
printf("\nNhap so phan tu mang = "); 
scanf("%d",&n); 
} while(n<1 || n>max); 
printf("\nNhap A \n"); 
nhapmang(A,n); 
printf("\nNhap B \n"); 
nhapmang(B,n); 
tong(A,B,C,n); 
printf("\nmang A: "); 
inmang(A,n); 
printf("\nmang B: "); 
inmang(B,n); 
printf("\nmang C: "); 
inmang(C,n); 
getch(); 

void nhapmang(int a[], int n){ 
int i; 
printf("\nNhap mang co %d phan tu \n",n); 
for(i=0; i
printf("pt thu [%d]= ",i); 
scanf("%d",&a[i]); 


void inmang(int a[], int n){ 
int i; 
for(i=0; iprintf("%d ",a[i]); 

void tong(int A[],int B[],int C[],int n){
int i; 
for (i = 0; i
 


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

tải về 2.34 Mb.

Chia sẻ với bạn bè của bạn:
1   ...   54   55   56   57   58   59   60   61   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