Tải bản đầy đủ (.doc) (27 trang)

Giáo án thực hành lập trình 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 (252.56 KB, 27 trang )

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG
KHOA CÔNG NGHỆ THÔNG TIN
BỘ MÔN KHOA HỌC MÁY TÍNH
GIÁO ÁN THỰC HÀNH
TÊN HỌC PHẦN: LẬP TRÌNH CẤU TRÚC
MÃ HỌC PHẦN:
HỆ ĐÀO TẠO:
ĐẠI HỌC CHÍNH QUY
SỐ TIẾT LÝ THUYẾT: 30
SỐ TIẾT THỰC HÀNH: 30
GIẢNG VIÊN:
BỘ MÔN: KHOA HỌC MÁY TÍNH
THÁI NGUYÊN NĂM 2014
Mục lục
+ Sinh viên: Cần bị đầy đủ giáo trình, các tài liệu môn học, bài tập thảo luận. Thực
hiện tốt các yêu cầu của giáo viên về việc chuẩn bị tài liệu trước khi học lý thuyết
cũng như thảo luận 3
Giáo án bài thực hành số 1 4
Chương 1+2: Giới thiệu về lập trình C và Các thành phần cơ bản của ngôn ngữ lập
trình C 4
Giáo án bài thực hành số 2 6
Chương 2: Các thành phần cơ bản của ngôn ngữ lập trình C (tiếp) 6
(Các câu lệnh lặp) 6
Giáo án bài thực hành số 3 9
Chương 2: Các thành phần cơ bản của ngôn ngữ lập trình C (tiếp) 9
Giáo án bài thực hành số 4 11
Chương 2: Các thành phần cơ bản của ngôn ngữ lập trình C (tiếp) 11
(Hàm trong C) 11
Giáo án bài thực hành số 5 13
Chương 2: Các thành phần cơ bản của ngôn ngữ lập trình C (tiếp) 13
(Dữ liệu kiểu Mảng) 13


Giáo án bài thực hành số 6 16
Chương 2: Các thành phần cơ bản của ngôn ngữ lập trình C (tiếp) 16
(Dữ liệu kiểu Xâu kí tự) 16
Giáo án bài thực hành số 7 19
Chương 3: Các kiểu dữ liệu có cấu trúc 19
Giáo án bài thực hành số 8 22
Chương 3: Các kiểu dữ liệu có cấu trúc(Tiếp) 22
Giáo án bài thực hành số 9 24
Chương 4: Tệp và thao tác vào ra 24
Giáo án bài thực hành số 10 26
Chương 4: Tệp và thao tác vào ra (Tiếp) 26
I. Phần chung cho cả học phần
1. Mục tiêu của học phần
- Mục tiêu về kiến thức:
Trang bị cho sinh viên những kiến thức cơ bản về lập trình; Giúp sinh
viên nắm vững phương pháp lập trình có cấu trúc;
- Mục tiêu về kỹ năng:
Nâng cao kỹ thuật lập trình có cấu trúc; Ứng dụng lập trình có cấu trúc
để giải một số bài toán trong thực tế.
- Mục tiêu về thái độ:
Tạo cho sinh viên khả năng nghiên cứu và tự nghiên cứu từ đó sinh viên
sẽ có thái độ chăm chỉ, yêu thích lập trình
2. Chuẩn bị
+ Giáo viên: Chuẩn bị đầy đủ hồ sơ giảng dạy: Đề cương chi tiết môn học,
Giáo án và Giáo trình môn học,…
+ Sinh viên: Cần bị đầy đủ giáo trình, các tài liệu môn học, bài tập thảo
luận. Thực hiện tốt các yêu cầu của giáo viên về việc chuẩn bị tài liệu trước
khi học lý thuyết cũng như thảo luận.
II. Phần chi tiết theo từng chương
Giáo án bài thực hành số 1

