学生信息包括姓名,年龄。成绩,输入12个学生信息放在一个一维数组中,编写程序按成

如题所述

#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
#include<string>
#define maxlen 100
#define NULL 0
typedef struct node
{
int num;
char name[maxlen];
float score[4];
struct node *next;
}list;
////////////////////创建学生成绩表///////////////////
list *creat()
{
list *head,*p,*r;
int i,n,j,k;
head=(list *)malloc(sizeof(list));
head->next=NULL;
r=head;
printf("请输入学生人数:\n");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
p=(list *)malloc(sizeof(list));
printf("请输入学生的学号:\n");
scanf("%d",&p->num);
printf("请输入学生的姓名:\n");
scanf("%s",p->name);
printf("输入学生的高数成绩\t英语成绩\t数据结构成绩\t:(百分制)\n");
for(j=0;j<3;j++)
scanf("%2f",&p->score[j]);
for(k=0;k<3;k++)
if(p->score[k]<0)
{
printf("输入学生的高数成绩\t英语成绩\t数据结构成绩\t:(百分制)\n");
for(j=0;j<3;j++)
scanf("%2f",&p->score[j]);
}
p->score[3]=(p->score[0]+p->score[1]+p->score[2])/3;
p->next=NULL;
r->next=p;
r=r->next;
}

return(head);
}
////////////////////////输出成绩/////////////////////
void output(list *h)
{
list *p;
p=h->next;
printf("学号\t姓名\t高数成绩\t英语成绩\t数据结构成绩\t平均成绩\t\n");
while(p!=NULL)
{
printf("%2d\t%2s\t%2f\t%2f\t%2f\t%2f\t\n",p->num,p->name,p->score[0],p->score[1],p->score[2],p->score[3]);
p=p->next;
}
}
///////////////////////插入成绩///////////////////////////////////
list *insert(list *h)
{
list *p,*q,*r,*head;
int j,k;
head=h;
r=h;
p=h->next;
q=(list *)malloc(sizeof(list));
printf("输入待插入学生的学号:\n");
scanf("%d",&q->num);
printf("输入姓名:\n");
scanf("%s",q->name);
printf("输入高数成绩\t英语成绩\t数据结构成绩\t:(百分制)\n");
for(j=0;j<3;j++)
scanf("%2f",&q->score[j]);
for(k=0;k<3;k++)
if(q->score[k]<0)
{
printf("输入学生的高数成绩\t英语成绩\t数据结构成绩\t:(百分制)\n");
for(j=0;j<3;j++)
scanf("%2f",&q->score[j]);
}
q->score[3]=(q->score[0]+q->score[1]+q->score[2])/3;
q->next=NULL;
while(p!=NULL)
{
r=p;
p=p->next;
}
r->next=q;
r=r->next;
return(head);
}
///////////////////////查询成绩//////////////////////
void find(list *h)
{
int k;
list *p;
p=h->next;
printf("输入要查找学生的学号:\n");
scanf("%d",&k);
while(p&&p->num!=k)
p=p->next;
if(p)
{
printf("学号\t姓名\t高数成绩\t英语成绩\t数据结构成绩\t平均成绩\t\n");
printf("%d\t%s\t%f\t%f\t%f\t%f\t\n",p->num,p->name,p->score[0],p->score[1],p->score[2],p->score[3]);
}
else
printf("没找到!\n");
}
////////////////////////删除成绩/////////////////////////////
list *del(list *h)
{
int k;
list *p,*q;
q=h;
p=h->next;
printf("请输入待删除学生的学号:\n");
scanf("%d",&k);
while(p&&p->num!=k)
{
q=p;
p=p->next;
}
if(p)
{
q->next=p->next;
free(p);
}
else
printf("没有这个学生的成绩,无法删除!\n");
return(h);
}
//////////////////////按学号排序(冒泡法)////////////////////////////

