1. Trang chủ
  2. » Giáo án - Bài giảng

Kỹ thuật lập trình 2014

116 0 0

Đ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

Tiêu đề Kỹ Thuật Lập Trình 2014
Trường học Hutech
Chuyên ngành Kỹ Thuật Lập Trình
Năm xuất bản 2014
Thành phố TP.HCM
Định dạng
Số trang 116
Dung lượng 2,89 MB

Nội dung

theo ki u con tr.. quy, các ki quy.. Hàm có côn3.. putc ch hình.. Cú pháp: char *strncpychar *Des, const char *Source, size_t n 11.. Cú pháp: char toupper char c 15.

Trang 1

I H C CÔNG NGH TP.HCM

Biên

Trang 3

I IV

U 1

1.1 KHÁI 1

1.1 1

2

3

4

6

1.1.6 7

1.2 KÝ CÁC KÝ 9

9

11

1.2.3 Các thao tác trên chu i ký t 13

1.2.4 M t s hàm x lý chu i (trong < string.h>) 13

TÓM T 21

CÂU ÔN 21

U 23

2.1 KHÁI 23

2.2 CÁCH KHAI BÁO HAI 23

2.2.1 Cú pháp 23

24

24

2.3 L CHO HAI 25

25

27

2.4 CHO HAI 28

28

30

2.5 VÀI TOÁN TRÊN HAI 32

2.5.1 Bài toán 1 32

2.5.2 Bài toán 2 33

TÓM 34

CÂU ÔN 35

36

3.1 KHÁI 36

3.2 CÁCH KHAI BÁO TRÚC 37

3.2.1 Cú pháp 37

37

38

38

3.3 TRUY VÀO TRÚC 39

3.3.1 Cú pháp 39

39

Trang 4

39

3.4 CHO CÓ TRÚC 40

40

41

3.5 42

42

42

3.6 TRÚC 42

3.6.1 Bài toán 1 42

3.6.2 Bài toán 2 44

3.7 VÀI TRÊN TRÚC 44

3.7.1 Bài toán 1 44

3.7.2 Bài toán 2 44

TÓM 45

CÂU ÔN 45

47

4.1 KHÁI Ô VÀ CON 47

4.2 KHAI BÁO VÀ S CON TR 48

4.2.1 Khai báo bi con tr 48

48

4.3 CÁC PHÉP TOÁN TRÊN CON 51

4.3.1 Phép gán 51

52

52

4.3.4 Phép so sánh 53

4.4 CON PHÁT VÀ THU 53

54

56

56

4.5 CON VÀ 57

4.5.1 Truy p các ph ng theo d 57

ng ph qu n lý b theo ng m ng 58

4.6 CON VÀ HAI 62

4.6.1 Bài toán 2 62

4.6.2 Cách 1 63

4.6.3 Cách 2 66

4.7 CON CÓ TRÚC (STRUCT ) 69

69

70

71

TÓM 73

CÂU ÔN 73

77

5.1 KHÁI 77

5.2 PHÂN HÀM QUY 79

79

81

82

83

5.3 BÀI TOÁN QUY 84

85

Trang 5

5.4 XÉT 87

5.5 TRÚC VÀ QUY 88

TÓM 88

CÂU ÔN 89

BÀI 6: T P TIN (FILE) 90

6.1 KHÁI 90

6.2 CÁC THAO TÁC TRÊN TIN 91

6.2.1 Khai báo bi n t p tin 91

6.2.2 M t p tin 92

óng p tin 93

6.2.4 Ki tra i t p tin hay a? 93

6.2.5 Di chuy con tr t p tin v u p tin - Hàm rewind() 93

6.3 TRUY C P TIN V B N 94

6.3.1 Ghi d li lên p tin v n n 94

6.3.2 c li t t p tin v 95

6.4 TRUY C P TIN PHÂN 98

6.4.1 Ghi d li lên t p tin phân - Hàm fwrite() 98

c li t t p tin nh phân - Hàm fread() 98