Chương 1+2: Giới thiệu về lập trình C và Các thành phần cơ bản của ngôn
ngữ lập trình C
1. Mục đích:
- Giúp sinh viên làm quen với môi trường Turbo C++ 3.0.
- Sinh viên biết cách khai thác các tài nguyên trên Internet.
- Thực hành với các kiểu dữ liệu cơ bản và các câu lệnh cơ bản trong Turbo
C++ 3.0.
- Sử dụng được trình biên dịch Turbo C++ 3.0 để soạn thảo chương trình
nguồn và tạo lập chương trình chạy dùng ngôn ngữ C
2. Yêu cầu:
– Sinh viên phải nắm chắc các kiến thức và các thao tác cơ bản về ngôn ngữ
lập trình Turbo C++ 3.0.
– Tìm các thông tin liên quan đến những kiến thức đã học.
- Phải làm các bài tập thực hành giảng viên giao cho.
3. Kết quả thu được:
- Cài đặt được Turbo C++ 3.0
- Lập trình được các bài tập đơn giản.
4. Nội dung:
4.1 Bài tập giải mẫu
Bài 1: Thực hành các thao tác cơ bản trên môi trường Turbo C++ 3.0 (phân
biệt với ngôn ngữ lập trình Pascal đã học).
Bài 2: Viết chương trình nhập vào một số bất kì. In ra màn hình chữ số đó.
Kiểm tra xem số đó có chia hết cho 3 hay không?
#include<conio.h>
#include<stdio.h>
Void main()
{ int n;
printf(“nhap vao so n bat ki:”);
scantf(“%d”, &n);
printf(“so vua nhap la: %d”, n);

if (n%3==0)
printf(“%d la so chia het cho 3”)
else
printf(“%d khong la so chia het cho 3”, n);
getch();
}
4.2 Bài tập thực hành trên phòng máy
Bài 3: Vào môi trường lập trình Turbo C, sau đó viết chương trình thực hiện
các việc sau:
+ Nhập vào 2 số nguyên dương a và b. Tính và in ra màn hình tổng,
hiệu, tích, thương, ước chung lớn nhất của 2 số đó.
+ Tính tổng các ước dương của a+b
Bài 4: Viết chương trình nhập vào một số nguyên cso 4 chữ số
+ in ra màn hình các kí tự số cấu thành lên số đó.
+ Kiểm tra xem tổng 4 chữ số có là số chẵn hay không?
+ Tổng 4 số có là số nguyên tố, hoàn hảo hay không?
4.1 Bài tập giao về nhà
Bài 5: Lập chương trình nhập vào 3 số a,b,c. Kiểm tra xem 3 số có tạo thành
tam giác hay không? Nếu có hãy tính chu vi và diện tích của tam giác đó.
Giáo án bài thực hành số 2
Chương 2: Các thành phần cơ bản của ngôn ngữ lập trình C (tiếp)
(Các câu lệnh lặp)
1. Mục đích:
- Giúp sinh viên nắm vững câu lệnh rẽ nhánh, các câu lệnh lặp và áp dụng
vào giải các bài toán.
- Thực hành thành thạo với các kiểu dữ liệu cơ bản và các câu lệnh cơ bản
trong Turbo pascal.
- Tạo nền tảng cho sinh viên trong quá trình tìm hiểu, nghiên cứu các ngôn
ngữ lập trình.
2. Yêu cầu:

– Sinh viên phải nắm chắc các kiến thức và các thao tác cơ bản về các lệnh
có cấu trúc: Các câu lệnh điều khiển, các câu lệnh lặp
– Tìm các thông tin liên quan đến những kiến thức đã học.
– Phải làm các bài tập thực hành giảng viên giao cho.
3. Kết quả thu được:
– Lập trình được các bài tập cơ bản.
– Thành thạo các kĩ năng lập trình.
4. Nội dung.
4.1 Bài tập giải mẫu
Bài 1: Lập chương trình thực hiện các việc sau:
+ Nhập vào 1 số nguyên có 4 chữ số, kiểm tra tính chẵn, lẻ, tính chia hết cho
3 của số đó.
+ Kiểm tra xem tổng các số trong số vừa nhập có là nguyên tố hay không?
Là số hoàn hảo hay không?
#include<conio.h>
#include<stdio.h>
Void main()
{ int n;
printf(“nhap vao so n co 4 chư so:”);
scantf(“%d”, &n);
printf(“so vua nhap la: %d”, n);
if (n%3==0)
printf(“%d la so chia het cho 3”,n)
else
printf(“%d khong la so chia het cho 3”, n);
if (n%2==0)
printf(“%d la so chan”,n)
else
printf(“%d la so le”, n);
getch();

}
Gợi ý ý b:
- Tách số vừa nhập thành 4 chứ số sử dụng phép toán / và %. Sau đó xây dựng
chương trình kiểm tra nguyên tố, hoàn hảo như sau:
Giả sử kí hiệu m là tổng 4 số vừa tách. Khi đó đoạn chương trình kiểm tra
nguyên tố, hoàn hảo được thực hiện như sau:
//nguyên tố
Int D=0;
For (i=1;i<=m;i++)
If (m%i==0) D++;
If (D==2) printf(“%d la so nguyen to”, m)
Else printf(“%d khong la so nguyen to”, m);
//hoan hao
Int D=0;
For (i=1;i<m;i++)
If (m%i==0) D+=i;
If (D==m) printf(“%d la so hoan hao”, m)
Else printf(“%d khong la so hoan hao”, m);
Bài 2: Lập chương trình thực hiện các việc sau:
Nhập vào một số thực e (e<0.01) rồi tính các tổng:
S1 = 1 + 1/2 + + 1/n (dừng khi 1/n <e)
4.2 Bài tập thực hành trên phòng máy
Bài 3: Lập chương trình thực hiện các việc sau:
Nhập vào một số thực e (e<0.01) rồi tính các tổng:
S2 = 1 - 1/2
2
+ 1/3
2
- +(-1)
n-1

