求高手帮忙 error C2040:error C2143:error C2059

#include<stdio.h>#include<malloc.h>#defineLENsizeof(structstudent)#defineNULL0;struct... #include<stdio.h>
#include<malloc.h>

#define LEN sizeof(struct student)
#define NULL 0;
struct student
{
long num;
char name[20];
char sex[2];
int age;
struct student *next;
};
void main()
{
//输入链表
struct student *p1,*p2,*head;
int i;
p1=(struct student*)malloc(LEN);
printf("No: ");
scanf("%4d",&p1->num);
printf("name: ");
scanf("%s",&p1->name);
printf("sex: ");
scanf("%s",&p1->sex);
printf("age: ");
scanf("%d",&p1->age);
for(i=0;i<2;i++)
{
if(i==0)
{
head=p1;
}
p2=p1;
p1=(struct student*)malloc(LEN);
printf("No: ");
scanf("%5d",&p1->num);
printf("name: ");
scanf("%5s",&p1->name);
printf("Sex: ");
scanf("%5s",&p1->sex);
printf("Age: ");
scanf("%5d",&p1->age);
p2->next=p1;
}
p2->next=NULL;
//输出链表
printf("No: Name: Sex: Age: \n");
p2=head;
do
{

printf("%5d,%5s,%5s.%5d",p2->num,p2->name,p2->sex,p2->age);
p2=p2->next;

}
while (p2!=NULL);
{

}
//删除链表
int ages;
printf("Input Age:");
scanf("%4d\n",ages);
p2=head;

for(i=0;i<3;i++)
{
while(p2!=NULL)
{
if(p2->age==ages)
{
if(i==0)
{
head=p2->next;
}
else
{

p2->next=p2->next;
}
}
p2=p2->next;

}
}
printf("No: Name: Sex: Age: \n");
p2=head;
while (p2!=NULL)
{

printf("%5d,%5s,%5s.%5d",p2->num,p2->name,p2->sex,p2->age);
p2=p2->next;

}

}
D:\Program Files\shiyan\11。11\new1\11。11.cpp(60) : error C2143: syntax error : missing ')' before ';'
D:\Program Files\shiyan\11。11\new1\11。11.cpp(60) : error C2059: syntax error : ')'
D:\Program Files\shiyan\11。11\new1\11。11.cpp(72) : error C2143: syntax error : missing ')' before ';'
D:\Program Files\shiyan\11。11\new1\11。11.cpp(72) : error C2059: syntax error : ')'
D:\Program Files\shiyan\11。11\new1\11。11.cpp(92) : error C2143: syntax error : missing ')' before ';'
D:\Program Files\shiyan\11。11\new1\11。11.cpp(92) : error C2059: syntax error : ')'

若是去掉#define NULL 0
则提示
D:\Program Files\shiyan\11。11\new1\11。11.cpp(47) : error C2065: 'NULL' : undeclared identifier
D:\Program Files\shiyan\11。11\new1\11。11.cpp(47) : error C2440: '=' : cannot convert from 'int' to 'struct student *'
Conversion from integral type to pointer type requires reinterpret_cast, C-style cast or function-style cast
D:\Program Files\shiyan\11。11\new1\11。11.cpp(60) : error C2446: '!=' : no conversion from 'int' to 'struct student *'
Conversion from integral type to pointer type requires reinterpret_cast, C-style cast or function-style cast
D:\Program Files\shiyan\11。11\new1\11。11.cpp(60) : error C2040: '!=' : 'struct student *' differs in levels of indirection from 'int'
展开
 我来答
SBot
2010-12-20 · 原创技术代码分享~了解一下
SBot
采纳数:653 获赞数:2294

向TA提问 私信TA
展开全部
扫了一眼你的代码,你编C++的程序可以避免使用struct,推荐你用class。为什么C里没有class是因为当时还没有OOP的概念,所以用了struct来延伸。还有如果你实际学的是C,你的后缀最好用.c,不要把C和C++搞混了。ANSI C的确是C++程序,但是C++程序不一定是C程序。你的library用的stdio,不是iostream,我就默认你用的C。
#define NULL 0;
这个语法有错。#define后面不能有分号。还有你定义NULL 为0作甚?没有用。
加上#include <stdlib.h>, NULL我记得是在这里定义的。
注意你有的scanf漏了&。
你用的什么编译器?应该不是g++或者gcc吧。看你编译器的错误提示是有的类型转化有问题,比如你可能在某个地方使用了错误的类型转换。(int到int *之类的,小心)
还有在内存分配的时候,记得你的结构是linked lists(链表),那么里面的next需要再次内存分配。要小心,不然会有seg fault(当然我指的是linux下,你用的是WINDOWS,所以提示会不一样)
这个是很基础的程序,有很多地方可以优化。我就不多看了,毕竟自己DEBUG比较有乐趣,学到的也比较多。加油吧
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式