Tải bản đầy đủ (.pdf) (24 trang)

Ip 07 array in c

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (487.83 KB, 24 trang )

Mảng
GV. Nguyễn Minh Huy

Nhập mơn lập trình - GV. Nguyễn Minh Huy

1


Nội dung




Khái niệm mảng
mảng..
Thao tác trên mảng
mảng..
Chuỗi ký tự.
tự.

Nhập môn lập trình - GV. Nguyễn Minh Huy

2


Nội dung




Khái niệm mảng.


mảng.
Thao tác trên mảng
mảng..
Chuỗi ký tự.
tự.

Nhập môn lập trình - GV. Nguyễn Minh Huy

3


Khái niệm mảng


Xét chương trình sau:
sau:


Nhập 5 số nguyên
nguyên,, sau đó xuất 5 số vừa nhập
nhập..




Khai báo 5 biến int a, b, c, d, e.

Nhập 50 số nguyên
nguyên,, sau đó xuất 50 số vừa nhập
nhập..



Khai báo 50 biến int!!
int!!

 Làm sao khai báo nhiều biến cùng lúc?
lúc?
 Mảng
Mảng..

Nhập môn lập trình - GV. Nguyễn Minh Huy

4


Khái niệm mảng


Mảng trong ngôn ngữ C:
Mảng là một dãy biến có cùng kiểu
kiểu..
 Các biến trong dãy là phần tử mảng
mảng..
 Khai báo
báo::


liệu>
> <Tên mảng>[

mảng>[ <Số phần tử>
tử> ];
<Số phần tử>:
tử>: phải là một hằng số.
số.
int m1[
m1[ 10 ]];;
float m2[
m2[ 50 ]];;

// Dãy 10 số nguyên
nguyên..
// Dãy 50 số thực
thực..

int N;
float m3[
m3[ N ]];;

// Sai

const int K = 100;
float m4[
m4[ K ]];;

// Đúng

Nhập mơn lập trình - GV. Nguyễn Minh Huy

5



Khái niệm mảng


Mảng trong ngôn ngữ C:


Sau khi khai báo
báo,, phần tử mảng có giá trị bao nhiêu
nhiêu?
?
int m[ 5 ]];;



m

?

?

?

?

?

Khởi tạo giá trị mảng
mảng::


