Thứ Ba, 18 tháng 6, 2013

bai hoan chinh day!

#include<stdio.h>
#include<conio.h>
#include<string.h>
#include<stdlib.h>

struct sv
{
char msv[50],ten[50],lop[50];
float diem;
sv *tiep;
};
sv *dau=NULL, *cuoi;

void tao()
{
sv *p=new sv;
if(dau==NULL)
dau=p;
else
cuoi->tiep=p;
p->tiep=NULL;
cuoi=p;
}

void nhap()
{
int i=0;
while(1)
{
i++;
printf("\n\n Nhap sinh vien thu %d: ",i);
printf("\n   Ma sinh vien: ");
char t[50];
fflush(stdin);
gets(t);
if(t[0]==NULL)
return;

tao();
strcpy(cuoi->msv,t);
printf("   Ten: ");
gets(cuoi->ten);
printf("   Lop: ");
fflush(stdin);
gets(cuoi->lop);
printf("   Diem: ");
scanf("%f",&cuoi->diem);
}
}

void gioi()
{
printf("\n\n Ten cac sinh vien co hoc luc gioi la: ");
for(sv *r=dau;r!=NULL;r=r->tiep)
if(r->diem>=8.0)
printf("\n MaSV: %s, Ten: %s, Lop: %s, DiemTK: %g",r->msv,r->ten,r->lop,r->diem);
}

void duoi5()
{
printf("\n\n Cac sinh vien khong du diem: ");
for(sv *r=dau;r!=NULL;r=r->tiep)
if(r->diem<5.0)
printf("\n MaSV: %s, Ten: %s, Lop: %s, DiemTK: %g",r->msv,r->ten,r->lop,r->diem);
}

void ghifile()
{
FILE *fi=fopen("NGUYEN.DAT","wb");
for(sv *r=dau;r!=NULL;r=r->tiep)
if(strncmp(r->ten,"Nguyen",6)==0)
fwrite(&r,sizeof(sv),1,fi);
fclose(fi);
}

void main()
{
nhap();
gioi();
duoi5();
ghifile();
getch();
}

Chủ Nhật, 16 tháng 6, 2013

TỔNG HỢP BÀI TẬP CHUỖI



A. MỨC DỄ:

Level 01. Đếm có bao nhiêu khoảng trắng trong chuỗi.
Level 02. Đổi tất cả các kí tự chữ cái trong chuỗi thành chữ thường (không dùng hàm strlwr).
Level 03. Nhập 1 kí tự muốn xóa. Thực hiện xóa tất cả những kí tự đó trong chuỗi.

B. MỨC TRUNG BÌNH:

Level 04. Nhập vào vị trí vt và số kí tự cần xóa n, hăy xóa n kí tự tính từ vị trí vt trong chuỗi.
Level 05. Viết chương trình đảo ngược các kí tự trong chuỗi.
Level 06. Đổi các từ ở đầu câu sang chữ hoa và những từ không phải đầu câu sang chữ thường.
Ví dụ: nGuYen vAN a đổi thành: Nguyen Van A
Level 07. Kiểm tra xem chuỗi có đối xứng hay không?.
Level 08. Nhập một chuỗi bất kỳ, sau đó hỏi người dùng cần tách bắt đầu từ đâu trong chuỗi trở về sau.
Ví dụ: Nhập chuỗi S1:”Trường Đại Học Tôn Đức Thắng”.
Người nhập muốn tách bắt đầu từ chữ “Tôn” thì sẽ xuất ra chuỗi “Tôn Đức Thắng” ra màn hình.
Level 09. Đảo vị trí của từ đầu và từ cuối.
Ví dụ: nhập “ngon ngu lap trinh” xuat ra “trinh ngu lap ngon”.
Level 10. Nhập vào chuỗi s1 và s2, cho biết các vị trí xuất hiện của chuỗi s2 trong s1.

C. MỨC KHÓ:

Level 11. Tìm và in ra một từ dài nhất trong chuỗi.
Level 12. Kiểm tra chuỗi đã được chuẩn hóa hay chưa?
Chuỗi đã chuẩn hóa là chuỗi không có kí tự trắng thừa và các chữ cái đầu mỗi từ được in hoa, các chữ còn lại in thường.
Level 13. Tìm kiếm chuỗi s2 có trong chuỗi s1 không, nếu có xuất ra vị trí của từ chứ kí tự đó.
(Vd: xâu a là “ho chi minh”: nhập ‘m’=>kết quả là 3)
Level 14. Đổi chữ xen kẽ 1 chữ hoa và 1 chữ thường.
Level 15. Tìm những ký tự xuất hiện nhiều nhất trong chuỗi và số lần xuất hiện.
Level 16. Đếm số lần xuất hiện chuỗi s2 trong s1.
Level 17. Nhập một chuỗi và một số  tự  nhiên k, sau đó xoá từ thứ k (các từ  được tính từ  1) trong chuỗi.
Level 18. Xóa toàn bộ chuỗi s2 trong chuỗi s1
Level 19. Đảo ngược thứ tự các từ có trong chuỗi
Level 20. Thay thế chuỗi con s1 trong chuỗi s bởi chuỗi con s2.

Thứ Tư, 12 tháng 6, 2013

ÔN TẬP CHUỖI KÍ TỰ


ÔN TẬP PHẦN CHUỖI:

Câu 1: In hoa tất cả kí tự chữ cái.
Câu 2: Xóa tất cả các kí tự trắng.
Câu 3: Đếm có bao nhiêu chữ cái thường.
Câu 4: Đếm xem chuỗi s2 xuất hiện bao nhiêu lần trong chuỗi s1.
Câu 5: Đưa tên lên đầu. Vd: Lê Văn Nam --> Nam Lê Văn.
Câu 6: Đảo ngược chuỗi. Vd: I Love You --> uoY evoL I.
Câu 7: Đảo ngược từ. Vd: Trời xanh mây trắng --> trắng mây xanh Trời.
Câu 8: Tìm và in ra 1 từ dài nhất.
Câu 9: In ra từ thứ k của chuỗi. Vd: Cuộc sống tươi đẹp; với k=2 -->"sống".
Câu 10: Đếm số lượng từ trong chuỗi.

Thứ Ba, 11 tháng 6, 2013

LƯU Ý VỀ FILE


1. Đọc file văn bản:

- FILE *fi=fopen(duongdan,"r") // fi là con trỏ file
- Điều kiện: while(!feof(fi))
a, Đọc 1 kí tự: fgetc(fi)
b, Đọc số: fscanf(fi,"%d",&biến)
c, Đọc chuỗi: fgets(biến, số kí tự tối đa, fi)
--> để loại kí tự xuống dòng chuỗi s: gán s[strlen(s)-1]=NULL;
- tăng biến n++ của mảng...
- Đóng file: fclose(fi)

2. Ghi file văn bản:

- FILE *fi=fopen(duongdan,"w") // fi là con trỏ file
- Cho vòng for chạy.
- Dùng: fprintf(fi,"%<mã định dạng>",biến)
- Đóng file: fclose(fi)

3. Đọc file nhị phân: //đọc từng block và đưa vào mảng

- FILE *fi=fopen(duongdan,"rb") // fi là con trỏ file
- Điều kiện: while(fread(&tam,sizeof(cỡ biến tạm),1,fi))
// biến tạm là 1 biến của cấu trúc, size là cỡ tên cấu trúc
{ Gán vào biến chính thức ; tăng biến n++;}
- Đóng file: fclose(fi)

4. Ghi file nhị phân

- FILE *fi=fopen(duongdan,"wb") // fi là con trỏ file
- Cho vòng for chạy:
- Dùng: fwrite(&bien, sizeof(bien),1,fi)
// biến có thể là biến cấu trúc, size là cỡ của cấu trúc = tên cấu trúc
- Đóng file: fclose(fi)