Kthut lp trình(6):
ngôn nglp trình C
Khoa Công nghthông tin
Hc vin Kthut Quân s
100-Hoàng Quc Vit Ni
22-Feb-13 2
Kiu mng
Khi làm vic vi các cu trúc dliu dng dãy hay
danh sách các phn t, ta sdng kiu mng
(array)
Mng 1 chiu: mt vec-tơcác phn t
Mng nhiu chiu: mt bng các phn t
Mng mt chiu
Dãy các phn t cùng kiu dliu
Các phn t được sp xếp theo trt tnhtđịnh
22-Feb-13 3
Kiu mng
pháp khai báo mng mt chiu
kiu_d_liu tên_mng[s_phn_t_ca_mng];
d
int ai[10];
float af[100];
Sphn tmng được xác định khi khai báo
Sdng toán t[] để truy cp phân tca mng
d: ai[2], af[10], …
Chscác phn tmng đượcđánh st0
22-Feb-13 4
Kiu mng
d
Nhp danh sách các giá trnguyên vào mt mng, sau đó
tìm phn t giá trnhnht trong mng
#include <stdio.h>
#define N 10
main()
{
int x[N], min;
int i;
for (i=0; i <= N-1; i++){
printf(" x[%d]= ", i);
scanf("%d", &x[i]);
}
min = x[0];
for (i=1; i < N; i++)
if (min > x[i]) min = x[i];
printf("\n min= %d", min);
}
22-Feb-13 5
Kiu mng
Khi to mng
Mng th đưc khi to giá trngay khi khai báo
pháp
kiu_d_liu tên_mng[s_phn_t_ca_mng] =
{danh_sách_các_giá_tr_khi_to};
Khi khai báo mng cókhi to giátrthìcóthkhông cn
chra sphn tmng
Víd
int ai[3] = {2, 4, 5};
Hoc
int ai[] = {2, 4, 5}; /*không khai báo sphn tmng*/
22-Feb-13 6
Kiu mng
Định nghĩa kiu mi tkhóa typedef
thsdng tkhóa typedef để định nghĩa các kiu
dliu mi
Kiu dliu mi s được sdng để khai báo dliu
d
typedef int kieunguyen;
typedef float mangthuc10[10];
sdng
kieunguyen x, a[100];
mangthuc10 x, y;
22-Feb-13 7
Kiu mng
Mng địa ch
Toán t& dùng để lyđa chmt biến
Toán t& cũng đưc dùng để lyđịa chca mt phn t
mng
Các phn ttrong mng được btrí các ô nhliên tiếp
nhau trên bnh
Nếu biếtđượcđịa chphn tthú i sxác định đượcđịa ch
phn tthú i+1
Địa chphn t đầu tiên địa chca mng
Tên mng mang địa chca mng đó
22-Feb-13 8
Kiu mng
Mng địa ch
d
float a[100];
float *pa;
Các cách viết sau tương đương:
a &a[0]
a + i &a[i]
*(a + i) a[i]
Các phép n hp l
pa = a;
pa = &a[0];
22-Feb-13 9
Kiu mng
Mng tham sca hàm
Khi sdng mng tham sca hàm, ta thkhai báo,
chng hn:
int a[]
Hoc
int *a
Nhưthế, hai cách sau tương đương:
f(int a[]) { … }
f(int *a) { … }
Khi sdng, có thgi:
f(a);
Hoc
f(&a[0]);
22-Feb-13 10
Kiu mng
Mng tham sca hàm
d
void nhap_mang(int *x, int n)
{
int i;
/* Đc các giá trmng */
for (i=0; i <= n-1; i++)
{
printf(" x[%d]= ", i);
scanf("%d", &x[i]);
}
}