list *num_sort(list *s)
{int y;
printf("请输入学生人数:\n");
scanf("%d",&y);

list *temp,*x,*first,*k;
k=s;
int i=0;
x=first=s;
for(i=0;i<y;i++)
{
temp=first;
s=x=temp->next;
while(s->next!=NULL)
{
if(x->num>s->next->num)
{
s=s->next;
temp->next=s;
x->next=s->next;
s->next=x;
s=x;
temp=temp->next;
}
else
{
temp=temp->next;
s=x=temp->next;
}
}
}
s=k;
return(s);

}

//////////////////////按高数成绩排序/////////////////////////////
list *Mathscore_sort(list *s)
{
list *t=s->next,*r,*h,*q;
q=s;
r=t->next;
t->next=NULL;
t=r;
while(t!=NULL)
{
r=t->next;
h=s;
while(h->next!=NULL&&h->next->score[0]>t->score[0])
{
h=h->next;

}
t->next=h->next;
h->next=t;
t=r;
}
s=q;
return(s);
}

//////////////////////按英语成绩排序(直接插入法排序)////////////////

list *Englishscore_sort(list *s)
{
list *t=s->next,*r,*h,*q;
q=s;
r=t->next;
t->next=NULL;
t=r;
while(t!=NULL)
{
r=t->next;
h=s;
while(h->next!=NULL&&h->next->score[1]>t->score[1])
{
h=h->next;

}
t->next=h->next;
h->next=t;
t=r;
}
s=q;
return(s);
}
//////////////////////按数据结构成绩排序(冒泡法)////////////////////
list *Datastrscore_sort(list *s)
{int y;
printf("请输入学生人数:\n");
scanf("%d",&y);

list *temp,*x,*first,*k;
k=s;
int i=0;
x=first=s;
for(i=0;i<y;i++)
{
temp=first;
s=x=temp->next;
while(s->next!=NULL)
{
if(x->score[2]<s->next->score[2])
{
s=s->next;
temp->next=s;
x->next=s->next;
s->next=x;
s=x;
temp=temp->next;
}
else
{
temp=temp->next;
s=x=temp->next;
}
}
}
s=k;
return(s);
}
//////////////////////按平均成绩排序///////////////////////
list *Avescore_sort(list *s)
{int y;
printf("请输入学生人数:\n");
scanf("%d",&y);

list *temp,*x,*first,*k;
k=s;
int i=0;
x=first=s;
for(i=0;i<y;i++)
{
temp=first;
s=x=temp->next;
while(s->next!=NULL)
{
if(x->score[3]<s->next->score[3])
{
s=s->next;
temp->next=s;
x->next=s->next;
s->next=x;
s=x;
temp=temp->next;
}
else
{
temp=temp->next;
s=x=temp->next;
}
}
}
s=k;
return(s);
}