6.4.3 Di ch con tr t p tin - Hàm fseek() 98

TÓM 105

CÂU ÔN 105

TÀI THAM 108

Trang 6

Môn K L p Trình cung c cho sinh viên ng k th b và

Trang 7

tìm ki m, s p x p, thêm ph n t , xóa ph n t theo ki u con tr Con tr v i ki u

d li u có c u trúc

Bài 5

phân

Trang 8

Trang 9

BÀI 1:

Khái ni m v ki u d li u m ng d ng c a nó;

Cách khai báo bi n ki u m ng và các phép toán trên các ph n t c a m ng;

i thu t trên m ng 1 chi m, s p x p, thêm ph n

ta s d ng ki u m ng làm ki u ph n t cho m t m ng (trong tr ng h p này

ta g i là m ng c a m ng hay m ng nhi u chi u)

Ta có th chia m ng làm 2 lo i: m ng 1 chi u và m ng nhi u chi u

c a m ng m t chi u có giá tr không ph i là m t m ng khác

Trang 10

- S ph n t : là m t h ng s nguyên, cho bi t s l ng ph n t t i trong

songuyen int songuyen [10] ;

sothuc float sothuc [15] ;

daykytu char daykytu [30] ;

Cú pháp

Khi khai báo, không cho bi t rõ s ph n t c a m ng, ki u khai báo này

m ng là tham s hình th c c a hàm

Trang 11

Cách 1 V a khai báo v a gán giá tr

Cú pháp:

<Ki u> <Tên m ng> []= {Các giá tr cách nhau b i d u ph y}

N u v a khai báo v a gán giá tr thì m c nhiên C s hi u s ph n t c a

m ng là s giá tr mà chúng ta gán cho m ng trong c p d u {}

M i ph n t c a m ng c truy xu t thông qua Tên bi n m ng theo sau

là ch s n m trong c p d u ngo c vuông [ ]

Ch s c a ph n t m ng là m t bi u th c mà giá tr là ki u s nguyên

V i cách truy xu t theo ki u này, Tên bi n m ng[Ch s ] có th coi n là

m t bi n có ki u d li u là ki u c ch ra trong khai báo bi n m ng

float t=10.0;

Trang 13

for ( int i =0 ; i<n ; i++)

Trang 16

}

Trang 17

for ( int i= 0 ; i<n ; i++ )

if ( a[i] < 0 )

Trang 19

Chú ý: Chu i c khai báo là m t m ng các ký t nên các thao tác trên

m ng có th áp d ng i v i chu i ký t

1.2.2.2 Cách khai báo chu i

1 Khai báo chu i :

Cú pháp : char < tên bi n > [ chi u dài t i ]

Trang 20

Ví d : char Hoten [20];

Cú pháp: char <Bi n> ng chu

Trang 21

1.2.3 Các thao tác trên chu i ký t

1.2.3.1 Nh p xu t chu n < stdio.h>

1 Nh p : scanf

Ví d : scanf

chu i không có kho ng tr ng

hàm gets fflush ( stdin) hay flushall ( )

1.2.4 M t s hàm x lý chu i (trong < string.h>)

Trang 22

Cú pháp: void gotoxy( int x,int y)

4 Nh p xu t chu i v i hàm scanf và printf

printf("\nNhap chuoi 1 : "); gets(s1);

printf("Nhap chuoi 2 : "); gets(s2);

strcat(s1,s2);

printf("Xuat chuoi 1 : %s",s1);

Trang 23

if (p != NULL) printf("\nchi so cua ky tu : %d",(int)(p-s));

else printf("\nKhong tim thay!");

Trang 24

3

8 So sánh chu i - Hàm stricmp()

Hàm này th c hi n vi c so sánh trong n ký t u tiên c a 2 chu i s1 và

Cú pháp: int stricmp (const char *s1, const char *s2)

9 Hàm strcpy :

Cú pháp: char *strcpy (char *Des, const char *Source)

#include "stdio.h"

#include "string.h"

