该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
但是输入两个以上都不输出了怎么回事啊,也不报错
#include
#include
#include
//单链表的存储结构
typedef struct LNode/*结构体是一种构造数据类型,可以由若干个成员组成*/
{
char name[20]; //姓名
char ID[30]; //学号
char sex[20]; //性别
int c; //c语言成绩
int math; //数学成绩
int eng; //英语成绩
float average; //平均分
int sum; //总分
struct LNode *next;
}*LinkLinst;
//创建链表,输入学生信息,后插法
void inputStudent(LinkLinst &L,int n) //放入n个学生的信息
{
L=new LNode; //建立头结点
L->next=NULL;
LinkLinst p;
LinkLinst r;
r=L; //尾指针指向头指针
for(int i=1;i<=n;i++)
{ p=(LinkLinst)malloc(sizeof(LNode)); //动态分配空间,存储学生信息
printf("请输入学生的姓名:");scanf("%s",&p->name);getchar();
printf("请输入学生的学号:");scanf("%s",&p->ID);getchar();
printf("请输入学生的性别:");scanf("%s",&p->sex);getchar(); //字符的输入函数
printf("请输入学生的数学分数:");scanf("%d",&p->math);
printf("请输入学生的c语言分数:");scanf("%d",&p->c);
printf("请输入学生的英语分数:");scanf("%d",&p->eng);
p->sum=p->c+p->eng+p->math ;
printf("学生的总分是:%d\n",p->sum);
p->average=p->sum/3.0;
printf("学生的平均分是:%.2f\n",p->average);
p->next=NULL;
r->next=p;
r=p;
}
}
//学生信息数目/链表的长度
int length(LinkLinst &L)
{
int len=0;
LinkLinst p;
p=L->next; //指向首元结点
while(p)
{
len++;
p=p->next;
//指向最后一个结点
}
return len;
}
//在表尾插入m个学生信息
void add(LinkLinst &L,int len,int m)
{
LinkLinst p;
p=L; //指向头结点
for(int j=1;j<=len;j++)
{
p=p->next;
}
for(int i=1;i<=m;i++)
{ LinkLinst w=(LinkLinst)malloc(sizeof(LNode)); //动态分配空间,存储学生信息
printf("请输入学生的姓名:");scanf("%s",&w->name);getchar();
printf("请输入学生的学号:");scanf("%s",&w->ID);getchar();
printf("请输入学生的性别:");scanf("%s",&w->sex);getchar(); //字符的输入函数
printf("请输入学生的数学分数:");scanf("%d",&w->math);
printf("请输入学生的c语言分数:");scanf("%d",&w->c);
printf("请输入学生的英语分数:");scanf("%d",&w->eng);
w->sum=w->c+w->eng+w->math ;
printf("学生的总分是:%d\n",w->sum);
w->average=w->sum/3.0;
printf("学生的平均分是:%.2lf\n",w->average);
p->next=w;
w->next=NULL;
}
}
//查找不及格学生的成绩
void nopass(LinkLinst L)
{
LinkLinst p;
p=L->next;
while(1)
{
if(p&&p->c>=60&&p->eng>=60&&p->math>=60)
p=p->next;
if(p->c<60||p->eng<60||p->math<60)
{
printf("---------------------------------------------------------------------------------------------");
printf( "学生姓名 学号 性别 数学分数 c语言分数 英语分数 平均分 总分\n");
printf("---------------------------------------------------------------------------------------------");
printf("\n %s %s %s %d %d %d &f %d\n",p->name,p->ID,p->sex,p->math,p->c,p->eng,p->average,p->sum);
printf("-----------------------------------------------------------------------------------------------");
}
if(p=NULL) break;
}
}
//按姓名查找学生成绩
void searchname(LinkLinst L) //只输出没有学生信息
{
LinkLinst p;
char ming[10];
printf("请输入学生的姓名:");
scanf("%s",&ming);
getchar();
p=L->next;
int i=strcmp(p->name,ming); //比较字符串的大小
if(p&&i!=0)
p=p->next;
if(p==NULL)
printf("没有该学生的成绩\n");
if(i==0)
{
printf("----------------------------------------------------------------------------------------\n");
printf("学生姓名 学号 性别 数学分数 c语言分数 英语分数 平均分 总分\n");
printf("-----------------------------------------------------------------------------------------");
printf("\n %s %s %s %d %d %d %f %d \n",p->name,p->ID,p->sex,p->math,p->c,p->eng,p->average,p->sum);
printf("-------------------------------------------------------------------------------------------\n");
}
}
//按学号查找学生成绩
void searchID(LinkLinst L)
{
LinkLinst p;
char id[10];
printf("输入学生的学号:");
scanf("%s",&id);
getchar();
p=L->next;
int i=strcmp(p->ID,id);
if(p&&i!=0)
p=p->next;
if(p==NULL)
printf("没有该学生的成绩\n");
if(i==0)
{
printf("-----------------------------------------------------------------------------\n");
printf("学生姓名 学号 性别 数学分数 c语言分数 英语分数\n");
printf("------------------------------------------------------------------------------");
printf("\n %s %s %s %d %d %d \n",p->name,p->ID,p->sex,p->math,p->c,p->eng);
printf("-----------------------------------------------------------------------------\n");
}
}
void main()
{
int a; //项目序号
int n; //输入的学生信息数目
int m; //插入的学生信息数目
LinkLinst L;
while(1)
{
printf(" 欢迎进入学生成绩查询系统 \n");
printf("\n 请选择功能列表 \n");
printf("\n 1 录入学生信息