1/n
2
(dừng khi 1/n <e)
Bài 4: Lập chương trình thực hiện các việc sau :
Nhập vào một số nguyên n (n>20) rồi tính các tổng sau:
S1 = 1 - 3 + 5 - 7 + +(-1)
n-1
(2*n+1)
Bài 5: Lập chương trình nhập vào các số nguyên cho tới khi gặp số âm thì
dừng lại và tính tổng của các số vừa nhập. Kết quả xuất ra màn hình.
4.1 Bài tập giao về nhà
Bài 6: Lập chương trình thực hiện các việc sau :
Nhập vào một số nguyên n (n>20) rồi tính các tổng sau:
S2 = 1
3
- 2
3
+ 3
3
+ +(-1)
n-1
n
3
Bài 7: Lập chương trình nhập vào các số nguyên cho tới khi gặp số âm thì
dừng lại và tính trung bình cộng của các số vừa nhập. Kết quả xuất ra màn
hình.
Bài 8: Lập chương trình nhập vào 2 số nguyên a, b sau đó tính tổng, hiệu, tích,
thương của 2 số đó tùy thuộc vào dấu của phép toán được nhập vào. Việc thực
hiện chương trình được thực hiện cho tới khi người dùng trả lời No hoặc K.
Giáo án bài thực hành số 3

Chương 2: Các thành phần cơ bản của ngôn ngữ lập trình C (tiếp)
1. Mục đích:
- Giúp sinh viên nắm vững các kiến thức cơ bản về câu lệnh rẽ nhánh, các
câu lệnh lặp và áp dụng vào giải các bài toán.
- Thực hành thành thạo với các kiểu dữ liệu cơ bản và các câu lệnh cơ bản
trong C.
- Tạo nền tảng cho sinh viên trong quá trình tìm hiểu, nghiên cứu các ngôn
ngữ lập trình.
2. Yêu cầu:
– Sinh viên phải nắm chắc các kiến thức và các thao tác cơ bản về các lệnh
có cấu trúc: Các câu lệnh điều khiển, các câu lệnh lặp
– Tìm các thông tin liên quan đến những kiến thức đã học.
- Phải làm các bài tập thực hành giảng viên giao cho.
3. Kết quả thu được:
- Lập trình được các bài tập cơ bản.
- Thành thạo các kĩ năng lập trình
4. Nội dung
4.1 Bài tập giải mẫu
Bài 1: Viết chương trình giải phương trình bậc 2 ax
2
+bx+c=0 , với các hệ số a,
b, c là các số thực được nhập vào, kết quả xuất ra màn hình.
#include<conio.h>
#include<stdio.h>
Void main()
{ float a,b,c, x, x1;;
printf(“nhap vao he so a, b,c=:”);
scantf(“%f%f%f”, &a,&b, &c);
d=b*b-4*a*c;
if (d<0) printf(“phuong trinh vo nghiem”);

else
if (d==0)
{ printf(“phuong trinh co mot nghiem kep”);
Printf(“%4.1f”, -b/(2*a));
}
else
{printf(“phuong ttinh co hai nghiem phan biet”);
Printf(“x=%4.1f”, (-b+sqrt(d))/(2*a));
Printf(“x2=%4.1f”, (-b+sqrt(d))/(2*a));
}
getch();
}
Bài 2: Nhập vào một số có 4 chữ số. Kiểm tra xem tổng các chữ số của số đó
có là số chính phương hay không?
4.2 Bài tập thực hành trên phòng máy
Bài 3: Viết chương trình giải hệ phương trình bậc nhất hai ẩn, kết quả xuất ra
màn hình.
Bài 4: Viết chương trình con thực hiện các nhiệm vụ sau:
Nhập vào số n(2<=n<=500). Kiểm tra xem n có là số nguyên tố hay hoàn hảo
hay không?
4.1 Bài tập giao về nhà
Bài 5: Lập chương trình thực hiện các công việc sau :
a/ Nhập vào bậc n (4<n<20) và các hệ số (nguyên) của đa thức f(x) bậc n.
b/ Nhập 1 số thực x
0
rồi tính f(x
0
).
c/ Tìm tất cả các ước của hệ số tự do (a
0

)
Giáo án bài thực hành số 4
Chương 2: Các thành phần cơ bản của ngôn ngữ lập trình C (tiếp)
(Hàm trong C)
1. Mục đích:
- Giúp sinh viên nắm vững được các kiến thức cơ bản về chương trình con
(hàm) và lời gọi hàm, cơ chế truyền tham số.
- Tạo nền tảng cho sinh viên trong quá trình tìm hiểu, nghiên cứu các ngôn
ngữ lập trình.
2. Yêu cầu:
- Sinh viên phải nắm chắc các kiến thức và các thao tác cơ bản vể chương
trình con (hàm) và lời gọi hàm, cơ chế truyền tham số.
- Tìm các thông tin liên quan đến những kiến thức đã học.
- Phải làm các bài tập thực hành giảng viên giao cho.
3. Kết quả thu được:
- Lập trình được các bài tập cơ bản.
- Thành thạo các kĩ năng lập trình.
4. Nội dung
4.1 Bài tập giải mẫu
Bài 1: Lập chương trình có sử dụng chương trình con tính n!, với n∈N
#include<conio.h>
#include<stdio.h>
Int giaithua(int n)
{ if (n==1) return 1;
Else return(n*giaithua(n-1));
}
Void main()
{ int n;
printf(“nhap vao so n:”);
scantf(“%d”, &n);

printf(“so vua nhap la: %d”, n);
printf(“giai thua cua %d la %d”, n, giaithua(n));
getch();
}
Bài 2: Lập chương trình có sử dụng chương trình con tính ước số chung lớn
nhất của 4 số nguyên a, b,c,d.
4.2 Bài tập thực hành trên phòng máy
Bài 3: Lập chương trình có sử dụng chương trình con tính bội số chung nhỏ
nhất của 4 số nguyên a, b, c, d.
Bài 4: Lập chương trình có sử dụng chương trình con tìm giá trị lớn nhất, nhỏ
nhất trong 4 số nguyên được nhập vào từ bàn phím.
4.1 Bài tập giao về nhà tự làm
Bài 5: Lập chương trình có sử dụng chương trình con tính C
k
n
với n, k ∈N và
0≤ n≤ k.
Bài 6: Lập chương trình có sử dụng chương trình con xác định tất cả các số
nguyên tố từ 1 đến n, với n ∈N .
Bài 7: Lập chương trình có sử dụng chương trình con thực hiện các công việc
sau:
a/ Nhập vào bậc n (4<n<20) và các hệ số (nguyên) của đa thức f(x) bậc n.
b/ Nhập 1 số thực x
0
rồi tính f(x
0
).
c/ Tìm tất cả các ước của hệ số tự do (a
0
)

