1. Trang chủ
  2. » Kỹ Thuật - Công Nghệ

kiểu dữ liệu mảng xâu kí tự con trỏ

33 245 0
Tài liệu được quét OCR, nội dung có thể không chính xác

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 33
Dung lượng 1,33 MB

Nội dung

Trang 1

LẬP TRÌNH C

GV: Ngo Ngoc Thanh

Trang 2

Nội dung môn học

Chương [l: Các khái niệm cơ bản của tin học Chương 2: Tổng quan ngôn ngữ lập trình C Chương 3: Các câu trúc điều khiến

Chương 4: Sử dụng hàm trong C

Chương 5: Kiểu dữ liệu mảng, xâu ký tự, con trỏ Chương 6: Kiểu đữ liệu struct

Trang 3

Chương 5

Trang 4

1 2 2 Kiểu dữ liệu mảng Kiểu dữ liệu mảng

Kiêu dữ liệu xâu ký tự

Trang 5

Je Na “A ?

Khái niệm vẽ màng

m Miảng là kiều dữ liệu bao gồm một số hữu hạn các phân

tử có cùng kiểu dữ liệu

a SO lượng phân tử của mảng được chỉ ra ngay từ khi khai báo Số lượng này phải lớn hơn hoặc băng số lượng phân tử cân xử lý trong chương trình

Trang 6

Khai báo mảng trong C

= Cu phap:

kiểu dữ liệu tên biên mảng[sô lượng phần tử];

m lrong đó:

kiêu đữ liệu là kiêu dữ liệu của phân tử tên biến mảng là tên của biến mảng

sô lượng _phân tử là số lượng phân tử của biên mảng (sô lượng tôi đa)

m Ví dụ: khai báo một mảng 5 số nguyên có tên m:

Trang 7

AN ?

Truy cap mang

m Chúng ta truy cập tới từng phân tử thông qua tên mảng và chỉ sô theo ký pháp:

tên biến mảng [chỉ số]

m Đối với C, phân từ đâu tiên của mảng có chỉ sô là 0

= Môi phân tử của mảng có thề được coi như là một biên có kiều dữ liệu là kiểu phần tử của mảng và mọi thao tác với biến kiêu đó đêu có thê áp dụng với phan tu cua mang

(doc, ghi, gan )

m Muôn đọc/1n mảng cân phải đọc/1n từng phân tử của mảng

m|0[ | m{ỊI| | mị|2| | mị|3| | mị|4|

mảng m có 5 phân tử nguyên

Trang 8

VD: Đọc, in dãy số nguyên

#include <stdio.h>

int a[10];//mang a co 10 phan tử đánh số từ 0 9

int i,n;//con chạy i, số lượng phân tử của dãy số n

void main()f

//nhập mảng (nhập số phân tử thực tế trước)

printf(*Cho biết số lượng phân tử: ”);

Trang 10

Sắp xếp dãy số #include <stdio.h> int a[50]; int i,j,n,tg; void main() {

//nhập mảng (nhập sô phân tử thực tê trước)

Trang 12

Mảng nhiều chiều

m Những ví dụ trình bày từ các slides trước đêu sử dụng mảng một chiêu

m lrên thực tê, có những đôi tượng nhiêu chiêu (vd: ma trận) Cân phải dùng đên mảng nhiều chiêu

m Khai báo mảng hai chiêu:

kiểu d1 tên biên mảng [m][n];

_¡ Trong đó:

m kiêu di là kiêu dữ liệu của phan tử

= m.n là số lượng hàng và cột của mảng (hằng số)

m Khai báo mảng 3,4 chiêu:

Trang 14

VD: Cộng 2 ma trận #include <stdio.h> f£loat a[10][10], b[10]1[10], c[10][10]; 1nt 1,1J,m,n; void main() {

printf (“Cong hai ma tran mxn, nhap m,n=`) ;

Trang 16

Kiểu dữ liệu xâu ký tự

1 Kiểu dữ liệu mảng

Trang 17

Xau ky tu trong C

m€ coi xâu ký tự như là một mảng ký tự

m Đề khai báo một xâu ký tự ta khai báo một mang

ký tự

m Ví dụ: khai báo xâu ký tự s có độ dài tôi đa là 30

char s[30]:

m Tổ chức lưu trữ xâu ký tự:

¡Xâu = chuỗi ký tự liên tiếp nhau

Trang 18

Nhập/ xuất xâu ký tự m Nhập xâu: _¡ Sử dụng scanf m Cú pháp: scanf(“%s”.biễn xau_kt): m Vị dụ: char str[10]:

scanf(“%s”.str): /không cần &str

a Neu người dùng nhập một xâu có dâu cách thì chi phân ký tự năm trước dấu cách đầu tiên được nhập cho xâu ký tự (vd: trong ví dụ trên, nếu nhập

xau “Viet Nam” roi go Enter thi s = “Viet” Phan con lại được day vao bo đệm)

| Su dung gets

a Cu phap: gets(s):

a Nhap duoc ca xau ky tu co dau cach

Trang 19

Thư viện string.h

Thư viện <string.h> chứa các hàm xử lý xâu ký tự

strlen(s): hàm trả về độ đài của xâu s

strcpy(sl,s2): sao chép xâu s2 sang xâu sÌ]

_¡ Vd: strepy(s, “Hello”); //s sẽ nhan xau “Hello”

_¡ Lưu ý: Không được gán s=“Hello "` mà phải dùng strcpy

strcat(s1,s2): nối xâu s2 vào cuôi xâu sÏ]

stremp(s1.s2): so sánh s1 và s2, kết quả trả về là

1 0 neu xau sl = xau s2

4 <0 néu s]<s2

Trang 20

Kiểu dữ liệu con trỏ

¡i Kiêu đữ liệu mảng

2 Kiêu dữ liệu xâu ký tự

.~ _ *

Trang 21

Khái niệm con trỏ

m Con trỏ là một kiêu dữ liệu đặc biệt, được sử dụng đê lưu địa chỉ của các biên trong bộ nhớ

= Con trỏ là một phần quan trọng của ngôn ngữ C m Việc truyền “tham biến” cho chương trình con can

phải thông qua con trỏ

Trang 23

Một số cú pháp

m Nếu p là một biến con trỏ thì:

_¡ *p là dữ liệu được chứa trong địa chi ma p lưu trữ

m Nếu x là một biến “bình thường” thì:

—¡ &x là địa chỉ của biến x trong bộ nhớ m Vị dụ:

int *p,1= 2; p=&1;

printi(“%d”,*p); //in ra gia tri cua 1

Trang 24

Phép toán với con trỏ 259 2 ` ; ` bộ nhở Gia su p la con tro, k la A mot so nguyen m Phép cong: p=ptk: _ip trỏ sang ô nhớ sau ô nhớ trước đó k ô nhớ m Phép trừ: p=p-k: —ï p trỏ sang ô nhớ trước ô nhớ p-1 p

trước do k 6 nhớ minh hoạ với p là con trỏ nguyên

¬ a bién nguyén = 2 Bytes * kích thước môi ô nhớ băng uy vies)

kích thước của biên co kiến dữ

Trang 25

“A

Truyén “tham bién” cho ham

m Như đã biết, hàm trong C chỉ cho phép truyền tham tri Các giá trị được truyền không bị thay đối

m Đề truyền “tham biên” cho hàm, thay vì truyền các biến, ta hãy truyền địa chỉ của chúng

hàm sẽ làm việc trên bản copy của địa chỉ truyền vào bản copy và bản gốc cùng trỏ vào một biến, do vậy nếu thay đồi nội dung của địa chỉ đó thì kết quả sẽ được giữ

Trang 27

Con trỏ và mảng 1 chiêu

= C coi bién mang | chiéu nhu mot hang con trỏ có: —ikiêu ô nhớ trỏ đến là kiêu phân tử của mảng

4 gia trị là địa chỉ phân tử đâu tiên (chỉ sô 0) của mảng

m Vị dụ:

int mỊ L0]:

int “p;

printf(“%đ”,*m); //viết ra phân tử đâu tiên của mảng m p=m: //sau câu lệnh này, có thể coi p là mảng m

Trang 28

Con trỏ và mảng 2 chiêu

m Gia su co khai bao:

Trang 30

VD: Hàm cộng 2 ma trận

#Include<stdio.h>

#define max cot 30: // số lượng cột tối đa #define max hang 30: // số lượng hàng tối đa

void cong míf(mnt a[|[max cot| Int b[|[max cot|] Int c[|[max_ cot]., Int m, Inf n) t int 1,]: for (=0:1<=m-1:1++) for (j=0:j<=n-1:}++) c[iIU]Fa[iI]+bfiUI: j void main() {

int x[max_ hang][max_ cot], y[max_ hang]||[max_ cot], zZ[max hang]|max_ cot], m, n:

//Nhap cac ma tran co kich thuoc m x n cong mt (x,y.Z,m,n):

//Viết z ra màn hình

Trang 31

Con trỏ và xâu ký tự

m€ coi xâu ký tự là một mảng ký tự nên:

— biến xâu ký tự có thê coi là một hăng con trỏ kiều ký tự

_ với khai báo char str[ 10]: không thê thực hiện lệnh gán

str=““Hello” vi str la hang con tro da duoc gan voi mot dia chi xac

dinh

m Khai báo con trỏ ký tự:

7 Cu phap: char *s; //s là tên biến con trỏ

7 Y nghia: s 1a con tro ky tu, chwa co gia trị, có thé gan cho s gia trị

nao do, vi du:

a s= “Hello”; //gan cho s địa chi cua xau “Hello”

a strcepy (s, “Hello”):

Trang 32

VD: Tách từ đầu tiên của xâu #include "stdio.h" #include ''string.h" char *firstword(char “str){ int isn; char *strtmp; strtmp=strepy(strtmp,str); while((strtmp[0]=="' ')& &(strlen(strtmp)!=0)) strtmp=strtmp+1; //b6 qua dau cach dau n=strlen(strtmp);i=0; while (1){

if ((strtmp[i]!='') && (i<=n-1)) i++;

Trang 33

° Nhập ma trận nxn

¢ - Tinh tong các phan tv chan trong ma tran

©Ổ - Tính tổng các phần tử thuộc 2 đường chéo

Ngày đăng: 30/10/2015, 18:18

TỪ KHÓA LIÊN QUAN

w