void main() {

char s[50];

strcpy(s,"Truong Dai hoc Ky thuat");

printf("\nXuat chuoi : %s",s);

}

10 Hàm strncpy () : Sao chép m t ph n chu i

Cú pháp: char *strncpy(char *Des, const char *Source, size_t n)

11 Hàm strchr() : Trích m t ph n chu i

Cú pháp : char *strchr (const char *str, int c)

Trang 25

Ghi chú:

N u ký t ã ch nh không có trong chu i, k t qu tr v là NULL

K t qu tr v c a hàm là m t con tr , con tr này ch n ký t c c tìm

th y u tiên trong chu i str

12 Tìm ki m n i dung chu i - hàm strstr()

Hàm strstr() c s d ng tìm ki m s xu t hi n u tiên c a chu i s2 trong chu i s1

Cú pháp: char *strstr(const char *s1, const char *s2)

có ch a chu i s2 ho c giá tr NULL n u chu i s2 không có trong chu i s1

trich ra:

getch();

return 0;

}

13 L y chi u dài chu i v i hàm strlen()

Cú pháp : int strlen ( const char *s );

#include <stdio.h>

Trang 26

#include <string.h>

void main( ) {

char string [ ] = "Borland International";

printf("%d\n", strlen(string)); // k t qu 21 getch ( );

char Chuoi [255];

int Dodai;

printf("Nhap chuoi: ");gets(Chuoi);

Dodai = strlen(Chuoi) printf("Chuoi vua nhap: ");puts(Chuoi);

char newstr [35];

i h c Công Ngh for(int i = 0; i<strlen(str); i++)

newstr[i] = str[i];

getch () ; }

Trang 27

14 i m t ký t th ng thành ký t hoa - Hàm toupper()

ký t hoa

Cú pháp: char toupper (char c)

Ví d : Vi t ch ng trình nh p vào m t chu i ký t t bàn phím Sau ó s

#include<conio.h>

#include<stdio.h>

#include<string.h>

int main() {

Mu n chuy n i chu i ch hoa thành chu i toàn ch th ng, ta s d ng

Trang 28

17 i t chu i ra s , hàm atoi(), atof(), atol() (trong stdlib.h)

Cú pháp :

int atoi(const char *s): chuy n chu i thành s nguyên

long atol(const char *s): chuy n chu i thành s nguyên dài float

atof(const char *s) : chuy n chu i thành s th c

Ví d :

#include <string.h>

void main() {

char s[80] , *p ; gets(s);

p = strtok(s," ");

while(p) {

p = strtok(NULL," ");

} }

19 c chu i : char* strrev(char *s)

Ngoài ra, th vi n string.h còn h tr các hàm x lý chu i khác, ta có th

c thêm trong ph n tr giúp

Trang 31

BÀI 2:

-

- Cách khai báo bi n ki u m ng và các phép toán trên các ph n t c a m ng;

Trang 32

ch s n m trong c p d u ngo c vuông [ ][ ]

Ch s c a ph n t m ng là m t bi u th c mà giá tr là ki u s nguyên

V i cách truy xu t theo ki u này, Tên bi n m ng[Ch s ] [Ch s ] có th coi

n là m t bi n có ki u d li u là ki u c ch ra trong khai báo bi n m ng

Trang 41

long tinhtong ( int a[ ][100] , int m, int n )

{

long s =0 ;

for ( int i = 0 ; i<m ; i++ )

for ( int j=0; j< n ; j++ ) s=s+ a[i][j] ;

Trang 42

}

-

Trang 44

BÀI 3: K

-

- Cách tìm ki m và s p x p d li ucó c u trúc trên m ng m t chi u;

Trang 45

1 <Tên c u trúc>: là m t tên c t theo quy t c t tên c a danh

bi u; tên này mang ý ngh a s là tên ki u c u trúc

2 <Ki u> <Tr ng i > (i=1 n): m i ng trong c u trúc có d li u thu c

Trang 47

typedef struct phanso PS;

void nhapphanso (ps &x)

Trang 48

typedef struct phanso PS;

void nhapphanso (ps &x)

Trang 49

typedef struct DiemThi Diem ;

void nhapdiem (Diem &sv)

Trang 50

printf("\nMa so sinh vien : %s",sv.masv);

printf("\nMa mon hoc : %s",sv.mamh);

printf("\nLan thi : %d",sv.lanthi);

printf("\nDiem thi : %.1f ",sv.diem);

Trang 55

BÀI 4:

Khái ni m v con tr ;

Cách khai báo và s d ng bi n ki u con tr ;

M ng và các phép toán trên m ng m t chi u theo ki u con tr ;

M ng và các phép toán trên m ng hai chi u theo ki u con tr ;

i thu t trên m ng 1 chi u , 2 chi m, s p x p, thêm ph n t , xóa ph n t theo ki u con tr ;

Trang 56

4.2 KHAI BÁO VÀ S D NG BI N CON TR

Trang 60

NULL: là con tr a h Ta có th r ULL

Trang 61

te

Trang 62

{ printf("Not enough memory to allocate buffer\n");

exit(1); /* terminate program if out of memory */

}

strcpy(str, "Hello"); /* copy "Hello" into string */

printf("String is %s\n", str); /* display string */

free(str); /* free memory */

return 0;

}