//////////////////////按姓名查找/////////////////////////////////
void name_find(list *h)
{
char k[100];
list *p;
p=h->next;
printf("输入要查找学生姓名:\n");
scanf("%s",gets(k));
while(p&&strcmp(p->name,k)!=0)
p=p->next;
if(p)
{
printf("学号\t姓名\t高数成绩\t英语成绩\t数据结构成绩\t平均成绩\t\n");
printf("%d\t%s\t%f\t%f\t%f\t%f\t\n",p->num,p->name,p->score[0],p->score[1],p->score[2],p->score[3]);
}
else
printf("没找到!\n");
}
/////////////////////////按高数成绩查找//////////////////////////
void Math_find(list *h)
{
int k;
list *p;
p=h->next;
printf("输入要查找学生的高数成绩:\n");
scanf("%d",&k);
while(p&&p->score[0]!=k)
p=p->next;
if(p)
{
printf("学号\t姓名\t高数成绩\t英语成绩\t数据结构成绩\t平均成绩\t\n");
printf("%d\t%s\t%f\t%f\t%f\t%f\t\n",p->num,p->name,p->score[0],p->score[1],p->score[2],p->score[3]);
}
else
printf("没找到!\n");
}
/////////////////////////按英语成绩成绩查找///////////////////
void English_find(list *h)
{
int k;
list *p;
p=h->next;
printf("输入要查找学生的英语成绩:\n");
scanf("%d",&k);
while(p&&p->score[1]!=k)
p=p->next;
if(p)
{
printf("学号\t姓名\t高数成绩\t英语成绩\t数据结构成绩\t平均成绩\t\n");
printf("%d\t%s\t%f\t%f\t%f\t%f\t\n",p->num,p->name,p->score[0],p->score[1],p->score[2],p->score[3]);
}
else
printf("没找到!\n");
}
///////////////////////////// 按数据结构成绩查找////////////////////////////
void Datastr_find(list *h)
{
int k;
list *p;
p=h->next;
printf("输入要查找学生的数据结构成绩:\n");
scanf("%d",&k);
while(p&&p->score[2]!=k)
p=p->next;
if(p)
{
printf("学号\t姓名\t高数成绩\t英语成绩\t数据结构成绩\t平均成绩\t\n");
printf("%d\t%s\t%f\t%f\t%f\t%f\t\n",p->num,p->name,p->score[0],p->score[1],p->score[2],p->score[3]);
}
else
printf("没找到!\n");
}
/////////////////////////主程序//////////////////////////////////
void main()
{
list *p;
int k;
while(1)
{
printf("-------------------------\n");
printf(" 学生成绩管理系统 \n");
printf("-------------------------\n");
printf(" 1. 登记成绩 2. 查询成绩 \n");
printf(" 3. 插入成绩 4. 删除成绩\n");
printf(" 5. 按学号排序 6. 按高数成绩排序 \n");
printf(" 7. 按英语成绩排序 8. 按数据结构成绩排序 \n");
printf(" 9. 按平均成绩排序 10. 按学号查找 \n");
printf(" 11.按姓名查找 12. 按高数成绩查找 \n");
printf(" 13.按英语成绩查找 14. 按数据结构成绩查找 \n");
printf(" 15.输出所有学生成绩 0. 退出程序 \n");
printf("-------------------------\n");
printf("请输入你的选择:\n");
scanf("%d",&k);
switch(k)
{

case 1:p=creat();break;
case 2:find(p);break;
case 3:p=insert(p);break;
case 4:p=del(p);break;
case 5:{p=num_sort(p); output(p);}break;
case 6:{p=Mathscore_sort(p);output(p);}break;
case 7:{p=Englishscore_sort(p);output(p);}break;
case 8:{p=Datastrscore_sort(p);output(p);}break;
case 9:{p=Avescore_sort(p);output(p);}break;
case 10:find(p);break;
case 11:name_find(p);break;
case 12:Math_find(p);break;
case 13:English_find(p);break;
case 14:Datastr_find(p);break;
case 15:output(p);break;
case 0:exit(0);
default:printf("选择错误,重新开始!\n");
}
}
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-04-09
//学生信息包括姓名,年龄。成绩,输入12个学生信息放在一个一维数组中,编写程序按成
//存好了,但是没写输出,如果你需要我再给你写

#include <iostream>
#include <string>
using namespace std;

int main()
{
string name[10];
int age[10];
float score[10];//如果要整数的话,把float 改成int
for(int i=0;i<10;i++)
{
cout<<"请输入第["<<i+1<<"]个学生姓名,按回车结束:\n";
cin>>name[i];
cout<<"请输入第["<<i+1<<"]个学生年龄,按回车结束:\n";
cin>>age[i];
cout<<"请输入第["<<i+1<<"]个学生成绩,按回车结束:\n";
cin>>score[i];
}
getchar();
return 0;
}

学生信息包括姓名,年龄。成绩,输入12个学生信息放在一个一维数组中,编...
printf("请输入学生的姓名:\\n");scanf("%s",p->name);printf("输入学生的高数成绩\\t英语成绩\\t数据结构成绩\\t:(百分制)\\n");for(j=0;j<3;j++) scanf("%2f",&p->score[j]);for(k=0;k<3;k++) if(p->score[k]<0) { printf("输入学生的高数成绩\\t英语成绩\\t数据结构成绩\\t:(百分制)...

...其中每个学生信息包括学号、姓名、数学成绩、英语成绩
4)通过函数fun3()实现输出平均成绩最高的学生数据(包括学号、姓名、3门课程成绩、平均分数)。5)通过函数fun4()实现按某门课程(如计算机)成绩排序;6)通过函数fun5()实现根据学号查询某学生三门课程的成绩。7)编写打印输出函数fun6(),将信息从头到尾打印出来。要求:1)使用结构体数组,每个记录包括num、name、scor...

