Sắp xếp danh sách sinh viên theo điểm tổng kết giảm dần.

Một phần của tài liệu dapan bai tap ontap d15CNTT7 8 (Trang 29 - 37)

4. In mã sinh viên, họ tên của các sinh viên có năm sinh 2000.

5. Ghi vào file D:/dulieu.txt thông tin những sinh viên có điểm tổng kết nhỏ hơn 5. Viết chương trình chính gọi thực hiện các hàm trên.

#include <stdio.h> #include <conio.h> #include <malloc.h> #include <string.h> typedef struct{

char masv[40];// ma sinh vien toi da 40 ki tu char tensv[40];// ten sinh vien toi da 40 ki tu int namsinh;// nam sinh kieu so nguyen float diem; // diem kieu so thuc

}sinhvien;// dinh nghia cau truc kieu sinh vien void nhap(sinhvien *sv, int n){

for(int i=0;i<n;i++)////lenh lap de duyet tu dau danh sach toi cuoi danh sach {

printf("Nhap masv:");// hien thi ra man hinh "nhap ma sv" fflush(stdin);//xoa bo nho dem cac ki tu dac biet

gets(sv[i].masv);// doc tu ban phim xau ki tu cho ma sinh vien cua sinh vien thu i printf("Nhap tensv:");

fflush(stdin);gets(sv[i].tensv); printf("Nhap namsinh:");

scanf("%d",&sv[i].namsinh);//doc gia tri la so nguyen tu ban phim cho nam sinh cua sv thu i printf("Nhap diem:");//doc gia tri la so nguyen tu ban phim cho diem cua sv thu i

scanf("%f",&(sv[i].diem)); }

}

void hienthi(sinhvien *sv, int n) {

for(int i=0;i<n;i++)// lenh lap de duyet tu dau toi cuoi danh sach

printf(" %s %s %d %5.3f\n",sv[i].masv,sv[i].tensv,sv[i].namsinh,sv[i].diem); }

void ht_sv(sinhvien *sv, int n) {

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

if(sv[i].namsinh == 2000)

printf("%s %s %d %5.3f\n",sv[i].masv,sv[i].tensv,sv[i].namsinh,sv[i].diem); }

void sapxep(sinhvien *sv, int n) { sinhvien tg; for(int i=0;i<n-1;i++) for(int j=i+1;j<n;j++) if(sv[i].diem<sv[j].diem) { tg=sv[i]; sv[i]=sv[j]; sv[j]=tg; } } int main(){

int n;//khai bao bien la so nguyen n

sinhvien *a;// con tro a tro o nho chua kieu sinh vien printf("Nhap so sinh vien:");//hien thi ra man hinh

scanf("%d",&n);//doc gia tri la so nguyen tu ban phim cho bien n

a=(sinhvien*)malloc(n*sizeof(sinhvien));//cap phat bo nho dong cho n o nho de chua n sinh vien printf("Nhap thong tin cua tung sinh vien:\n");

nhap(a,n);//goi ham nhap

printf("Danh sach sinh vien la:\n"); hienthi(a,n);// goi ham hien thi

printf("\nSinh vien co nam sinh 2000:\n"); ht_sv(a,n);

sapxep(a,n);

printf("\n Sap xep theo diem giam dan:\n"); hienthi(a,n);

getch(); } Bai 8 (cach 2) #include <stdio.h> #include <conio.h> #include <malloc.h> #include <string.h> typedef struct{

char masv[40];// ma sinh vien toi da 40 ki tu char tensv[40];// ten sinh vien toi da 40 ki tu int namsinh;// nam sinh kieu so nguyen float diem; // diem kieu so thuc

}sinhvien;// dinh nghia cau truc kieu sinh vien void nhap(sinhvien *a, int n)

{

sinhvien *p;

for( p=a;p<a+n;p++)////lenh lap de duyet tu dau danh sach toi cuoi danh sach {

printf("Nhap masv:");// hien thi ra man hinh "nhap ma sv" fflush(stdin);//xoa bo nho dem cac ki tu dac biet

gets((p->masv));// doc tu ban phim xau ki tu cho ma sinh vien cua sinh vien thu i printf("Nhap tensv:");

fflush(stdin);gets(p->tensv); printf("Nhap namsinh:");

scanf("%d",&(p->namsinh));//doc gia tri la so nguyen tu ban phim cho nam sinh cua sv thu i printf("Nhap diem:");//doc gia tri la so nguyen tu ban phim cho diem cua sv thu i

scanf("%f",&(p->diem)); }

}

void hienthi(sinhvien *a, int n) {

sinhvien *p;

for(p=a;p<a+n;p++)// lenh lap de duyet tu dau toi cuoi danh sach

printf(" %s %s %d %5.1f\n",(p->masv),(p->tensv),(p->namsinh),(p->diem)); }

void ht_sv(sinhvien *a, int n) { sinhvien *p; for( p=a;p<a+n;p++) if((p->namsinh) == 2000) printf(" %s %s %d %5.1f\n",(p->masv),(p->tensv),(p->namsinh),(p->diem)); }

