4.//题目:学生数据
//咕咕想要录入学生的数据去保存,但是咕咕不会用Excel,因此需要写一个代码去实践!
// 输入学生数据,遇到0停止
//答案:输出学生数据
//主要内容:本题的需求不难,主要是理解动态结构链表的使用
代码实现:
#include
#include
#define LEN sizeof(struct Student)
typedef struct Student
{
long num;
float score;
struct Student *next;
}student;
int n;
student *creat()
{ student *head,*p1,*p2; n=0;
p1=p2=( student*) malloc(LEN);
scanf("%ld,%f",&p1->num,&p1->score);//如果我们在C语言中定义了一个结构体
//然后申明一个指针指向这个结构体,那么我们要用指针取出结构体中的数据,就要用到“->”.
head=NULL;
while(p1->num!=0)
{
n=n+1;
if(n==1) head=p1;
else p2->next=p1;//取出p2所指向的结构体中包含的数据项next赋值给p1
p2=p1; //指针变量p中存放的某个变量的地址赋值给q,赋值的内容是指针,也是地址
//*p=*q将p指向的变量赋值给q指向的变量
p1=(student*)malloc(LEN);
scanf("%ld,%f",&p1->num,&p1->score);
}
p2->next=NULL;
return(head);
}
void print(student *p)
{
printf("\nThese %d records are:\n",n);
if(p!=NULL)
do
{ printf("%ld %5.1f\n",p->num,p->score);
p=p->next;
}while(p!=NULL);
}
int main()
{ student *head;
head=creat();
print(head);
return 0;
}
今天这道题属实有点长,但是对于理解指针,动态链表等的相关知识很有用。
不过想说的的是,不理解的同学也不要慌,这部分在竞赛内容中是很少用到的,只是作为学习部分给大家了解下。
因为有很多同学在后台说让我讲解下指针,不懂指针,其实小哥个人觉得指针的作用不是很大,几乎不怎么用,不过还是给大家看看吧!
今天就到这里吧,好好理解一下!拜拜!
领取专属 10元无门槛券
私享最新 技术干货