一.实验目的:
1.掌握指针与内存地址的关系
2.掌握通过指针动态申请和释放内存的编程方法
3.学习和掌握单向链表的基本操作
二、实验内容和步骤 |
1.分析并修改下面程序错误,使之能够正常运行。
错误代码一:
输入若干学生的信息(学号、姓名、成绩),当输入学号为 0 时结束,用单向链表组织这些学生信息后,再按序输出。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
structstud_node
{
intnum;
char name[20];
int score;
structstud_node *next;
};
int main()
{
structstud_node *head,*tail,*p;
intnum,score;
char name[20];
int size = sizeof(structstud_node);
head=tail=NULL;
printf(“input num,name and score:\n”);
scanf(“%d”,&num);
while(num != 0)
{
p=malloc(size);
scanf(“%s%d”,name,&score);
p->num=num;
strcpy(p->name,name);
p->score=score;
p->next=NULL;
tail->next=p;
tail=p;
scanf(“%d”,&num);
}
for(p=head;p->next != NULL;p=p->next)
printf(“%d %s %d\n”,p->num,p->name,p->score);
return 0;
}
正确代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct stud_node
{
int number;
char name[20];
int score;
struct stud_node *next;
};
int main()
{
struct stud_node*head,*tail,*p;
int num,scor,cnt=0;
char name[20];
int size = sizeof(structstud_node);
head=(struct stud_node*)malloc(size);
printf("input num:\n");
scanf("%d",&num);</