void sapxep(sinhvien *a, int n) { sinhvien *p1;

sinhvien *p2; sinhvien tg;

for( p1=a;p1<a+n-1;p1++) for( p2=p1+1;p2<a+n;p2++) if(p1->diem<p2->diem) { tg=*p1; *p1=*p2; *p2=tg; } } int main(){

int n;//khai bao bien la so nguyen n

sinhvien *a;// con tro a tro o nho chua kieu sinh vien printf("Nhap so sinh vien:");//hien thi ra man hinh

scanf("%d",&n);//doc gia tri la so nguyen tu ban phim cho bien n

a=(sinhvien*)malloc(n*sizeof(sinhvien));//cap phat bo nho dong cho n o nho de chua n sinh vien printf("Nhap thong tin cua tung sinh vien:\n");

nhap(a,n);//goi ham nhap

printf("Danh sach sinh vien la:\n"); hienthi(a,n);// goi ham hien thi

printf("\nSinh vien co nam sinh 2000:\n"); ht_sv(a,n);

sapxep(a,n);

printf("\n Sap xep theo diem giam dan:\n"); hienthi(a,n);

getch(); }

Bai so 7

Bai 9 (de cuong on thi)

Viết chương trình dưới dạng hàm thực hiện các chức năng sau:

Định nghĩa kiểu cấu trúc Sach bao gồm các thông tin: mã sách(kiểu xâu ký tự), tên sách(kiểu xâu ký tự), năm xuất bản(kiểu số nguyên), nhà xuất bản(kiểu xâu ký tự), giá bán(kiểu số)). 1. Nhập vào danh sách gồm n cuốn sách vào bộ nhớ động.

2. Hiển thị đầy đủ thông tin của n cuốn sách ra màn hình. Mỗi cuốn sách trên một dòng. 3. Liệt kê ra màn hình tất cả những cuốn sách của nhà xuất bản “KHKT”.

4. Nhập vào một năm, in ra màn hình tên tất cả những cuốn sách xuất bản năm vừa nhập.

5. Ghi vào file D:/sach.txt thông tin cuốn sách có giá bán lớn hơn 200. Viết chương trình chính gọi thực hiện các hàm trên.

#include <stdio.h> #include <malloc.h> #include <conio.h> #include <string.h> typedef struct{ char mas[30]; char tens[30]; int nam;

char nxb[30]; float gia; }sach;

void nhap(sach *a,int n) { sach *p;

for(p=a;p<a+n;p++)

{ printf("Nhap Ma Sach:");fflush(stdin);gets(p->mas); printf("Nhap Ten Sach:");fflush(stdin);gets(p->tens); printf("Nhap Nam Xuat Ban:");scanf("%d",&p->nam); printf("Nhap Nha Xuat Ban:");fflush(stdin);gets(p->nxb); printf("Nhap gia:");scanf("%f",&p->gia);

} }

void hienthi(sach *a,int n) { sach *p;

for(p=a;p<a+n;p++)

printf(" %s %s %d %s %2.1f\n",p->mas,p->tens,p->nam,p->nxb,p->gia); }

void lietke(sach *a,int n) { int dem=0;

sach *p;

printf("\nCuon sach cua nha xuat ban 'KHKT' la: \n"); for(p=a;p<a+n;p++) if(strcmp(p->nxb,"KHKT") == 0) { printf(" %s %s %d %s %2.1f\n",p->mas,p->tens,p->nam,p->nxb,p->gia); dem=1; } if(dem==0)

printf("Khong co cuon sach nao"); }

void tim(sach *a,int n,int timnam) { int count=0; sach *p; for(p=a;p<a+n;p++) if(timnam==p->nam) { printf(" %s %s %d %s %2.1f\n",p->mas,p->tens,p->nam,p->nxb,p->gia); count=1; } if(count==0)

printf("Khong co cuong sach co nam %d\n",timnam); }

int main(){ int n; sach *a;

printf("Nhap so cuon sach: ");scanf("%d",&n); a=(sach*)malloc(n*sizeof(sach));

printf("************* Nhap thong tin cho sach *************\n"); nhap(a,n);

printf("************* Danh sach cua cuon sach *************\n"); hienthi(a,n);

lietke(a,n); int timnam;

printf("\n\nNhap nam can tim:");scanf("%d",&timnam); tim(a,n,timnam);

free(a); getch(); }

BAI SO 8

Bai so 13 (ĐỀ CƯƠNG ÔN THI)

Định nghĩa cấu trúc sinh viên gồm các thông tin sau: mã sinh viên(kiểu xâu ký tự), họ tên sinh viên(kiểu xâu ký tự), năm sinh(kiểu số nguyên), lớp (kiểu số nguyên), điểm tổng kết(kiểu số thực). Xây dựng các hàm thực hiện các chức năng sau:

1. Nhập từ bàn phím thông tin cho n sinh viên vào bộ nhớ động.

2. Hiển thị danh sách gồm n sinh viên ra màn hình. Mỗi sinh viên trên một dòng. 3. Đếm số sinh viên có điểm tổng kết nhỏ hơn 5.