Giáo án bài thực hành số 5
Chương 2: Các thành phần cơ bản của ngôn ngữ lập trình C (tiếp)
(Dữ liệu kiểu Mảng)
1. Mục đích:
- Giúp sinh viên nắm vững được các kiến thức cơ bản về mảng, mảng một
chiều, mảng 2 chiều.
- Tạo nền tảng cho sinh viên trong quá trình tìm hiểu, nghiên cứu các ngôn
ngữ lập trình.
2. Yêu cầu:
- Sinh viên phải nắm chắc các kiến thức và các thao tác cơ bản về các lệnh
liên quan đến mảng một chiều, mảng 2 chiều.
- Tìm các thông tin liên quan đến những kiến thức đã học.
- Phải làm các bài tập thực hành giảng viên giao cho.
3. Kết quả thu được:
- Lập trình được các bài tập cơ bản.
- Thành thạo các kĩ năng lập trình
4. Nội dung
4.1 Bài tập giải mẫu
Bài 1: Lập chương trình thực hiện các việc sau:
+ Nhập vào 1 số nguyên n (2<=n<=20) rồi nhập vào dãy gồm n số thực.
+ Tìm số lớn nhất của dãy và các vị trí tương ứng của nó.
+ Xếp lại dãy theo thứ tự giảm dần hoặc tăng dần rồi đưa dãy kết quả ra màn
hình.
+ Xếp lại dãy theo thứ tự các số âm, đến số 0, rồi đến các số dương, đưa dãy
kết quả ra màn hình.
#include<conio.h>
#include<stdio.h>
Void main()
{
Int i, n; float a[100];

printf(“nhap vao so n:”);
scantf(“%d”, &n);
for ( i = 0 ; i < n ; i ++ )
{
printf ( " a [ %d ] = " , i ); scanf ( " % f" , & a [ i ]);
}
float max=a[0];
for (i=1; i<n; i++)
if (max<a[i])
max=a[i];
printf(“gia tri lon nhat trong day la: %f”,max);
getch();
}
Bài 2 : Lập chương trình thực hiện các việc sau :
+ Nhập vào một ma trận vuông A cấp n (2<n<20) với các phần tử là các số
nguyên.
+ Viết ra màn hình các phần tử lớn nhất trên mỗi dòng của ma trận A
4.2 Bài tập thực hành trên phòng máy
Bài 3: Lập chương trình thực hiện các việc sau(sử dụng chương trình con)
+ Nhập vào 1 số nguyên n (2<=n<=20) rồi nhập vào dãy gồm n số thực.
+ Tìm số lớn nhất của dãy và các vị trí tương ứng của nó.
+ Xếp lại dãy theo thứ tự giảm dần hoặc tăng dần rồi đưa dãy kết quả ra màn
hình.
+ Xếp lại dãy theo thứ tự các số âm, đến số 0, rồi đến các số dương, đưa dãy
kết quả ra màn hình.
Bài 4: Lập chương trình thực hiện các việc sau:
+ Nhập vào 1 số nguyên n (2<=n<=20) rồi nhập vào dãy gồm n số nguyên.
+ Tính giá trị nhỏ nhất thứ hai trong dãy. Trong dãy có bao nhiêu số trùng với
số vừa tìm được ? ở những vị trí nào ?
+ In ra màn hình các số nguyên tố có trong dãy

