user-0 提问: 求修改！！！会输出奇怪的结果

回复:
user: user-1
content: 这个struct SIS* input(Student *head) 输入函数存在问题吧 好好读读程序，不是很难的

user: user-2
content: input中p1指针没有分配内存就直接用了

user: user-3
content: 已经修改 可以正常输入了 不过其他我就没改 提个建议： 变量要记得初始化 特别是局部变量，在最近使用的地方定义                   还有注意逻辑问题，你的代码本来就需要一个头节点作为Head  其他的你自己慢慢琢磨吧  看下 C primer Plus 吧

user: user-4
content: 代码功能归根结底不是别人帮自己看或讲解或注释出来的；而是被自己静下心来花足够长的时间和精力亲自动手单步或设断点或对执行到某步获得的中间结果显示或写到日志文件中一步一步分析出来的。 提醒：再牛×的老师也无法代替学生自己领悟和上厕所！ 单步调试和设断点调试（VS IDE中编译连接通过以后，按F10或F11键单步执行，按Shift+F11退出当前函数；在某行按F9设断点后按F5执行停在该断点处。）是程序员必须掌握的技能之一。

user: user-3
content: // qwe.cpp : 定义控制台应用程序的入口点。 //  #include "stdafx.h" #include<stdio.h> #include<stdlib.h> #include<string.h> #include<malloc.h> #include <time.h>   typedef struct SIS { //结构体的声明 	long StudentID;    //学号 	char Name[20];  //姓名 	char Sex[10];//性别 	int Age;//年龄 	char TOE[30] ;//Time of Enrollment入学日期 	float GPA;//（加权平均） 	char PhoneNo[100]; //电话号码 	char MailingAddress[100];//邮箱 	struct SIS *next;//指向下一个结构体的指针 } Student;  #define LEN sizeof(Student)   /////////////////////声明函数/////////////////////// void wellcome();//欢迎界面 void start();//开始界面 int menu();//菜单 struct SIS* input(Student *head);//输入/插入 struct SIS* del(Student *head);//删除 int search (Student *head);//查找 int ALL(Student *head);//显示全部 ///////////////////////////////////////////////////  void wellcome() { //欢迎界面 	time_t rawtime; 	struct tm * timeinfo; 	time ( &rawtime ); 	timeinfo = localtime ( &rawtime );   	printf("*************************************************\n"); 	printf("*\t\t学生信息管理系统\t\t*\n"); 	printf("*\t\t\t\t\t\t*\n"); 	printf("*\t\t\tLAB 8\t\t\t*\n"); 	printf("*\t\t\t\t\t\t*\n"); 	printf("*\t            莱茵出品\t\t        *\n"); 	printf("*\t\t\t\t\t\t*\n"); 	printf("*\t\t\t\t2.33.ver\t*\n"); 	printf("*\t\t\t\t\t\t*\n"); 	printf("*\t\t\t\t\t\t*\n"); 	printf("*************************************************\n"); 	printf("%s", asctime (timeinfo)); 	printf("Please Press Enter to continue……");  }   void start() { //开始界面 	int a=0; 	int b=0; 	int A=15080121; 	getchar(); 	system("cls"); 	printf("\n\n\n"); 	printf("\t\t学生信息管理系统\n\n\n"); 	printf("\t\t\t2.33.Ver\n\n\n"); 	getchar(); 	system("cls"); /*	printf("\t\t请输入用户名和密码，按下Enter继续\n\n\n"); 	printf("\tAdmin:"); 	scanf("%d",&a); 	printf("\n"); 	printf("\tPassword:"); 	scanf("%d",&b); 	if(a==A&&b==A) { 		getchar(); 		system("cls"); 	} else { 		printf("\t\t\t您没有足够的权限！！！！！\nPlease Press Enter to EXIT……"); 		getchar(); 		exit(0); 	}*/ }  int menu() {//菜单 	int shuru=0; 	printf("\n\n\n"); 	printf("\t\t （1）Create a student list\n"); 	printf("\t\t （2）Insert a student\n");//(to the sorted array or the sorted linked list ) 	printf("\t\t （3）Delete a student\n"); 	printf("\t\t （4）Search a student\n"); 	printf("\t\t （5）Display all students\n"); 	printf("\t\t （6）exit\n"); 	printf("\t\t请选择功能:"); 	scanf("%d",&shuru); 	return shuru;  }      struct SIS* input(Student *head) {//输入、插入 	Student *p1,*p2; 	Student *student=NULL; 	char a = 'y'; 	system("cls");  	if (head==NULL) 	{ 		head =  (Student*) malloc (LEN); 		memset(head, NULL,LEN); 		head->next = NULL; 	}  	printf("\t请按照要求输入\n"); 	while(a=='y'||a=='Y') { 		student = (Student *) malloc (LEN); 		memset(student , 0, LEN); 		student->next=NULL;//尾节点清零   		printf("\tStudentID："); 		scanf("%ld",&student->StudentID); 		printf("\t"); 		printf("Name："); 		scanf("%s",student->Name); 		printf("\t"); 		printf("Sex："); 		scanf("%s",&student->Sex); 		printf("\t"); 		printf("Age："); 		scanf("%d",&student->Age); 		printf("\t"); 		printf("TOE："); 		scanf("%s",&student->TOE); 		printf("\t"); 		printf("GPA："); 		scanf("%f",&student->GPA); 		printf("\t"); 		printf("PhoneNo："); 		scanf("%s",&student->PhoneNo); 		printf("\t"); 		printf("MailingAddress："); 		scanf("%s",&student->MailingAddress); 		printf("\n\n\n\n"); 		 		fflush(stdin); // 		if(head==NULL) head=student; // 		else {  	    	p1=head; 			p2=head; 			while(p1->next!=NULL&&p1->StudentID<student->StudentID) { 				p2=p1; 				p1=p1->next; 			} 			if(p1->StudentID>student->StudentID) 				if(p1==head) { 					student->next=head; 					head=student; 				} else { 					p2->next=student; 					student->next=p1; 				} 			else p1->next=student; /*		}*/ 	 		printf("是否继续添加,输入'y'或'Y'继续\n"); 		a=getchar(); 		fflush(stdin); 	} 	printf("\t\t\t录入成功!\n"); 	free(student); 	return(head); }    struct SIS* del(Student *head) {			//删除学生信息 	Student *p1,*p2; 	int tage = 0; 	long StudentID; 	system("cls"); 	p1=head; 	printf("\n\t\t请输入学号:"); 	scanf("%d",&StudentID); 	if(head==NULL) { 		printf("不存在学生信息!\n"); 		return 0; 	} 	while(p1!=NULL) { 		if(p1->StudentID==StudentID) { 			tage=1; 			if(p1==head)head=head->next; 			else p2->next=p1->next; 			free(p1); 			break; 		} 		p2=p1; 		p1=p1->next; 	} 	if(tage==0) printf("要删除的学生信息不存在!\n"); 	tage=0; 	printf("\t\t\t成功删除息\n"); 	fflush(stdin); //	system("cls");  	return (head); }  int search (Student *head) {	  //查询 	Student *p1; 	Student *student; 	int tage = 0; 	long StudentID;  	system("cls"); 	printf("请输入要查询的学生学号："); 	scanf("%d",&StudentID); 	p1=head; 	if(head==NULL) { 		printf("无学生信息!\n"); 		return 0; 	} else 		while(p1!=NULL) 			if(p1->StudentID==StudentID) { 				tage=1; 				printf("你查找的学生信息如下:\n"); 				printf("\t\tStudentID：%ld\n",p1->StudentID); 				printf("\t\tName：%s\n",p1->Name); 				printf("\t\tSex：%s\n",p1->Sex); 				printf("\t\tAge：%d\n",p1->Age); 				printf("\t\tTOE：%s\n",p1->TOE); 				printf("\t\tGPA：%2f\n",p1->GPA); 				printf("\t\tPhonrNo：%s\n",p1->PhoneNo); 				printf("\t\tMailingAddress：%s\n\n\n",&p1->MailingAddress); 				break; 			}   			else  p1=p1->next; 	if(tage==0)printf("\t\t\t无该学生信息!\n"); 	tage=0; 	fflush(stdin);  	return 0; }  int ALL(Student *head) { //显示全部信息 	Student *p1=NULL; 	p1 = head; 	system("cls"); 	if(head==NULL) { 		printf("无学生信息!\n"); 		return 0; 	} 	while(p1!=NULL) { 		printf("\t\tStudentID：%ld\n",p1->StudentID); 		printf("\t\tName：%s\n",p1->Name); 		printf("\t\tSex：%s\n",p1->Sex); 		printf("\t\tAge：%d\n",p1->Age); 		printf("\t\tTOE：%s\n",p1->TOE); 		printf("\t\tGPA：%2f\n",p1->GPA); 		printf("\t\tPhoneNo：%s\n",p1->PhoneNo); 		printf("\t\tMailingAddress：%s\n\n",p1->MailingAddress); 		p1=p1->next; 	} 	return 0; }    int _tmain(int argc, _TCHAR* argv[]) { 	int choose; 	int x=1; 	Student *head=NULL;     head =  (Student*) malloc (LEN); 	memset(head, NULL,LEN); 	head->next = NULL; 	wellcome(); 	start(); 	while(x) { 		choose=menu(); 		switch(choose) { 			case 1: { 				input(head); 				system("pause"); 				printf("Please Press Enter to Return……"); 				getchar(); 				system("cls"); 				break; 			}   			case 2: { 				input(head); 				system("pause"); 				printf("Please Press Enter to Return……"); 				getchar(); 				system("cls"); 				break; 			}   			case 3: { 				del(head); 				system("pause"); 				printf("Please Press Enter to Return……"); 				getchar(); 				system("cls"); 				break; 			}   			case 4: { 				search(head); 				system("pause"); 				printf("Please Press Enter to Return……"); 				getchar(); 				system("cls"); 				break; 			}   			case 5: { 				ALL(head); 				system("pause"); 				printf("Please Press Enter to Return……"); 				getchar(); 				system("cls"); 				break; 			}   			case 6: { 				exit(1); 			}   			default: { 				system("cls"); 				printf("\n\n\n\t\t\t无此功能\n\n\n\n"); 				break; 			} 		}  	}

user: user-5
content: 我勒个去，代码这么长你也不说一下什么情况输出了什么错误结果？