
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