Trang 63

/* allocate memory for string */

str = (char *) calloc(10, sizeof(char));

strcpy(str, "Hello"); /* copy "Hello" into string */

printf("String is %s\n", str); /* display string */

free(str); /* free memory */

Trang 65

typedef float KieuThuc;

Trang 66

printf("Phan tu thu %d: ",i);

Trang 74

: *a, *(a+1), *(a+2) ,

*(a+m-1)

void capphat ( int **a , int m ,int n)

Trang 75

: *a, *(a+1), *(a+2) ,

*(a+m-1)

void capphat ( int **a , int m ,int n)

Trang 79

printf("diem :");

scanf("%f ", &tam);

p->diem=tam;

printf("\nKet qua:");

printf("\nMa so sinh vien :%s", (*p).masv);

printf("\nMa mon hoc : %s", (*p).mamh);

printf("\nLan thi :%d", (*p).lanthi);

void nhap( DIEMTHI *px);

void xuat( DIEMTHI x);

void main()

Trang 80

printf("\nDiem thi:%.2f", x.diem); }

void nhap( DIEMTHI *px)

Trang 81

- Khái ni m v con tr ;

- Cách khai báo và s d ng bi n ki u con tr ;

- M ng và các phép toán trên m ng m t chi u theo ki u con tr ;

- M ng và các phép toán trên m ng hai chi u theo ki u con tr ;

- i thu t trên m ng 1 chi u , 2 chi m, s p x p, thêm ph n t , xóa ph n t theo ki u con tr ;

Trang 86

printf("\nGoi ham de quy: %d != %d ",n,giaithua_dequy(n));

printf("\nGoi ham khong de quy: %d != %d ",n,giaithua_khongdequy(n)); getch();

return 0;

}

Ta có :

S(n) = 1 + 2 + 3 + 4 + + (n-1)+ n = S(n-1) + n ;

Trang 87

long tinhtong (int n)

Trang 95

void MergeSort (int a[], int Left, int Right)

Trang 96

Cách khai báo và vi t hàm theo ki quy

m ng 1 chi u b quy

Trang 98

BÀI 6: T P TIN (FILE)

các ký t này c tr d i d ng mã Ascii m c bi t là d li u c a t p tin

c l u tr thành các dòng, m i dòng c k t thúc b ng ký t xu ng dòng (new

dòng, mã Ascii là 13) và LF (Line Feed - Xu ng dòng, mã Ascii là 10) M i t p tin

c k t thúc b i ký t EOF (End Of File) có mã Ascii là 26 (xác nh b i t h p phím Ctrl + Z)

T p tin v b n ch có th truy xu t theo ki u tu n t

