奇怪的问题
#include <stdio.h>#include <stdlib.h>
#include <malloc.h>
#define LEN sizeof(struct student)
struct student *create();
void print(struct student *head);
struct student *del(struct student *head, int num);
int n;
struct student
{
int num;
float score;
struct student *next;
};
int main()
{
int delnum;
struct student *stu;
stu = create();
print(stu);
printf("Please input delete num:");
scanf("%d", &delnum);
del(stu, delnum);
print(stu);
system("pause");
}
struct student *del(struct student *head, int num)
{
struct student *p, *pprev;
pprev = p = head;
if(head->num == num)
head = head->next;
p=p->next;
while(p)
{
if(p->num == num)
pprev->next = p->next;
pprev=p=p->next;
}
return head;
}
void print(struct student *head)
{
struct student *p;
p = head;
while(p)
{
printf("student: %d, score: %f \r\n", p->num, p->score);
p=p->next;
}
}
struct student *create()
{
struct student *head;
struct student *p1, *p2;
p1 = p2 = (struct student *)malloc(LEN);
printf("Please input num:");
scanf("%d", &p1->num);
printf("Please input score:");
scanf("%d", &p1->score);
head = NULL;
n=0;
while(p1->num)
{
n++;
if(1 == n)
{
head = p1;
}
else
{
p2->next = p1;
}
p2 = p1;
p1 = (struct student *)malloc(LEN);
printf("Please input num:");
scanf("%d", &p1->num);
printf("Please input score:");
scanf("%d", &p1->score);
}
p2->next = NULL;
return head;
}
小弟我正在看小甲鱼老师的C语言视频第56课,写得如上程序,使用VS2010能正常编译运行(后面的部分自己写的,所以跟老师的不一样)。
可是假若把delnum的声明语句位置换一下,即把main函数改成:
int main()
{
struct student *stu;
stu = create();
print(stu);
int delnum;
printf("Please input delete num:");
scanf("%d", &delnum);
del(stu, delnum);
print(stu);
system("pause");
}
就会出现如下错误:
Error 1 error C2143: syntax error : missing ';' before 'type' e:\c\list1\list1\list1.c 25 1 list1
在网上找不到相关的说明,有知道的请不吝赐教,谢谢!
如果你使用的是VC6等一些不支持C99标准的编译器的话,变量定义要放在函数体中的最前面,把“int delnum;”放在main()函数中最前面 在我的VS2010上编译没有问题,理论上应该也是不会有问题的,,顺便提醒一下,create函数里面成绩的读取应该用%f 我用VS2012
试了下
#include<stdio.h>
int main()
{
int a=1;
int b=2;
a=a+b;
int c;
c=a;
printf("%d",c);
return 0;
}
这个编译起来是有错的,
错误也是这样的
错误 2 error C2065: “c”: 未声明的标识符
错误 3 error C2065: “c”: 未声明的标识符
错误 1 error C2143: 语法错误 : 缺少“;”(在“类型”的前面)
而这个
#include<stdio.h>
int main()
{
int a=1;
int b=2;
int c;
a=a+b;
c=a;
printf("%d",c);
return 0;
}
这个是对的,
你的程序同样的.把int delnum;
放到了main函数的开头,就好了
c语言标准中,最新的c99支持你的那种写法,定义变量在使用之前定义就行,
但是在编译器没有支持c99的情况下,是老版本的标准,你的那种写在后面的写法就会报错
页:
[1]