liệu>
> <Tên mảng>[
mảng>[<
<Số phần tử>
tử>] = { <Giá trị PT1>,
PT1>, <Giá trị PT2>,
PT2>, Y };
int m1[5] = { 1, 2, 3, 4, 5 };

m1

1

2

3

4

5

// Khởi tạo tất cả phần tử

int m2[5] = { 1, 2 };

m2

1


2

0

0

0

// Khởi tạo vài phần tử đầu
// các phần tử sau tất cả = 0

int m3[5] = { 0 };

m3

0

0

0

0

0

// Khởi tạo tất cả = 0

int m3[ ] = { 1, 2, 3, 4, 5 };


m3

1

2

3

4

5

// Tự động biết số phần tử

Nhập mơn lập trình - GV. Nguyễn Minh Huy

6


Khái niệm mảng


Mảng trong ngôn ngữ C:


Truy xuất phần tử mảng
mảng::
mảng>
> [ <Chỉ số mảng>

mảng> ]
mảng>:
>: một số nguyên từ 0 đến <Số phần tử>
tử> - 1.
int a[ 10 ] = { 0 };

a

0
0

1
0

2
0

3
0

4
0

5
0

6
0


7
0

8
0

9
0

a[ 0 ] = 5;
a[ 1 ] = 6;
a[ 2 ] = a
a[[ 0 ] + a
a[[ 1 ];
a[ -1 ] = 7;
a[ 10 ] = 8;

Nhập mơn lập trình - GV. Nguyễn Minh Huy

// Sai
// Sai

7


Khái niệm mảng


Mảng trong ngôn ngữ C:



Truyền tham số mảng
mảng::






Khai báo tham số mảng giống biến mảng
mảng..
void foo(
foo( int a[ 100 ], int size );
Khai báo tham số mảng có thể bỏ số phần tử.
tử.
void foo(
foo( int a[ ], int size );
Phần tử mảng có thể bị thay đổi sau khi ra khỏi hàm
hàm..

void foo(
foo( int a[ ], int size )
{
a[ 2 ] = 9;
a[ 5 ] = 8;
}

void main()
{
int a[ 100 ] = { 0 };

foo
foo(( a, 100 );
// a[2], a[5] bị thay đổi
đổi..
}

Nhập mơn lập trình - GV. Nguyễn Minh Huy

8


Nội dung




Khái niệm mảng
mảng..
Thao tác trên mảng
mảng..
Chuỗi ký tự.
tự.

Nhập môn lập trình - GV. Nguyễn Minh Huy

9


Thao tác trên mảng



Cách thức chung
chung::


B1: Duyệt mảng
mảng..





Dùng vòng lặp + biến đếm.
đếm.
Mỗi vòng lặp  xét một phần tử.
tử.

B2: Thao tác trên từng phần tử.
tử.


Dùng biến đếm truy xuất phần tử.
tử.

// Duyệt mảng M có kích thước N.
for ( int i = 0; i < N; i++ )
{
<Lệnh truy xuất phần tử M[ i ]>;
}


Nhập mơn lập trình - GV. Nguyễn Minh Huy

10


Thao tác trên mảng


Nhập mảng
mảng::
// Nhập mảng số nguyên a, kích thước n
void nhapMang
nhapMang(( int a[ ], int &n )
{
printf(“
printf
(“Nhap
Nhap kich thuoc = “);
scanf(“%d”,
scanf
(“%d”, &n);
&n);
for (int
(int i = 0; i < n; i++
++))
{
printf(“
printf
(“Nhap
Nhap phan tu %d = “, i);

scanf(“%d”,
scanf
(“%d”, &a[ i ]);
}

#define MAX

100

void main()
{
int a[ MAX ], size1;
int b[ MAX ], size2;
nhapMang(a, size1);
nhapMang(a,
nhapMang(b,
nhapMang
(b, size2);
}

}

Nhập mơn lập trình - GV. Nguyễn Minh Huy

11


Thao tác trên mảng



Xuất mảng
mảng::
// Xuất mảng số nguyên a, kích thước n
void xuatMang
xuatMang(( int a[ ], int n )
{
for ( int i = 0; i < n; i++ )
printf(“%d
printf
(“%d “, a[ i ]);
}

#define MAX

100

void main()
{
int a[ MAX ], size1;
int b[ MAX ], size2;
nhapMang(a, size1);
nhapMang(a,
nhapMang(b,
nhapMang
(b, size2);
xuatMang(a, size1);
xuatMang(a,
xuatMang(b,
xuatMang
(b, size2);

}

Nhập môn lập trình - GV. Nguyễn Minh Huy

12


Thao tác trên mảng


Tính tổng phần tử mảng
mảng::
// Tính tổng mảng a, kích thước n
long tinhTong
tinhTong(( int a[ ], int n )
{
long tong = 0;
for ( int i = 0; i < n; i++ )
tong += a[ i ];

#define MAX

100

void main()
{
int a[ MAX ], size1;
int b[ MAX ], size2;
nhapMang(a, size1);
nhapMang(a,

nhapMang(b,
nhapMang
(b, size2);

return tong;
}

long tong1 = tinhTong
tinhTong(a,
(a, size1);
long tong2 = tinhTong
tinhTong(b,
(b, size2);
}

Nhập mơn lập trình - GV. Nguyễn Minh Huy

13


Nội dung




Khái niệm mảng
mảng..
Thao tác trên mảng
mảng..
Chuỗi ký tự.

tự.

Nhập môn lập trình - GV. Nguyễn Minh Huy

14


Chuỗi ký tự


Chuỗi ký tự trong C:
Chuỗi ký tự = mảng ký tự + phần tử cuối ‘\0’
0’..
 Chiều dài chuỗi = số phần tử mảng – 1;
 Khai báo chuỗi
chuỗi::


char <Tên chuỗi>
chuỗi> [ chuỗi>
> + 1 ];
0
s1 ?

char s1[
s1[ 5 ]];;


1

?

2
?

3 4
? \0

Khởi tạo chuỗi
chuỗi::
char chuỗi>
> [ ] = “<
Chuỗi khởi tạo>”
tạo>”;;

char s2[ ] = “Hello”;

Nhập mơn lập trình - GV. Nguyễn Minh Huy

0
s1 H

1
e

2
l


3
l

4 5
o \0

// Khởi tạo chuỗi

15


Chuỗi ký tự


Thao tác trên chuỗi ký tự:
tự:


Nhập chuỗi
chuỗi::






scanf(“%s”, &
scanf(“%s”,
&chuoi

chuoi).
).
 Chỉ nhập từ đầu tiên
tiên..
gets(chuoi
gets(
chuoi);
);
 Nhập nguyên chuỗi
chuỗi..

#define MAX

void main()
{
char s1[
s1[ MAX ];
char s2[
s2[ MAX ];
printf(“Nhap
printf(“
Nhap chuoi s1 = “);
scanf(“%s”,
scanf
(“%s”, &s1);
printf(“
printf
(“Nhap
Nhap chuoi s2 = “);
gets(s1);


Xuất chuỗi
chuỗi::



100

printf(“%s”, chuoi).
printf(“%s”,
chuoi).
puts(chuoi
puts(
chuoi).
).

printf(“Chuoi s1 = %s”,
printf(
%s”, s1)
s1);;
puts(s2);
}

Nhập mơn lập trình - GV. Nguyễn Minh Huy

16


Chuỗi ký tự



Thao tác trên chuỗi ký tự:
tự:


Thư viện string.h>:
>: #include <string.h>
string.h>


strlen((chuoi
strlen
chuoi):
): đếm chiều dài chuỗi
chuỗi..
char s1[ ] = “Hello World”;
World”;
// Tự thêm ‘\0’ ở cuối.
cuối.
char s2[ ] = “Hello World\
World\n”;
// Tự thêm ‘\0’ ở cuối.
cuối.
char s3[ ] = { ‘H’, ‘e’, ‘l’, ‘l’, ‘o’, ‘ ‘, ‘W’, ‘o’, ‘r’, ‘l’, ‘d’, ‘\
‘\n’, ‘\
‘\0’ };
int chieuDai1 = strlen
strlen(s1)
(s1);;

int chieuDai2 = strlen
strlen(s2)
(s2);;
int chieuDai3 = strlen(s3)
strlen(s3);;

Nhập mơn lập trình - GV. Nguyễn Minh Huy

// chieuDai1 = 11
// chieuDai2 = 12
// chieuDai3 = 12

17


Chuỗi ký tự


Thao tác trên chuỗi ký tự:
tự:


Viết hoa chữ cái đầu mỗi từ:
từ:

#include <string.h>
>

#define MAX 100


void vietHoa
vietHoa(( char s[ ] )
{
for (int
(int i = 0; i < strlen
strlen(s)
(s);; i++)
if ( s[ i ] >= ‘a’ && s[ i ] <= ‘z’ &&
( i == 0 || s[ i - 1 ] == ‘ ‘ ) )
s[ i ] = s[ i ] - 32;
}

void main()
{
char s[MAX];
printf(“Nhap
printf(“
Nhap chuoi s = “);
gets(s);
vietHoa(s);
vietHoa
(s);
printf(“%s
printf
(“%s\\n”, s);
}

Nhập mơn lập trình - GV. Nguyễn Minh Huy


18


Tóm tắt


Khái niệm mảng
mảng::
Dãy biến cùng kiểu
kiểu..
 Các biến trong dãy là phần tử mảng
mảng..





Thao tác trên mảng
mảng::




Thao tác chung
chung:: duyệt + thao tác từng phần tử.
tử.

Chuỗi ký tự:
tự:
Mảng ký tự kết thúc bằng ‘\0’.

 Nhập xuất
xuất:: printf,
printf, scanf,
scanf, gets, puts.
 Đếm chiều dài
dài:: strlen (thư viện string.h>).
>).


Nhập môn lập trình - GV. Nguyễn Minh Huy

19


Bài tập


Bài tập 7.1:
Viết chương trình C như sau
sau::
(tổ chức theo dạng hàm và chia làm nhiều file):
- Nhập vào mảng N số nguyên
nguyên..
- Hãy cho biết
biết::
a) Có bao nhiêu số chẵn trong mảng
mảng..
b) Có bao nhiêu số âm trong mảng
mảng..

c) Có bao nhiêu số ngun tố trong mảng
mảng..

Nhập mơn lập trình - GV. Nguyễn Minh Huy

20



Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×