求教啊...怎么浏览的是乱码啊...求解啊
#include"stdio.h"#include"malloc.h"
#include"stdlib.h"
#include"string.h"
#define LEN sizeof(slinktype)
typedef struct student
{
int num;
char name[8];
char sex[4];
float math;
float wuli;
float pingshi;
float sum;
struct student *next;
}stud;
stud *create_list();
int insert_list(stud *head,stud *std,int n);
int del_list(stud *head,stud *std);
stud *find_list(stud *head,stud *std);
void brow_list(stud *head);
void main()
{
stud *head;
stud newstd;
int choice;
head=NULL;
printf("学生信息系统\n");
printf("1.建立列表\n");
printf("2.插入新生\n");
printf("3.查找学生\n");
printf("4.删除学生\n");
printf("5.数据浏览\n");
printf("0.退出程序\n");
do
{
printf("请选择操作(输入0-5):");
scanf("%d",&choice);
if(choice>5||choice<0)
{
printf("输入错误!\07\n");
continue;
}
switch(choice)
{
case 1:
if(head==NULL)
head=create_list();
break;
case 2:
if(head==NULL)
{
printf("链表未建立!\n");
break;
}
while(1)
{
printf("学号(输入0结束):");
scanf("%d",&newstd.num);
if(newstd.num==0)
break;
printf("姓名:");
scanf("%s",newstd.name);
insert_list(head,&newstd,-1);
printf("姓别:");
scanf("%s",newstd.sex);
insert_list(head,&newstd,-1);
printf("数学:");
scanf("%f",&newstd.math);
insert_list(head,&newstd,-1);
printf("物理:");
scanf("%f",&newstd.wuli);
insert_list(head,&newstd,-1);
printf("平时成绩:");
scanf("%f",&newstd.pingshi);
insert_list(head,&newstd,-1);
}
break;
case 3:
printf("输入姓名:");
scanf("%s",newstd.name);
find_list(head,&newstd);
break;
case 4:
printf("输入姓名:");
scanf("%s",newstd.name);
del_list(head,&newstd);
case 5:
brow_list(head);
break;
default:
return;
}
}while(1);
}
stud *create_list()
{
stud *head;
head=malloc(sizeof(stud));
if(head!=NULL)
printf("链表已建立");
else
printf("没有足够的空间\n");
head->next=NULL;
head->num=0;
return head;
}
int insert_list(stud *head,stud *std,int n)
{
stud *p,*q,*s;
s=malloc(sizeof(stud));
if(s==NULL)
{
printf("没有足够的空间\n");
return 0;
}
q=head;
p=head->next;
while(p!=NULL&&n!=q->num)
{
q=p;
p=p->next;
}
q->next=s;
s->next=p;
strcpy(s->name,std->name);
s->num=std->num;
return 1;
}
stud *find_list(stud *head,stud *std)
{
stud *p;
p=head;
while(p!=NULL&&strcmp(p->name,std->name))
p=p->next;
if(p!=NULL)
{
printf("学号:%d姓名:%s性别:%s\n",p->num,p->name,p->sex);
}
else
printf("查无此人\n");n
return p;
}
int del_list(stud *head,stud *std)
{
stud *p,*q;
q=head;
p=head->next;
while(p!=NULL&&strcmp(p->name,std->name))
{
q=p;
p=p->next;
}
if(p!=NULL)
{
q->next=p->next;
free(p);
printf("删除完成\n");
return 1;
}
else
{
printf("查无此人!\n");
return 0;
}
}
void brow_list(stud *head)
{
stud *p;
p=head->next;
while(p!=NULL)
{
printf("学号:%d 姓名:%s 性别:%s 数学:%f 物理:%f 平时成绩:%f\n",p->num,p->name,p->sex,p->math,p->wuli,p->pingshi);
p=p->next;
}
}