Xây dựng một hàm bao gồm: khai báo kiểu hàm, đặt tên hàm, khai báo các tham số hình thức và đưa ra câu lệnh cần thiết để thực hiện yêu cầu đề ra cho hàm. Một hàm được viết theo mẫu sau:
[type] tên hàm ( khai báo các tham số hình thức của hàm )
{
Khai báo các biến cục bộ Các câu lệnh
[return[biểu thức];] }
Dòng tiêu đề: Trong dòng đầu tiên của hàm chứa các thông tin về: kiểu hàm, tên hàm, kiểu và tên mỗi tham số hình thưc của hàm. Khai báo các tham số hình thức có theo dạng: <kiểu tham số 1> <tên tham số 1>, <kiểu tham số 2> <tên tham số 2>,..., <kiểu tham số n> <tên tham số n>. Ví dụ: float max3s(float a, float b, float c)
Thân hàm: Sau dòng tiêu đề là thân hàm. Thân hàm là nội dung chính của hàm bắt đầu và kết thúc bằng các dấu { }. Trong thân hàm chứa các câu lệnh cần thiết để thực hiện một yêu cầu nào đó đã đề ra cho hàm. Thân hàm có thể sử dụng một câu lệnh return, có thể dùng nhiều câu lệnh return ở các chỗ khác nhau, và cũng có thể không sử dụng câu lệnh này. Dạng tổng quát của nó là: return [biểu thức]; Giá trị của biểu thức trong câu lệnh return sẽ được gán cho hàm.
Ví dụ: Viết chương trình tìm giá trị lớn nhất của ba số mà giá trị mà giá trị của chúng được đưa vào từ bàn phím.
Chúng ta tổ chức thành hai hàm: Hàm main() và hàm max3s. Nhiệm vụ của hàm max3s là tính giá trị lớn nhất của ba số đã được đọc vào, giả sử là a,b,c. Nhiệm vụ của hàm main() là đọc ba giá trị vào từ bàn phím, rồi dùng hàm max3s như trên để tìm giá trị lớn nhất của ba số và đưa kết quả ra màn hình. Chương trình được viết như sau:
#include "stdio.h"
float max3s(float a,float b,float c ); /* Nguyên mẫu hàm*/
main()
{ float x,y,z;
printf("\n Vao ba so x,y,z:"); scanf("%f%f%f",&x&y&z);
printf("\n Max cua ba so x=%8.2f y=%8.2f z=%8.2f la: %8.2f",
x,y,z,max3s(x,y,z)); } /* Kết thúc hàm main*/ float max3s(float a,float b,float c)
{ float max; max=a; if (max<b) max=b; if (max<c) max=c; return (max); } /* Kết thúc hàm max3s*/