例题1
有4名学生,每个学生的属性包括学号、姓名、出生日期和成绩,要求通过指针方法输出这4名学生的所有信息。
#include
#define st struct student
struct birth
{
int year,month,day;
};
st
{
int score,num;
char name[5];
struct birth date;
};
void main()
{
st xue[4],*p;int i;
for(i=0;inum,p->score,p->date.year,p->date.month,p->date.day);
}
例题2
编写一程序,实现电话号码查询。假设有一电话号码表,信息包括户主的姓名、户主地址、电话号码,输入一个电话号码,找出该号码对应的户主的姓名、地址。
#include
#define st struct tong
st
{
int num;char name[5];char add[10];
};
void main()
{
st ren[100];int i,num,n,x,flag=0,cur;
printf("请输出电话表的人数:");
scanf("%d",&n);
for(i=0;inum,&q->add);
getchar();
q->next=NULL;
if(head==NULL)
head=q;
else
p->next=q;
p=q;
}
return(head);
}
void main()
{
st *xue,*p;int x;
xue=creat();
printf("请输入你要找的学号:");
scanf("%d",&x);
for(p=xue;p->xue!=x;p=p->next);
if(p!=NULL)
printf("这个人的姓名是%s,学号是%d,电话是%d,地址是%s\n",p->name,p->xue,p->num,p->add);
else
printf("没有这个人");
}
例题4
某班有4名学生,每个学生的属性包括学号、姓名、成绩,要求通过链表的方法找出成绩最高者和最低者的姓名、学号和成绩。(要求用链表实现)
#include
#define st struct student
#include
#include
st
{
int num,xue;
char name[5];
st *next;
};
st *creat()
{
st *head=NULL,*p,*q;int n,i;
printf("请输入班级人数:");
scanf("%d",&n);
for(i=1;iname,&q->xue,&q->num);
getchar();
q->next=NULL;
if(head==NULL)
head=q;
else
p->next=q;
p=q;
}
return(head);
}
void Max(st *head)
{
st *p=head;char name[5]={'\0'};
int num,score=0;
while(p!=NULL)
{
if(p->num>score)
{
score=p->num;
strcpy(name,p->name);
num=p->xue;
}
p=p->next;
}
printf("最高的姓名是%s,学号是%d,成绩是%d\n",name,num,score);
}
void Min(st *head)
{
st *p=head;char name[5]={'\0'};
int num,score=999;
while(p!=NULL)
{
if(p->numnum;
strcpy(name,p->name);
num=p->xue;
}
p=p->next;
}
printf("最低的姓名是%s,学号是%d,成绩是%d\n",name,num,score);
}
void main()
{
st *xue;
xue=creat();
Max(xue);
Min(xue);
}
Comments | NOTHING