2 T p tin nh ki u (Typed File): là lo i t p tin bao g m nhi u ph n t

có cùng ki u: char, int, long, c u tr và c l u tr trên a d i d ng m t

Trang 99

chu i các byte liên t c

tác ng lên t p tin mà thôi

Bi n t p tin: là m t bi n thu c ki u d li u t p tin dùng i di n cho m t

s là bi n t p tin i di n cho t p tin ó

có m t v trí c a t p tin mà t i ó vi c c/ghi thông tin s x y ra Ng i ta hình dung có m t con tr ang ch n v trí ó và t tên nó là con tr t p tin

Sau khi c/ghi xong d li u, con tr s chuy n d ch thêm m t ph n t v phía cu i t p tin Sau ph n t d li u cu i cùng c a t p tin là d u k t thúc t p tin EOF (End Of File)

6.2 CÁC THAO TÁC TRÊN T P TIN

1 Khai báo bi n t p tin

2 M t p tin b ng hàm fopen()

3 Th c hi n các thao tác x lý d li u c a t p tin b ng các hàm c/ghi d

li u

6.2.1 Khai báo bi n t p tin

Ví d : FILE *f1,*f2;

Trang 100

6.2.2 M t p tin

Cú pháp: FILE *fopen(char *Path, const char *Mode)

Trong ó:

- Type: chu i xác nh cách th c mà t p tin s m Các giá tr có th c a Mode:

Trang 101

Trong ví d trên, ta có s d ng câu l ki tra k xác nh m tin có thành công hay không?

6.2.5 D i chuy con tr t p tin v u p tin - Hàm rewind()

c i t p tin Mu n cho con tr quay v u tin nh khi m nó, ta s d ng

hàm rewind()

Trang 102

Trong ó, tham c c a mã Ascii c a m t ký nào ó Mã này c ghi lên

2 Hàm fputs()

Trong ó, buffer là con có k char ch v trí tiên c a chu i ký

Trang 103

fputs("Em oi Ha Noi pho.\n",f);

fputs("Ta con em, mui hoang lan; ta con em, mui hoa sua.",f);

Trang 104

Cú pháp: int getc ( FILE *f )

i con tr

2 Hàm fgets()

Cú pháp: char *fgets (char *buffer, int n, FILE *f)

này c ng c a vào chu i k qu hay g ký t k thúc EOF (ký t này

Trang 105

Ví d : Vi ch trình chép t tin D:\Baihat.txt trên sang p tin D:\Baica.txt

return 0;

}

Trang 106

6.4 TRUY C P T P TIN NH PHÂN

Cú pháp: size_t fwrite(const void *ptr, size_t size, size_t n, FILE*f)

Cú pháp: size_t fread (const void *ptr, size_t size, size_t n, FILE *f)

Trang 107

Ta c ng có th i u khi v di chuy n con tr t p tin v trí ch nh bhàm fseek()

Cú pháp: int fseek ( FILE *f, long offset, int whence )

Ví d 1: Vi ch trình ghi lên t tin CacSo.Dat 3 giá tr s (th c,

Trang 108

Ví d 2: M i sinh viên c qu n lý ít 2 thông tin: mã sinh viên và h

t bàn phím r i ghi lên t tin SinhVien.dat, c d li u t tin SinhVien.dat r i

th sách lên màn hình, tìm ki h tên c a m t sinh viên nào ó d a

Trang 110

printf("Bam phim bat ky de tiep tuc");

Trang 111

printf("Tim khong thay sinh vien co ma %s",MSSV);

printf("\nBam phim bat ky de tiep tuc!!!");

Trang 113

2 Ten (Tên hàng: char[20])

Câu 124: ch ng trình cho phép nh bàn phím và ghi vào 1 p tin tên

Trang 115

Câu 127: Cho file :

Trang 116

[8] Brain W Kernighan & Dennis Ritchie, The C Programming Language, Prentice Hall Publisher, 1988

Ngày đăng: 06/02/2024, 07:19