+ Tính tổng tất cả các số trong dãy là số chẵn và chia hết cho 3.
+ In ra màn hình ước số chung lớn nhất trong dãy, bội chung nhỏ nhất trong
dãy.
+ In ra màn hình số âm lớn nhất trong dãy.
( Thực hiện các yêu cầu trên có sử dụng chương trình con)
4.1 Bài tập giao về nhà
Bài 5 : Lập chương trình thực hiện các việc sau :
+ Nhập vào một ma trận vuông A cấp n (2<n<20) với các phần tử là các số
nguyên.
+ Viết ra màn hình các phần tử lớn nhất trên mỗi dòng của ma trận A
+ Lập một dãy n phần tử với các phần tử là các giá trị nhỏ nhất trên mỗi cột
của ma trận A ban đầu. Đưa dãy kết quả ra màn hình.
Bài 6 : Lập chương trình thực hiện các việc sau :
+ Nhập vào một ma trận vuông A cấp n (2<n<20) với các phần tử là các số
nguyên.
+ Lập một mảng B gồm n phần tử . Mỗi phần tử là tổng các số chẵn trên mỗi
cột của ma trận A. Đưa mảng kết quả ra màn hình.
+ In ra màn hình các số nguyên tố trong ma trận
+ Sắp xếp ma trận A theo chiều giảm dần trên các hàng. Đưa ma trận kết quả
ra màn hình.
Giáo án bài thực hành số 6
Chương 2: Các thành phần cơ bản của ngôn ngữ lập trình C (tiếp)
(Dữ liệu kiểu Xâu kí tự)
1. Mục đích:
- Giúp sinh viên nắm vững được các kiến thức cơ bản về dữ liệu kiểu xâu,
tập hợp, liệt kê.
- Tạo nền tảng cho sinh viên trong quá trình tìm hiểu, nghiên cứu các ngôn
ngữ lập trình.
2. Yêu cầu:
– Sinh viên phải nắm chắc các kiến thức và các thao tác cơ bản về dữ liệu

kiểu xâu.
– Tìm các thông tin liên quan đến những kiến thức đã học.
- Phải làm các bài tập thực hành giảng viên giao cho.
3. Kết quả thu được:
- Lập trình được các bài tập cơ bản.
- Thành thạo các kĩ năng lập trình
4. Nội dung
4.1 Bài tập giải mẫu
Bài 1: Nhập vào một xâu kí tự bất kì. In ra màn hình số kí tự trong chuỗi đó
#include<conio.h>
#include<stdio.h>
void main()
{
char chuoi[80];
int i = 0, count = 0;
printf("\nNhap vao mot chuoi bat ky : ");
gets(chuoi);
while (chuoi[i] != 0)
{
if (isalpha(chuoi[i++]))
count++;
}
printf("So ky tu trong chuoi = %d", count);
getch();
}
4.2 Bài tập thực hành trên phòng máy
Bài 2: Lập chương trình thực hiện các việc sau :
+ Nhập vào một xâu rồi cho biết xâu đó gồm bao nhiêu từ ? Ký tự ‘a’ (không
phân biệt chữ hoa chữ thường) có mặt bao nhiêu lần?
+ Cắt bỏ tất cả các khoảng trống vô nghĩa bên trái xâu rồi đưa kết quả ra màn

