Bài tập môn Kỹ thuật lập trình - Chương trình cả năm

Bài tập trong các bài  
học  
Ví dụ  
char *pchar; short *pshort; long *plong;  
pchar ++; pshort ++; plong ++;  
Giả sử các địa chỉ ban đầu tương ứng của 3 con  
trỏ là 100, 200 và 300, kết quả ta có các giá trị  
101, 202 và 304 tương ứng  
Nếu viết tiếp  
plong += 5; => plong = 324  
pchar -=10; => pchar = 91  
pshort +=5; => pshort = 212  
2
char *a;  
short *b;  
long *c;  
Ví dụ  
Các con trỏ a, b, c lần lượt trỏ tới ô  
nhớ 1000, 2000 3000.  
Cộng các con trỏ với một số nguyên:  
a = a + 1;//con trỏ a dời đi 1 byte  
b = b + 1;//con trỏ b dời đi 2 byte  
c = c + 1; //con trỏ c dời đi 4 byte  
Chú ý  
++ -- có độ ưu tiên cao hơn * nên *p++  
tương đương với *(p++) tức là tăng địa chỉ mà  
nó trỏ tới chứ không phải tăng giá trị mà nó chứa.  
*p++ = *q++ sẽ tương đương với  
*p = *q;  
p=p+1;  
q=q+1;  
4
Ví dụ:  
#include <iostream.h>  
#include<conio.h>  
void main ()  
{
int a = 20, b = 15, *pa, *pb, temp;  
pa = &a; // con trỏ pa chứa địa chỉ của a  
pb = &b; // con trỏ pb chứa địa chỉ của b  
temp = *pa;  
*pa = *pb;  
*pb = temp;  
cout << "a = " << a << endl;  
cout << “b = ” << b;  
// kết quả xuất ra  
màn hình  
a = 15  
b = 20  
}
Con trỏ và mảng  
Truy cập các phần tử mảng bằng con trỏ  
Kiểu mảng  
&<Tên mảng>[0]  
Kiểu con trỏ  
<Tên con trỏ >  
&<Tên mảng> [<Vị <Tên con trỏ> + <Vị  
trí>]  
trí>  
<Tên mảng>[<Vị  
trí>]  
*(< Tên con trỏ > +  
<Vị trí>)  
6
char ch[10], *p;  
p = ch;  
Ví dụ  
p được gán địa chỉ của phần tử đầu tiên của mảng ch.  
p = ch;  
Để tham chiếu phần tử thứ 3 trong mảng ch, ta dùng một trong  
2 cách sau:  
ch[2]  
*(p+2)  
Ví dụ  
#include <iostream.h>  
#include <conio.h>  
void main ()  
{
int numbers[5], * p;  
p = numbers; *p = 10;  
p++; *p = 20;  
p = &numbers[2]; *p = 30;  
p = numbers + 3; *p = 40;  
p = numbers; *(p+4) = 50;  
for (int n=0; n<5; n++)  
cout << numbers[n] << ", ";  
}
Ví dụ  
int  
10  
20  
Numb  
30  
50  
40  
Numbers[5];  
ers  
int *p;  
p
p
p
p
p
p= Numbers;  
*p =  
20  
10;  
*p =  
20;  
p++;  
p =  
*p = 30;  
*p = 40;  
&numbers[2];  
p = numbers +  
3;  
p = numbers;  
*(p+4) =  
50;  
Con trỏ và xâu  
Ta có char tinhthanh[30] =“Da Lat”;  
Tương đương :  
 char *tinhthanh;  
 tinhthanh=“Da lat”;    
Hoặc: char *tinhthanh =“Da lat”;  
Ngoài ra các thao tác trên xâu cũng tương tự  
như trên mảng  
 *(tinhthanh+3) = “l”  
Chú ý : với xâu thường thì không thể gán trực  
tiếp như dòng thứ 3  
10  
Mảng các con trỏ  
Một ưu điểm khác của mảng trỏ là ta có thể  
hoán chuyển các đối tượng (mảng con, cấu  
trúc..) được trỏ bởi con trỏ này bằng cách  
hoán đổi các con trỏ  
Ưu điểm tiếp theo là việc truyền tham số trong  
hàm  
Ví dụ: Vào danh sách lớp theo họ và tên, sau  
đó sắp xếp để in ra theo thứ tự ABC.  
11  
Mảng các con trỏ  
12  
Con trỏ trỏ tới con trỏ  
Ví dụ: in ra một ma trận vuông và cộng mỗi phần tử của  
ma trận với 10  
13  
Bài tập  
Viết chương trình tính tng các phn tử  
mng sdng con trỏ  
int main() {  
 int numArray[6];  
   int i, sum = 0;  
   int *ptr = numArray;  
   cout << "Nhap 6 phan tu: " << endl;  
   for (i = 0; i < 6; i++)  
      cin >> *(ptr+i);  
   ptr = numArray;  
   for (i = 0; i < 6; i++) {  
      sum = sum + *ptr;  
      ptr++;  
   }  
   cout << "Tong cac phan tu cua mang la: " << sum << endl;    
       return(0);  
}
Bài tập  
Xây dng mt hàm tính đdài ca chui sử  
dng con tr.  
Bài tập  
Xây dng mt hàm tính đdài ca chui sdng con  
tr.  
int string_ln(char*p) /* p=&str[0] */  
{
   int count = 0;  
   while (*p != '\0') {  
      count++;  
      p++;  
   }  
   return count;  
}
Bài tập  
Viết chương trình nhp vào n snguyên,  
thc hin (sdng con tr):  
-
Tính giá trị trung bình, giá trị min  
max của các phần tử trong mảng  
-
Sắp xếp các phần tử trong mảng theo  
thứ tự tăng dần  
Ví dụ  
19  
Bộ nhớ động cho mảng 2 chiều  
Cách 1: Biểu diễn mảng 2 chiều thành mảng 1 chiều  
Gọi X là mảng hai chiều có kích thước m dòng và n  
cột. A là mảng một chiều tương ứng, khi đó  
 X[i][j] = A[i*n+j]  
20  
Tải về để xem bản đầy đủ
pdf 98 trang Thùy Anh 26/04/2022 9060
Bạn đang xem 20 trang mẫu của tài liệu "Bài tập môn Kỹ thuật lập trình - Chương trình cả năm", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • pdfbai_tap_mon_ky_thuat_lap_trinh_chuong_trinh_ca_nam.pdf
  • pptxKTLT Bai tap trong cac bai hoc.pptx