4. Tìm kiếm trong danh sách có sinh viên có mã số “sv01” không? Hiển thị thông báo ra màn hình.

5. Ghi vào file D:/dulieu.txt thông tin của những sinh viên có năm sinh 2002. Viết chương trình chính gọi thực hiện các hàm trên.

#include <stdio.h> #include <conio.h> #include <malloc.h> #include <string.h> struct sinhvien{ char masv[30]; char ten[30]; int nam; int lop; float diem; };

void nhap(sinhvien *sv, int n) { sinhvien *p;

for(p=sv;p<sv+n;p++){

printf("Nhap ma sv:"); fflush(stdin); gets(p->masv); printf("Nhap ho va ten:"); fflush(stdin); gets(p->ten);

printf("Nhap nam sinh:"); scanf("%d",&(p->nam)); printf("Nhap lop:"); scanf("%d",&(p->lop)); printf("Nhap diem:"); scanf("%f",&(p->diem)); }

}

sinhvien *p;

for(p=sv;p<sv+n;p++)

printf("%s %9s %7d %6d %4.1f\n",p->masv,p->ten,p->nam,p->lop,p->diem); }

int duoi5(sinhvien *sv, int n){ int dem=0; sinhvien *p; for(p=sv;p<sv+n;p++)

if((p->diem)<5) dem++;

return dem; }

void tim(sinhvien *sv,int n) {

int dem=0; sinhvien *p; for(p=sv;p<sv+n;p++) {

if(strcmp((p->masv),"sv01") == 0)

{printf("---Thong tin sv ma sv01 la:---\n");

printf("%s %9s %7d %6d %4.1f\n",p->masv,p->ten,p->nam,p->lop,p->diem); dem=1;

}

} if (dem==0) printf("---Khong co sinh vien ma sv01---"); }

int main(){

sinhvien *sv; int n;

printf("So sinh vien can nhap la:"); scanf("%d",&n); sv=new sinhvien[n];

//sv=(sinhvien*)malloc(n*sizeof(sinhvien); //sv=(sinhvien*)calloc(n,sizeof(sinhvien);

printf("---Nhap thong tin sinh vien---\n"); nhap(sv,n);

printf("---Thong tin sinh vien vua nhap la---\n"); hienthi(sv,n);

printf("So sinh vien co diem duoi 5 la:%d\n",duoi5(sv,n)); tim(sv,n); free(sv); getch(); } Cach 2: #include <stdio.h> #include <conio.h> #include <malloc.h> #include <string.h> struct sinhvien{ char masv[30]; char ten[30];

int nam; int lop; float diem; };

void nhap(sinhvien *sv, int n){ for(int i=0;i<n;i++){

printf("Sinh vien thu %d\n",i);

printf("Nhap ma sv:"); fflush(stdin); gets((sv+i)->masv); printf("Nhap ho va ten:"); fflush(stdin); gets((sv+i)->ten); printf("Nhap nam sinh:"); scanf("%d",&(sv+i)->nam); printf("Nhap lop:"); scanf("%d",&(sv+i)->lop);

printf("Nhap diem:"); scanf("%f",&(sv+i)->diem); }

}

void hienthi(sinhvien *sv, int n){ for(int i=0;i<n;i++)

printf("%s %9s %7d %6d %4.1f\n",(sv+i)->masv, (sv+i)->ten, (sv+i)->nam, (sv+i)->lop, (sv+i)->diem);

}

int duoi5(sinhvien *sv, int n){ int dem=0; for(int i=0;i<n;i++) if((sv+i)->diem<5) dem++; return dem; }

void tim(sinhvien *sv,int n) {

int dem=0;

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

if(strcmp(sv[i].masv,"sv01") == 0)

{printf("---Thong tin sv ma sv01 la:---\n");

printf("%s %9s %7d %6d %4.1f\n",(sv+i)->masv, (sv+i)->ten, (sv+i)->nam, (sv+i)->lop, (sv+i)->diem);

dem=1; }

} if (dem==0) printf("---Khong co sinh vien ma sv01---"); }

int main(){

sinhvien *sv; int n;

printf("So sinh vien can nhap la:"); scanf("%d",&n); sv=new sinhvien[n];

printf("---Nhap thong tin sinh vien---\n"); nhap(sv,n);

hienthi(sv,n);

printf("So sinh vien co diem duoi 5 la:%d\n",duoi5(sv,n)); tim(sv,n);

free(sv); getch(); }

BAI SO 9

BÀI 10 (De cuong on thi)

Định nghĩa cấu trúc sinh viên gồm các thông tin sau: mã sinh viên, họ tên sinh viên, điểm tổng kết.

Xây dựng các hàm thực hiện các chức năng sau:

1. Nhập từ bàn phím thông tin cho n sinh viên vào bộ nhớ động.

2. Hiển thị danh sách gồm n sinh viên ra màn hình. Mỗi sinh viên trên một dòng.

Một phần của tài liệu dapan bai tap ontap d15CNTT7 8 (Trang 29 - 37)

Tải bản đầy đủ (DOCX)

(39 trang)
w