hình.
+ Cắt bỏ tất cả các khoảng trống vô nghĩa bên phải xâu rồi đưa kết quả ra màn
hình.
+ Cắt bỏ tất cả các khoảng trống vô nghĩa giữa các từ rồi đưa kết quả ra màn
hình, sao cho 2 từ khác nhau được cách nhau bởi một ký tự trắng.
( Thực hiện các yêu cầu trên có sử dụng chương trình con)
Bài 3: Lập chương trình thực hiện các việc sau:
+ Nhập vào một xâu kí tự , cho biết độ dài của xâu.
+ Cho biết trong xâu có bao nhiêu nguyên âm, bao nhiêu phụ âm.
+ Từ được gọi là đơn âm nếu nó chứa một nguyên âm, ngược lại từ chứa từ 2
nguyên âm trở lên được gọi là đa âm. Hãy cho biết số các từ đơn âm, đa âm
trong xâu ban đầu.
+ Có bao nhiêu từ trong xâu kết thúc là chữ 'G' hoặc ‘g’?
( Thực hiện các yêu cầu trên có sử dụng chương trình con)
Bài 4 : Lập chương trình thực hiện các việc sau:
+ Nhập vào một xâu , cho biết độ dài thực của xâu.
+ Cho biết số ký tự là chữ cái, số ký tự là chữ số, số ký tự đặc biệt có mặt
trong xâu ban đầu.
+ Có bao nhiêu từ trong xâu bắt đầu là chữ 'H' hoặc 'h' ?
+ Cho biết số lần xuất hiện của các ký tự có mặt trong xâu, ký tự nào có số lần
xuất hiện nhiều nhất.
( Thực hiện các yêu cầu trên có sử dụng chương trình con)
4.3 Bài tập giao về nhà
Bài 5 : Lập chương trình thực hiện các việc sau :
+ Nhập vào một xâu, đổi tất cả các chữ cái đầu tiên của mỗi từ thành chữ in
hoa rồi viết ra màn hình
+ Nhập vào một từ rồi tìm xem từ đó có mặt trong xâu bao nhiêu lần.
+ Xâu được gọi là chuẩn hóa nếu đầu xâu không có ký tự trắng, cuối xâu
không có ký tự trắng, các từ đều được bắt đầu bởi chữ in hoa và các từ khác
nhau được cách nhau bởi đúng một ký tự trắng. Hãy thực hiện việc chuẩn hóa

xâu.
Bài 6: Lập chương trình nhập vào họ tên của một người. In ra màn hình họ,
tên, tên đệm của người đó theo đúng qui ước chuẩn hóa.
( Thực hiện các yêu cầu trên có sử dụng chương trình con)
Giáo án bài thực hành số 7
Chương 3: Các kiểu dữ liệu có cấu trúc
1. Mục đích:
- Giúp sinh viên nắm vững được các kiến thức cơ bản về kiểu cấu trúc
Struct.
- Tạo nền tảng cho sinh viên trong quá trình tìm hiểu, nghiên cứu các ngôn
ngữ lập trình.
2. Yêu cầu:
- Sinh viên phải nắm chắc các kiến thức và các thao tác cơ bản về kiểu cấu
trúc Struct.
- Tìm các thông tin liên quan đến những kiến thức đã học.
- Phải làm các bài tập thực hành giảng viên giao cho.
3. Kết quả thu được:
- Lập trình được các bài tập cơ bản.
- Thành thạo các kĩ năng lập trình
4. Nội dung
4.1 Bài tập giải mẫu
BàI TậP 1: viết chương trình nhập danh sách học viên gồm các trường họ tên,
tuổi, điểm, và tìm kiếm trong danh sách có ai tên " nguyen nam " không.
#include<conio.h>
#include<stdio.h>
#define n 10
typedef struct
{ char Ten[30];
int tuoi ;
float diem ;

} kieu HV ;
kieu HV HV[11]
void main( )
{ int i ; float tam ; kieu HV hv;
/* nhập dữ liệu cách 1*/
for ( i = 0 ; i < n ; i++)
{ printf ("\n Nhập số liệu cho học viên thứ %d", i ) ;
printf (" Họ và tên = " ) ; gets ( hv[i].ten);
printf ("tuổi = "); scanf ( "%d" , &hv[i].tuoi);
printf("điểm = "); scanf ("%f*c", &tam ); hv[i].diem = tam ;
}
/* cách 2 nhập vào biến cấu trúc và gán hv[i] = h */
for ( i = 0 ; i
{ printf("Họ và tên = "); gets(h.ten);
} hv[i] = h ;
/* tìm kiếm Nguyen Nam */
thay = 0 ; i = 0 ; /* thay = 0 : không thấy, thấy = 1 : tìm thấy */
while ((!thay)&&(i <n))
if ( strcmp(hv[i].Ten , " Nguyen nam ") = = 0 )
{ thay = 1 ;
printf ("%s%d%f ", hv[i].ten , hv[i].tuổi, hv[i].điểm );
}
else i++ ;
if (!thay ) puts ("\n không tìm thấy nguyen nam !");
getch( );
}</n))
Bài 1: Xây dựng một cấu trúc (ứng với phiếu điểm của thí sinh) gồm các thành
phần: Họ tên, lớp, điểm Toán, điểm Tin, điểm Anh văn. Viết chương trình thực
hiện các công việc sau:
- Nhập vào danh sách sinh viên (Số lượng n được nhập từ bàn phím).

