14.1.c
N/x: Xác định ngày nào trước ngày nào. Dài mỗi chỗ kiểm tra này hợp lệ =="
code
#include<stdio.h>
typedef struct
{
int ngay;
int thang;
int nam;
} lich;
lich nhap(void)
{
lich a;
int dk;
do
{
dk=0;
printf("nhap ngay/thang/nam:");
scanf("%d%*c%d%*c%d",&a.ngay,&a.thang,&a.nam);
if(a.nam<0) dk=1;
if(a.thang>12||a.thang<0) dk=1;
switch(a.thang)
{
case 2:
if((a.nam%4==0&&a.nam%100!=0)||a.nam%400==0)
if(a.ngay<1||a.ngay>29) dk=1;
else if(a.ngay<1||a.ngay>28) dk=1;
break;
case 4:case 6:case 9:case 11:
if(a.ngay<1||a.ngay>30)dk=1;
break;
default:
if(a.ngay<1||a.ngay>31) dk=1;
break;
}
}while(dk);
return a;
}
int datecmp(lich a, lich b)
{
if(a.nam>b.nam)
return 1;
else
if(a.nam<b.nam)
return -1;
if(a.thang>b.thang)
return 1;
else
if(a.thang<b.thang)
return -1;
if(a.ngay>b.ngay)
return 1;
else
if(a.ngay<b.ngay)
return -1;
return 0;
}
void main()
{
lich a,b;
a=nhap();
b=nhap();
switch(datecmp(a,b))
{
case -1: printf("nhap a < ngay b"); break;
case 0: printf("ngay a trung ngay b");break;
case 1: printf("ngay a > ngay b");break;
}
}
14.2.c
N/x: Xác định nhiệt độ, lượng mưa
code
#include<stdio.h>
typedef struct weather_data
{
double rain,htem,ltem,atem;
}weather;
weather a[12];
weather nhap()
{
weather a;
do
{
scanf("%lf%*c%lf%*c%lf%*c%lf%*c",&a.rain,&a.htem,&a.ltem,&a.atem);
}while(a.htem>50||a.htem<-40||a.ltem>50||a.ltem<-40||a.atem>50||a.atem<-40);
return a;
}
void main()
{
double rainfall,max_tem=0,min_tem=0,arg;
int i;
rainfall=0;
printf("nhap 12 thang trong nam.\n");
printf("Nhap: luong mua-nhiet do cao nhat-nhiet do thap nhat-nhiet do trung binh:\n");
for(i=0;i<12;i++)
{
printf("nhap thang thu %d:",i+1);
a[i]=nhap();
rainfall+=a[i].rain;
max_tem = (max_tem<a[i].htem) ? a[i].htem : max_tem;
min_tem = (min_tem<a[i].ltem) ? min_tem : a[i].ltem;
}
arg=rainfall/12;
printf("tong luong mua: %lf\n luong mua trung binh: %lf\n",rainfall,arg);
printf("nhiet do cao nhat:%lf\n",max_tem);
printf("nhiet do thap nhat:%lf\n",min_tem);
}
14.3.c
N/x: Phân lớp theo điểm
code
#include<stdio.h>
typedef struct student_data
{
char id[6],name[31];
double grade;
char classer;
} student;
student a[10];
void main()
{
int i,n,y;
student tmp;
printf("So hoc sinh:");
scanf("%d%*c",&n);
printf("nhap dulieu hoc sinh:id-name-grade:\n");
for(i=0;i<n;i++)
{
printf("nhap phan tu thu %d:",i+1);
gets(a[i].id);
gets(a[i].name);
scanf("%lf%*c",&a[i].grade);
if(a[i].grade>=9) a[i].classer ='A';
if(9>a[i].grade&&a[i].grade>=8) a[i].classer ='B';
if(8>a[i].grade&&a[i].grade>=6.5) a[i].classer ='C';
if(a[i].grade<6.5)a[i].classer='D';
}
for(i=0;i<n;i++)
for(y=i+1;y<n;y++)
if(a[i].grade<a[y].grade)
{
tmp=a[i];
a[i]=a[y];
a[y]=tmp;
}
for(i=0;i<n;i++)
printf("%s-%s-%g-%c\n",a[i].id,a[i].name,a[i].grade,a[i].classer);
}