一个简单的程序 有几处相同的错误 希望各位能帮帮我,感激不尽
程序代码:
// 学生成绩管理系统.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include "stdlib.h" #define N 4 typedef struct { char *name; //学生的姓名 int num; //学生的学号 int score; //学生的分数 struct *next; }student; int i; //新建函数 student * initial(student * stu) { student *p,*q; p=(student *)malloc(sizeof(student)); stu->next=p; for(i=1;i<=4;) { q=(student *)malloc(sizeof(student)); printf("第%d个学生的信息:姓名 学号 分数\n"); scanf("%c%d%d",&q->name,&q->num,&q->score); printf("\n"); p=q; p=p->next; p->next=NULL; free(q); } free(p); return stu; } //输出函数 void print(student * stu) { student *p; p=stu->next; for(i=1;(i<=4)&&(p->next);i++,p=p->next) { p=(student *)malloc(sizeof(student)); printf("第%d个学生的信息:姓名%5c 学号%5d 分数%5d\n",i,p->name,p->num,p->score); free(p); } } //查找函数 void find(student * stu) { int n; printf("按学号查找!\n"); student *p; p=stu->next; p=(student *)malloc(sizeof(student)); printf("查找的学号:"); scanf("%d",&n); for(;p->next;p=p->next) { if(p->num==n) { printf("查找成功\n"); printf("此学生的信息:姓名%5c 学号%5d 分数%5d\n",p->name,p->num,p->score); } } if(p==NULL) printf("无此学生!!!\n"); free(p); } //插入函数 student * insert(student * stu) { student *p,*q; p=stu->next; p=q=(student *)malloc(sizeof(student)); printf("输入插入学生的信息 姓名 学号 分数\n"); scanf("%c%d%d",&q->name,&q->num,&q->score); for(;p->next;p=p->next); p->next=q; p=p->next; q->next=NULL; return stu; } //删除函数 student *del(student * stu) { student *p,*q,*r; int n; p=stu->next; p=q=r=(student *)malloc(sizeof(student)); printf("输入删除学生的姓名\n"); scanf("%c%d%d",&q->name); for(;p->next;p=p->next) { if(p->num==n) { printf("此学生的信息:姓名%5c 学号%5d 分数%5d\n",p->name,p->num,p->score); r=q->next; q->next=r->next; } q=p; } if(p==NULL) printf("无此学生!!!\n"); return stu; } int main(int argc, char* argv[]) { student *stu; stu=(student*)malloc(N*sizeof(student)); stu->next=NULL; int choice,flag=1; do{ printf("1:输入 姓名 学号 分数 名次\n 2:输出\n 3:查找\n 4:插入\n 5:删除\n"); scanf("%d",&choice); switch(choice){ case 1:stu=initial(stu); break; case 2:print(stu); break; case 3:find(stu); break; case 4:stu=insert(stu); break; case 5:stu=del(stu); break; printf("是否继续 1:是 0:否\n"); scanf("%d",&flag); } }while(flag); printf("Hello World!\n"); return 0; }本人对内存的分配不是很清楚
链表也不是很好
写了个程序 出现得都是相同的错误
希望各位能够帮帮我
我会很感激的