- In ra màn hình danh sách các sinh viên vừa nhập ( mỗi sinh viên được in
trên một dòng ).
- In ra màn hình danh sách các sinh viên có điểm trung bình lớn nhất
- ( mỗi sinh viên được in trên một dòng ).
- In ra màn hình danh sách các sinh viên có điểm trung bình dưới 5.0
( mỗi sinh viên được in trên một dòng ).
4.2 Bài tập thực hành trên phòng máy
Bài 2: Xây dựng một cấu trúc gồm các thành phần: Họ tên, mức lương, phụ cấp
ngày công, tiền thực lĩnh.Viết chương trình thực hiện các công việc sau :
- Nhập thông tin cho một danh sách cán bộ ( Số lượng cán bộ n nhập từ
bàn phím ).
- In ra màn hình danh sách các cán bộ vừa nhập (mỗi cán bộ được in trên
một dòng ).
Bài 3: Xây dựng một cấu trúc gồm các thành phần: Họ tên, lớp, điểm Toán, điểm
Tin. Viết chương trình thực hiện các công việc sau:
- Sử dụng danh sách liên kết để nhập vào danh sách các sinh viên cho đến
khi họ tên bằng rỗng thì dừng lại.
- Tính điểm trung bình cho tất cả các sinh viên.
- In ra màn hình danh sách sinh viên có điểm trung bình lớn nhất
- In ra danh sách các sinh viên có điểm trung bình lớn hơn 7.5
4.3 Bài tập giao về nhà
Bài 4: Xây dựng một cấu trúc (ứng với phiếu điểm của thí sinh) gồm các thành
phần:
- Họ tên
- Quê quán
- Trường
- Tuổi
- Số báo danh
- Điểm thi
Trong đó họ tên lại là một cấu trúc gồm ba thành phần họ, tên đệm và tên.

Quê quán cũng là một cấu trúc gồm ba thành phần xã, huyện và tỉnh. Điểm thi
là một cấu trúc gồm ba thành phần toán, lý và hóa (điểm thập phân).
Đọc số liệu từ một phiếu điểm cụ thể và lưu trữ vào các thành phần của cấu
trúc nói trên (lưu ý không nên sử dụng toán tử & truy nhập trực tiếp vào các
thành phần của cấu trúc).
Giáo án bài thực hành số 8
Chương 3: Các kiểu dữ liệu có cấu trúc(Tiếp)
1. Mục đích:
- Giúp sinh viên nắm vững được các kiến thức cơ bản về kiểu dữ kiểu file,
thực hành các thao tác vào/ra đối với tệp văn bản.
- Tạo nền tảng cho sinh viên trong quá trình tìm hiểu, nghiên cứu các
ngôn ngữ lập trình.
2. Yêu cầu:
- Sinh viên phải nắm chắc các kiến thức và các thao tác cơ bản về kiểu dữ
liệu kiểu file, các thao tác vào/ra đối với tệp văn bản.
- Tìm các thông tin liên quan đến những kiến thức đã học.
- Phải làm các bài tập thực hành giảng viên giao cho.
3. Kết quả thu được:
- Lập trình được các bài tập cơ bản.
- Thành thạo các kĩ năng lập trình
4. Nội dung
4.1 Bài tập giải mẫu
Bài 1. Xây dựng một cấu trúc (ứng với phiếu điểm của thí sinh) gồm các thành
phần:
- Họ tên
- Quê quán
- Trường
- Tuổi
- Số báo danh
- Điểm thi

