Bài tập đề cương turbo C - HVKTMM Struct – union – DSLK thuận + nghịch. Bài 1. #include<stdio.h> #include<conio.h> #include<string.h> typedef struct slbh { int stt;int dg;int sl;char ten[30];long int tien; }; int i=-1,j,tt,n;char c;char *g[]={"STT","tenhang","Don gia","So luong","Thanh tien"}; struct slbh a[50],swap; void nhapdl(int stt,char ten[30],int *dg,int *sl,long int *tien) { printf("\n nhap mat hang thu %d : ",stt); printf("\n ten hang : ");fflush(stdin);gets(ten); printf("\n don gia : ");scanf("%d",dg); printf("\n so luong : ");scanf("%d",sl); *tien=(long int)(*dg)*(long int)(*sl); } void indl(int stt,char ten[30],int dg,int sl,long int tien) { printf("%3d %30s %10d %10d %10ld \n",stt,ten,dg,sl,tien); } void sapxep() { for(i=0;i<=n-1;i++) for(j=0;j<=n-i;j++) if (strcmp(a[j].ten,a[j+1].ten)>0) { tt=a[j].stt;a[j].stt=a[j+1].stt;a[j+1].stt=tt; swap=a[j];a[j]=a[j+1];a[j+1]=swap; } } void main() { do { clrscr(); i++; a[i].stt=i+1; nhapdl(a[i].stt,a[i].ten,&a[i].dg,&a[i].sl,&a[i].tien); printf("\n ban muon nhap tiep khong?"); fflush(stdin); Hoàng Đình Vinh AT5B 1 Bài tập đề cương turbo C - HVKTMM scanf("%c",&c); } while (c!='k'); n=i; clrscr(); printf("%d",n); printf("\n\t\t\t SO LIEU BAN HANG"); printf("\n %3s %30s %10s %10s %10s \n",g[0],g[1],g[2],g[3],g[4]); sapxep(); for(i=0;i<=n;i++) { indl(a[i].stt,a[i].ten,a[i].dg,a[i].sl,a[i].tien); } getch(); } Bài 2. #include <stdio.h> #include <conio.h> #include <string.h> #include <alloc.h> typedef struct { float TOAN,LY,HOA; }KA; typedef struct { float VAN,SU,DIA; }KC; typedef struct { char HOTEN[30],QUE[20],NGAYSINH[10],KHOITHI; float TONGDIEM; union { KA K1; KC K2; }KHOI; }THI_SINH; THI_SINH THISINH[100],TG; int n,i; #define TS THISINH[i] #define DA THISINH[i].KHOI.K1 #define DC THISINH[i].KHOI.K2 void NHAP() { Hoàng Đình Vinh AT5B 2 Bài tập đề cương turbo C - HVKTMM float M1,M2,M3; printf("NHAP VAO SO THI SINH : "); scanf("%d",&n); for (i=1;i<=n;i++) { printf("\nNHAP TEN THI SINH : "); fflush(stdin); gets(TS.HOTEN); printf("\nNHAP QUE QUAN THI SINH : "); gets(TS.QUE); printf("\nNHAP NGAY SINH CUA THI SINH : "); gets(TS.NGAYSINH); printf("\nNHAP KHOI THI CUA THI SINH : "); TS.KHOITHI=getch(); if (TS.KHOITHI=='A'||TS.KHOITHI=='a') { printf("\nNHAP DIEM TOAN : "); scanf("%f",&M1); printf("\nNHAP DIEM LY : "); scanf("%f",&M2); printf("\nNHAP DIEM HOA : "); scanf("%f",&M3); DA.TOAN=M1; DA.LY=M2; DA.HOA=M3; } else if (TS.KHOITHI=='C'||TS.KHOITHI=='c') { printf("\nNHAP DIEM VAN : "); scanf("%f",&M1); printf("\nNHAP DIEM SU : "); scanf("%f",&M2); printf("\nNHAP DIEM DIA : "); scanf("%f",&M3); DC.VAN=M1; DC.SU=M2; DC.DIA=M3; } TS.TONGDIEM=M1+M2+M3; } } void IN() { printf(" DANH SACH THI SINH KHOI A"); printf("\nSTT\tHO TEN\t\tQUE\t\tNGAY SINH\tDIEM TOAN DIEM LY DIEM HOA TONG\n"); Hoàng Đình Vinh AT5B 3 Bài tập đề cương turbo C - HVKTMM for (i=1;i<=n;i++) if (TS.KHOITHI=='A'||TS.KHOITHI=='a') printf("\n%d\t%s\t\t%s\t\t%s\t%f %f %f %f\n",i,TS.HOTEN,TS.QUE,TS.NGAYSINH,DA.TOAN,DA.LY,DA.HOA,TS.TONGD IEM); printf("\n\n DANH SACH THI SINH KHOI C"); printf("\nSTT\tHO TEN\t\tQUE\t\tNGAY SINH\tDIEM VAN DIEM SU DIEM DIA TONG\n"); for (i=1;i<=n;i++) if (TS.KHOITHI=='C'||TS.KHOITHI=='c') printf("\n%d\t%s\t\t%s\t\t%s\t%f %f %f %f\n",i,TS.HOTEN,TS.QUE,TS.NGAYSINH,DC.VAN,DC.SU,DC.DIA,TS.TONGDIE M); } void SAPXEP() { for(i=1;i<=n;i++) if (THISINH[i].TONGDIEM<THISINH[i+1].TONGDIEM) { TG=THISINH[i]; THISINH[i]=THISINH[i+1]; THISINH[i+1]=TG; } } main() { NHAP(); SAPXEP(); IN(); getch(); } Bài 3 #include<stdio.h> #include<conio.h> #include<alloc.h> #include<string.h> typedef struct hoc_vien { char ho_ten[20]; int tuoi; float d_tb; struct hoc_vien *tiep; }p_hv; p_hv *first,*p,*q,*r; Hoàng Đình Vinh AT5B 4 Bài tập đề cương turbo C - HVKTMM char ht[20],ch; float x;int tuoihv; void tao_ds(p_hv **first) {int i=0; printf("NHAP DANH SACH SINH VIEN\n"); *first=NULL; //khi danh sach chua co gi do { fflush(stdin); printf("Ho ten sv thu %d:",++i); gets(ht); if(*first==NULL) { *first=(p_hv*)malloc(sizeof(p_hv)); //cap phat vung nho do con tro first tro vao p=*first; // phan tu tiep theo do p tro toi } else { p->tiep=(p_hv*)malloc(sizeof(p_hv)); p=p->tiep; } strcpy(p->ho_ten,ht); p->tiep=NULL; printf("Tuoi :"); scanf("%d",&tuoihv); p->tuoi = tuoihv; printf("Diem trung binh:"); scanf("%f",&x); p->d_tb = x; printf("\n ban co nhap nua hay ko?y/n:\n"); ch=getch(); }while(ch=='y'||ch=='Y'); } void in_ds(p_hv *first) { int i=0; printf(" DANH SACH HOC VIEN\n"); printf(" ==================\n"); printf(" STT HO_TEN TUOI DIEM_TB\n"); p=first; while(p!=NULL) { printf(" %d %s %d %2.2f\n",++i,p->ho_ten,p->tuoi,p->d_tb); Hoàng Đình Vinh AT5B 5 Bài tập đề cương turbo C - HVKTMM p=p->tiep; } getch(); } void chen_sau(p_hv *first) { fflush(stdin); p=(p_hv*)malloc(sizeof(p_hv)); p->tiep=NULL; printf("\nHo ten sv can chen:"); gets(p->ho_ten); printf("Tuoi :"); scanf("%d",&tuoihv); p->tuoi = tuoihv; printf("Diem trung binh:"); scanf("%f",&x); p->d_tb=x; do{printf("Muon chen vao sau hoc vien nao:"); fflush(stdin); q=first; gets(ht); while((q!=NULL) && strcmpi(q->ho_ten,ht)) q=q->tiep; if(q==NULL) printf("\nKhong tim thay vi tri chen!"); printf("\nCo muon tim tiep hay ko?y/n:\n"); ch=getch();} while(ch=='y'||ch=='Y'); { if(q->tiep==NULL) //tim thay o cuoi ds q->tiep=p; else { p->tiep=q->tiep; q->tiep=p; } } printf("Da chen xong!"); getch(); } void chen_truoc(p_hv *first) { fflush(stdin); p=(p_hv*)malloc(sizeof(p_hv)); p->tiep=NULL; Hoàng Đình Vinh AT5B 6 Bài tập đề cương turbo C - HVKTMM printf("\nHo ten sv can chen:"); gets(p->ho_ten); printf("Tuoi :"); scanf("%d",&tuoihv); p->tuoi = tuoihv; printf("Diem trung binh:"); scanf("%f",&x); p->d_tb=x; do{printf("Muon chen vao truoc hoc vien nao:"); fflush(stdin); q=first; gets(ht); while((q!=NULL) && strcmpi(q->ho_ten,ht)) q=q->tiep; if(q==NULL) printf("\nKhong tim thay vi tri chen!"); printf("\nCo muon tim tiep hay ko?y/n:\n"); ch=getch(); } while(ch=='y'||ch=='Y'); {r=first; while(r->tiep!=q) r=r->tiep; q=(p_hv*)malloc(sizeof(p_hv)); q->tiep=r->tiep; r->tiep=q; } printf("\n da chen xong"); } void xoa_ds(p_hv **first) { do{ printf("Nhap ho ten nguoi can xoa:"); gets(ht); q=*first; while((q!=NULL)&&strcmpi(q->ho_ten,ht)) { r=q; q=q->tiep; } if(q==NULL) printf("\nKhong tim thay hoc vien can xoa!"); printf("\n ban co can xoa tiep ko?y/n:\n"); ch=getch(); } while(ch=='y'||ch=='Y'); { if(q==NULL) Hoàng Đình Vinh AT5B 7 Bài tập đề cương turbo C - HVKTMM r->tiep=NULL; else if(q==*first) *first=q->tiep; else r->tiep=q->tiep; free(q); printf("Da xoa xong!"); } getch(); } void main() { do{clrscr(); printf("\n 1.NHAP SV"); printf("\n 2.IN SV"); printf("\n 3.CHEN TRUOC"); printf("\n 4.CHEN SAU"); printf("\n 5.XOA SV"); printf("\n 6.KET THUC"); fflush(stdin); ch=getch(); //ko hien ky tu nhap ra man hinh switch(ch) { case '1': tao_ds(&first); break; case '2': in_ds(first); break; case '3': chen_truoc(first); break; case '4': chen_sau(first); break; case '5': xoa_ds(&first); break; } } while(ch!='6'); } Bài 4. #include<stdio.h> #include<conio.h> #include<alloc.h> #include<string.h> typedef struct hoc_vien { char ho_ten[20]; int tuoi; float d_tb; struct hoc_vien *tiep; }p_hv; p_hv *first,*p,*q,*r; Hoàng Đình Vinh AT5B 8 Bài tập đề cương turbo C - HVKTMM char ht[20],ch; float x;int tuoihv; void tao_ds(p_hv **first) {int i=0; printf("NHAP DANH SACH SINH VIEN\n"); *first=NULL; //khi danh sach chua co gi do { fflush(stdin); printf("Ho ten sv thu %d:",++i); gets(ht); first=NULL; p=(p_hv*)malloc(sizeof(p_hv)); p->tiep=*first; *first=p; strcpy(p->ho_ten,ht); p->tiep=NULL; printf("Tuoi :"); scanf("%d",&tuoihv); p->tuoi = tuoihv; printf("Diem trung binh:"); scanf("%f",&x); p->d_tb = x; printf("\n ban co nhap nua hay ko?y/n:\n"); ch=getch(); }while(ch=='y'||ch=='Y'); } void in_ds(p_hv *first) { int i=0; printf(" DANH SACH HOC VIEN\n"); printf(" ==================\n"); printf(" STT HO_TEN TUOI DIEM_TB\n"); p=first; while(p!=NULL) { printf(" %d %s %d %2.2f\n",++i,p->ho_ten,p->tuoi,p->d_tb); p=p->tiep; } getch(); } void chen_sau(p_hv *first) { Hoàng Đình Vinh AT5B 9 Bài tập đề cương turbo C - HVKTMM fflush(stdin); p=(p_hv*)malloc(sizeof(p_hv)); p->tiep=NULL; printf("\nHo ten sv can chen:"); gets(p->ho_ten); printf("Tuoi :"); scanf("%d",&tuoihv); p->tuoi = tuoihv; printf("Diem trung binh:"); scanf("%f",&x); p->d_tb=x; do{printf("Muon chen vao sau hoc vien nao:"); fflush(stdin); q=first; gets(ht); while((q!=NULL) && strcmpi(q->ho_ten,ht)) q=q->tiep; if(q==NULL) printf("\nKhong tim thay vi tri chen!"); printf("\nCo muon tim tiep hay ko?y/n:\n"); ch=getch();} while(ch=='y'||ch=='Y'); { if(q->tiep==NULL) //tim thay o cuoi ds q->tiep=p; else { p->tiep=q->tiep; q->tiep=p; } } printf("Da chen xong!"); getch(); } void chen_truoc(p_hv *first) { fflush(stdin); p=(p_hv*)malloc(sizeof(p_hv)); p->tiep=NULL; printf("\nHo ten sv can chen:"); gets(p->ho_ten); printf("Tuoi :"); scanf("%d",&tuoihv); p->tuoi = tuoihv; printf("Diem trung binh:"); scanf("%f",&x); Hoàng Đình Vinh AT5B 10 [...]... first=first->tiep; return q; } void chuyen_thap(int n,int c1 ,int c2 ,int c3 ) { if(n==1) push(1 ,c1 ,c3 ); else { chuyen_thap(n-1 ,c1 ,c3 ,c2 ); push(n ,c1 ,c3 ); chuyen_thap(n-1 ,c2 ,c1 ,c3 ); } } void hienkq() { do { p=pop(); printf("\nchuyen tang %d tu cot %d sang cot %d",p->t,p->cn,p->cd); } while (first!=NULL); getch(); } 14 Hoàng Đình Vinh AT5B Bài tập đề c ơng turbo C - HVKTMM void main() {int n ,c1 ,c2 ,c3 ; printf("nhap... doics(x,a);in(); getch(); } Bài 6 #include #include #include typedef struct node { int t,cn,cd; struct node *tiep; } p_node; p_node *p,*first,*last; void push(int n,int c1 ,int c2 ) 13 Hoàng Đình Vinh AT5B Bài tập đề c ơng turbo C - HVKTMM { p=(p_node*)malloc(sizeof(p_node)); p->t=n; p->cn =c1 ; p->cd =c2 ; if(first==NULL) { first=p; last=p; } else { last->tiep=p; last=p; } last->tiep=NULL;... in_ds(first); break; case '3': chen_truoc(first); break; case '4': chen_sau(first); break; case '5': xoa_ds(&first); break; } } while(ch!='6'); } Bài 5 #include #include #include struct cs { char c; struct cs *next; } ; struct cs *p,*top; void push(int t) { p=(cs *)malloc(sizeof(cs)); if (tc= t; else p- >c= t+87; p->next=top;top=p; } char *pop() { char t; if (top==NULL).. .Bài tập đề c ơng turbo C - HVKTMM p->d_tb=x; do{printf("Muon chen vao truoc hoc vien nao:"); fflush(stdin); q=first; gets(ht); while((q!=NULL) && strcmpi(q->ho_ten,ht)) q=q->tiep; if(q==NULL) printf("\nKhong tim thay vi tri chen!"); printf("\nCo muon tim tiep hay ko?y/n:\n"); ch=getch(); } while(ch=='y'||ch=='Y'); {r=first; while(r->tiep!=q) r=r->tiep; q=(p_hv*)malloc(sizeof(p_hv)); q->tiep=r->tiep;... Đình Vinh AT5B Bài tập đề c ơng turbo C - HVKTMM t=top- >c; top=top->next; return &t; } void doics(int x,int a) { do { push(x%a); x=x/a; } while (x!=0); } void in() { p=(cs *)malloc(sizeof(cs)); p=top; if (p==NULL) printf("\n danh sach rong "); else do { if (p- >cc) ; else printf(" %c" ,p- >c) ; p=p->next; } while (p!=NULL); } void main() { int x,a; printf("\n nhap x va a = ");scanf("%d%d",&x,&a);... r->tiep=q->tiep; free(q); 11 Hoàng Đình Vinh AT5B Bài tập đề c ơng turbo C - HVKTMM printf("Da xoa xong!"); } getch(); } void main() { do{clrscr(); printf("\n 1.NHAP SV"); printf("\n 2.IN SV"); printf("\n 3.CHEN TRUOC"); printf("\n 4.CHEN SAU"); printf("\n 5.XOA SV"); printf("\n 6.KET THUC"); fflush(stdin); ch=getch(); //ko hien ky tu nhap ra man hinh switch(ch) { case '1': tao_ds(&first); break; case... q->tiep=r->tiep; r->tiep=q; } printf("\n da chen xong"); } void xoa_ds(p_hv **first) { do{ printf("Nhap ho ten nguoi can xoa:"); gets(ht); q=*first; while((q!=NULL)&&strcmpi(q->ho_ten,ht)) { r=q; q=q->tiep; } if(q==NULL) printf("\nKhong tim thay hoc vien can xoa!"); printf("\n ban co can xoa tiep ko?y/n:\n"); ch=getch(); } while(ch=='y'||ch=='Y'); { if(q==NULL) r->tiep=NULL; else if(q==*first) *first=q->tiep;... %d",p->t,p->cn,p->cd); } while (first!=NULL); getch(); } 14 Hoàng Đình Vinh AT5B Bài tập đề c ơng turbo C - HVKTMM void main() {int n ,c1 ,c2 ,c3 ; printf("nhap so tang can chuyen:"); scanf("%d",&n); chuyen_thap(n,1,2,3); hienkq(); getch(); } To be continue… 15 Hoàng Đình Vinh AT5B . Bài tập đề c ơng turbo C - HVKTMM Struct – union – DSLK thuận + nghịch. Bài 1. #include<stdio.h> #include<conio.h> #include<string.h> typedef struct slbh { int. *p,*first,*last; void push(int n,int c1 ,int c2 ) Hoàng Đình Vinh AT5B 13 Bài tập đề c ơng turbo C - HVKTMM { p=(p_node*)malloc(sizeof(p_node)); p->t=n; p->cn =c1 ; p->cd =c2 ; if(first==NULL) { . push(1 ,c1 ,c3 ); else { chuyen_thap(n-1 ,c1 ,c3 ,c2 ); push(n ,c1 ,c3 ); chuyen_thap(n-1 ,c2 ,c1 ,c3 ); } } void hienkq() { do { p=pop(); printf(" chuyen tang %d tu cot %d sang cot %d",p->t,p->cn,p->cd);