请专家帮我看看下面这个C++程序哪里有错,注释中有“?”的地方烦请解释一下,万分感谢!

来源:百度知道 编辑:UC知道 时间:2024/09/25 12:31:39
#include<iostream.h> //创建一个以学生学号、姓名、成绩为一个结构体的链表
#include<stdio.h>
typedef struct student{//创建结构体
char name[8];
char num[10];
int score;
struct student *next;
}NODE;
void main()
{

NODE *head;
head=creat();//建立链表
display(head);//显示链表节点的值
}
NODE *creat()//这个函数里的*p,*head,*s不懂他们之间的指向关系?这三个指针分别起什么作用?
{
NODE *head,*p,*s;//这里的head和main()中的head不一样吗?
int key=1,n;//n代表什么?
char k[3],grad[3];
head=(NODE *)malloc(sizeof(NODE));
p=head;
while(key)
{
printf("\nenter serial number:");
gets(k);
n=atoi(k);//这是什么意思?
if(n!=0)
{
s=(NODE *)malloc(sizeof(NODE));
printf("\neter name %d:",n);
gets(s->name);
printf("\nenter num %d",n);
gets(s->num);
printf("\nenter grad %d",n);//以上的三个n分别代表什么?
gets(grad);

我在将这个程序做了调整,在我回复的最后有代码,并在程序中将楼主在程序中所提问题做了回答,回答内容从**开始。
对这段程序的看法,本端程序没有C++的样子,根本可以算作是C语言程序,为了习惯我将其中的部分输出输出进行了修改,并且使用了new操作符。根据楼主提供的问题,看出来楼主是一个初学者,楼主对与指针的操作以及函数作用域等知识尚未掌握。建议楼主多读一些基础书籍,如:《c++ primer》等,不要急于看一些程序,部分问题可以去网络上搜索。
以下是程序修改后样子,仅供参考,有问题欢迎发消息给我。

#include "iostream" //创建一个以学生学号、姓名、成绩为一个结构体的链表
#include<stdio.h>

using namespace std;
typedef struct student{//创建结构体
char name[8];
char num[10];
int score;
struct student *next;
}NODE;
/*函数声明部分*/
NODE *creat();
void display(NODE*);

void main()
{

NODE *head;
head=creat();//建立链表
display(head);//显示链表节点的值
}

NODE *creat()//这个函数里的*p,*head,*s不懂他们之间的指向关系?这三个指针分别起什么作用?
{
NODE *head,*p,*s;//这里的head和main()中的head不一样吗? **当然不一样了,两个虽然名称相同,
//但是作用域是不一样的,是两个东西,
//就像两个孩子都叫“毛毛”,一个是A家的,一个是B家的当然不一样了。
int key=1,n;//n代表什么?*