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

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

33 247 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

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Chương 5 KIỂU DỮ LIỆU MẢNG, XÂU KÝ TỰ, CON TRỎ... phân tử thông qua tên mảng và chỉ số của phân tử... Khai báo mảng trong C = Cu phap: m lrong đó: kiêu đữ liệu là kiêu dữ liệu của phâ

Trang 1

LẬP TRÌNH C

GV: Ngo Ngoc Thanh Khoa Cong nghé thong tin - DHDL

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

Trang 3

Chương 5

KIỂU DỮ LIỆU MẢNG, XÂU KÝ

TỰ, CON TRỎ

Trang 4

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

Kiêu dữ liệu con trỏ

Trang 5

tử cân xử lý trong chương trình

m iruy cập từng : phân tử thông qua tên mảng và chỉ số của phân tử

Trang 6

Khai báo mảng trong C

= Cu phap:

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:

int m[5];

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ử: ”);

scanf (“%d”,&n); //gia sw n<=10

Trang 10

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

Pbrintf£ (`Cho biệt sô lượng phần tử: “);

Trang 12

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:

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

Trang 13

m-1

Matranmxn

x[0][0] x|0][H| x[0][2] x[0][n-1] x[1][0] x{1}[1] x[1][2] x[1][n-1] x[2][0] x[2][1] x[2][2] x[2][n-1]

x[m-1][0] | xfm-1][1] | x[m-1][2] x[m-1] [n-1]

Trang 14

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

scanf ("2d 3d, &m, &n) ;

Trang 15

Khai báo mảng với giá trị khởi đầu

Trang 16

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

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

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

3 Kiêu đữ liệu con trỏ

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

Ky tu null (0) đặt ở cuối xâu dé đánh dâu kết thúc xâu

Trang 18

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

= Xuat xdu ra man hinh: printf(“%s”,str) hodc puts(str)

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

¡>0 nêu sl>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ự

.~ _ *

3 Kiéu dit liéu con tro

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ỏ

m Việc thao tác với dữ liêu sẽ mêm dẻo hơn với con trỏ, chương trình chạy nhanh hơn

Trang 22

Khai báo 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

scant(“%d”,p); //nhap so nguyén vao 1 (do p luu dia chi cua 1)

Trang 24

Phép toán với con trỏ

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ữ

liệu ma con tro p tro vao

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ữ

lại.

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

Trang 28

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

m Gia su co khai bao:

int x[{max row][max col];

Trang 29

VD: Hàm cộng 2 mảng 1 chiêu //Hai ham sau đêu làm nhiệm vụ cộng hai mảng a và b kết quả lưu vào mảng c //O day, ching ta st dung phương pháp truyền đ/e của mảng cho hàm

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)

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”):

m gets(s); puts(s):

Trang 32

VD: Tách từ đầu tiên của xâu

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

else{strtmp[iJ=NULL; //chén dau két thiic xdu vdo sau tir dau tién

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

trính trong ma trận

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

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w