...1. 学生成绩的信息包括:学号、姓名、性别、年龄、系别、班级、_百度...
printf("请输入学生成绩:\\n"); scanf("%d",&p->score); p->next=Null; r->next=p; \/\/ 这个地方我总是不明白,是怎样让结点下移一个的呢? r=r->next; } return (head); }void find (list *h){ int k; \/\/ 要找的学生学号 list *p; p=h->next; printf("请输入要查找的学生学号:\\n")...

c语言做学生信息管理系统。学生信息包括:学号,姓名,年龄,性别,出生年...
学生信息包括:学号,姓名,年龄,性别,出生年月,地址,电话,E-mail等。 要求有类似wps文字处理系统的背景。老师要求只能用c语言!... 要求有类似wps文字处理系统的背景。老师要求只能用c语言! 展开  我来答 3个回答 #热议# 编剧史航被多人指控性骚扰,真实情况如何?asaisaio 2008-07-15 · TA获得超过2000...

编写一个学生类,包含属性有学号姓名年龄,将所有学生存入一个数组,自拟...
System.out.println("学号: " + students.get(i).getNumber() + "; 姓名: " + students.get(i).getName() + "; 年龄: " + students.get(i).getAge() + "\\n");} System.out.println("年龄大于20的学生:\\n");for (int i = 0; i < students.size(); i++){ if(...

定义一个学生类Student,包括如下属性:学生学号、姓名、年龄、专业、年级...
1、首先,定义一个数据结构student,包含学生的各信息。2、定义两个student类型的变量,保存所有学生的成绩信息和临时变量。3、定义一个自定义函数,输入学生的成绩信息。4、具体实现学生信息的输入,并计算总分。5、主函数中,先定义4个整型变量,保存学生的总数,以及控制循环的变量。6、接着,输入学生...

...其中每个学生的信息包括学号、姓名、成绩三个数据项。试用C语言编写...
实现的功能和具体要求如下:1.输入每个学生的信息,按输入数据的顺序,以成绩作为关键字,创建一棵二叉搜索树(成绩可以相同);2.以该二叉搜索树为基础,将所有学生信息按成绩从高到低的顺序输出到一个顺序表中;3.顺序输出顺序表内容。在线等 展开  我来答 1...

假设某班级所有学生的姓名保存在一个字符串数组中,设计一个函数完成以...
printf("这个班级姓刘的学生有%d人,他们是:\\n",num);for(i=0;i<num;i++)puts(tag[i]);} int lookup(char *scr[],int n,char *tag[]){ int i;char *liu="刘";int num=0;for(i=0; i<n; i++){if(scr[i][0]==liu[0]&&scr[i][1]==liu[1]){ tag[num]=scr[i]...

c编程:有一个一维数组,存放10个学生成绩,编写程序,求出平均分,最高分...
1、新建一个工程和.c文件。2、输入主函数和头文件。3、定义函数类型并赋初值。4、输入每一个成绩。5、用for语句遍历整个数组,并且通过if...else语句归类每一个分数段的人数。6、计算平均数。7、输出求出平均分,最高分和最低分。8、编译,运行,得到最后结果。

定义一个一维数组,输入十个学生的成绩(放在数组元素中),求平均分,并...
1、数组是相同数据类型的元素的集合。2、数组中的各元素的存储是有先后顺序的,它们在内存中按照这个先后顺序连续存放在一起。3、数组元素用整个数组的名字和它自己在数组中的顺序位置来表示。例如,a[0]表示名字为a的数组中的第一个元素,a[1]代表数组a的第二个元素,以此类推。以上内容参考:百度...

相似回答