Trong đó họ tên lại là một cấu trúc gồm ba thành phần họ, tên đệm và tên. Quê
quán cũng là một cấu trúc gồm ba thành phần xã, huyện và tỉnh. Điểm thi là
một cấu trúc gồm ba thành phần toán, lý và hóa (điểm thập phân).
Đọc số liệu từ một phiếu điểm cụ thể và lưu trữ vào các thành phần của cấu
trúc nói trên (lưu ý không nên sử dụng toán tử & truy nhập trực tiếp vào các
thành phần của cấu trúc).
4.2 Bài tập thực hành trên phòng máy
Bài 2. Xây dựng một mảng các cấu trúc mà mỗi thành phần của nó có kiểu như
trong bài l.
Nhập số liệu cho hai 20 phiếu điểm và lưu trữ vào mảng cấu trúc nói trên.
Nhập vào điểm chuẩn thi đại học và in ra danh sách các thí sinh trượt (có tổng
ba môn bé hơn điểm chuẩn). Thông tin về mỗi thí sinh được in ra trên một
dòng, bao gồm
- Họ tên
- Quê quán
- Số báo danh
- Điểm thi các môn.
4.1 Bài tập giao về nhà
Bài 3. Trong một trường trung học, học sinh bắt buộc phải học ba môn toán, lý
và hoá. Ngoài ra học sinh nam học thêm môn kỹ thuật còn học sinh nữ học
thêm môn nữ công. Viết chương trình:
- Xây dựng cấu trúc dữ liệu để có thể quản lý được các thông tin về học sinh.
- Nhập họ tên, giới tính và điểm của n học sinh.
- In số liệu về các học sinh nam trước rồi sau đó đến các học sinh nữ.
Bài 4. Một tam giác bao gồm ba đỉnh. Mỗi đỉnh có hai tọa độ. Hãy xây dựng
một cấu trúc thể hiện hai mô tả vừa rồi
- Lập chương trình nhập vào tọa độ ba đỉnh của một tam giác
- Kiểm tra xem 3 đỉnh có thẳng hàng hay không.
Nếu 3 đỉnh không thẳng hàng. Tính diện tích của tam giác theo công thức.
S =

))()(( cpbpapp −−−
trong đó a, b, c là độ dài ba cạnh của tam giác p là
độ dài nửa chu vi.
Bài 5. Tổng quát lớp bài toán trên với đa giác bất kỳ. Xây dựng một cấu trúc
dữ liệu để mô tả đa giác.Tính diện tích của đa giác.
Giáo án bài thực hành số 9
Chương 4: Tệp và thao tác vào ra
1. Mục đích:
- Giúp sinh viên nắm vững được các kiến thức cơ bản về kiểu dữ kiểu file,
thực hành các thao tác vào/ra đối với tệp văn bản.
- Tạo nền tảng cho sinh viên trong quá trình tìm hiểu, nghiên cứu các
ngôn ngữ lập trình.
2. Yêu cầu:
- Sinh viên phải nắm chắc các kiến thức và các thao tác cơ bản về kiểu dữ
liệu kiểu file, các thao tác vào/ra đối với tệp văn bản.
- Tìm các thông tin liên quan đến những kiến thức đã học.
- Phải làm các bài tập thực hành giảng viên giao cho.
3. Kết quả thu được:
- Lập trình được các bài tập cơ bản.
- Thành thạo các kĩ năng lập trình
4. Nội dung
4.1 Bài tập giải mẫu
Bài 1: Giả sử có file c/data.txt lưu 10 số nguyên 1 5 7 9 8 0 4 3 15 20 . Hãy đọc các số
nguyên thêm vào một mãng sau đó sắp xếp tăng dần rồi ghi vào file datasx.txt
#include<conio.h>
#include<stdio.h>
#define n 10
void main ( )
{ FILE *fp ; int i, j, t, a[n]
clrscr ( ) ;

fp = fopen (" c :\\data.txt ", "rt" ); /* mở file để đọc vào mãng */
if (fp = NULL)
{ printf ("không mở được file ");
exit (1);
}
/* Sắp xếp mãng */
for ( i=0 ; i
for (j=i+1; j
if (a[i]
{ t = a[i] ; a[i]=a[j] ; a[j] = t ; }
fclose (fp);
/* mở file datasx.txt để ghi sau khi sắp xếp */
fp = fopen ("c:\\datasx.txt ", "wt");
for ( i=0 ; i<n;i++)
printf (fp,"%2d", a[i] );
fclose (fp);
/* đọc dữ liệu từ file cách 2 ( tổng quát hơn ) không phụ thuộc vào n */
i = 0 ;
while (1)
{ fscanf (fp,"%d",&a[i] ;
i++;
if (foef(fp) ) break ;
}
Bài 2: Viết chương trình nhập vào một file dữ liệu có kiểu, sau đó thực hiện
việc copy file đó sang một file có tên khác đặt tại một địa chỉ khác.
4.2 Bài tập thực hành trên phòng máy
Bài 3: Đọc dữ liệu từ một file văn bản bất kỳ và cho biết:
+ File đó gồm bao nhiêu dòng?
+ File đó gồm bao nhiêu từ?
+ Dòng có độ dài lớn nhất trong file là dòng nào? Hãy hiển thị dòng đó.

Bài 4: Viết chương trình thực hiện các bài 1 trong bài thực hành 5 với dữ liệu
ra được ghi vào file có kiểu. Các thao tác xử lý được thực hiện trên file có kiểu.

×